用户和组管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户和组管理相关的知识,希望对你有一定的参考价值。

用户和组管理


每个用户都有一个UID,管理员root为0,普通用户1-65535。

系统用户:1-499(centos6),1-999(centos7)

登录用户:500+(centos6),1000+(centos7)

 

/etc/passwd  用户及其属性信息

/etc/group  组及其属性信息

/etc/shadow  用户密码及其相关属性

/etc/gshadow  组密码及其相关属性

 

/etc/passwd 文件格式:7

username:password(x):UID:GID:GECOS(用户全名或注释):home directory:shell

/etc/shadow 文件格式:8

username:加密后的口令:最后一次更改密码的时间(从1970年1月1日起至今的天数):最短密码有效期0天:最长密码有效期99999表示永不过期:密码过期前几天通知用户更改口令:密码过期后几天锁定账户:账户的有效期

$6 sha512 ;$5 sha256 ;$1 md5 128bit


!叹号表示锁定用户,禁止登录,!!双叹号更为保险,而且在centos7上不允许解锁空口令用户,即usermod -U tom 无法执行(先设置tom口令为空tom:!!:)


/etc/group 文件格式:4

groupname:x:gid:members(以当前组为附加组的用户列表,分隔符为逗号,)

/etc/gshadow 文件格式:4

groupname:!:administrators:members


###所有系统级操作尽可能不要直接更改配置文件,而是通过命令来改


useradd

创建新用户

Usage: useradd [options] LOGIN
       useradd -D
       useradd -D [options]
-u 定义在/etc/login.defs
-o 配合-u选项,不检查uid的唯一性
-g 指定用户所属基本组,可为组名或gid
-c 用户的注释信息
-d 指定家目录,目录必须不存在,系统自动创建
-D 显示或改变默认useradd的配置
-s 指定用户默认shell,参考/etc/shells
-G 指定附加组,组必须存在
-N 不创建同名组作为主组,使用users组作为主组
-r 创建系统用户 id<500(centos6);id<1000(centos7)
默认值设置:
more /etc/login.defs
more /etc/default/useradd
useradd -D  显示添加用户的默认配置属性
useradd -D -s shell  更改默认shell
useradd -D -b base_dir  更改默认base目录
useradd -D -g group  更改默认组
cat /etc/login.defs  默认登录设置
authconfig --passalgo=sha256 --update  更改密码加密算法
家目录的文件模板,可修改或添加文件,默认文件.bashrc...
ll /etc/skel/*
rm -rf /home/userb  //误删除新用户家目录
cp -r /etc/skel /home/userb  //重新生成家目录的默认配置文件

useradd userb

创建一个新用户时系统会同时修改以下4个文件,为了避免手工修改配置文件引发的错误和不同步,推荐用useradd命令方式来添加用户

ll /etc/passwd /etc/shadow /etc/group /etc/gshadow  同时修改这4个文件

date  //查看时间检验文件是否为最新更改

ll /home  //useradd命令会同时创建同名家目录

ll /var/spool/mail  //同时创建同名的邮件文件


linux系统中关注的是id号,而不是名称,删除用户后,家目录不会同步删除,显示为id号,再创建同id号的账户则自动接管家目录


usermod

修改用户的基本信息

usermod [options] LOGIN
-c 备注说明信息
-d 指定新家目录,但不会立即创建;若要创建并移动原家目录数据到新目录,则同时使用-m选项
-e 指定账户过期日期,格式为YYYY-MM-DD
-f 设置非活动期限
-g 指定属组
-G 指定附加组,配合-a使用
-l 指定登录名
-L 锁定用户
-s 指定新shell
-u 指定uid
-U 解锁用户
usermod -L userabc  锁定用户
usermod -U userabc  解锁
usermod -aG g1 userabc  将userabc添加g1组中
usermod -l userabc usera  将用户userabc更名为usera
usermod -G "" userabc  删除所有附加组
usermod -G userabc userabc  同上
getent shadow userabc  查看指定用户的密码信息

实验:注意提前备份或快照

将root id改为非0后,即系统中没有id=0的root账户,系统将无法启动,恢复方式如下:

实验平台:centos6*,(7*启动菜单有些差别,方法一样)

重新启动在启动菜单按a后加上参数init /bin/bash;centos7上是在Linux16那一行添加参数

mount -o remount,rw /

vi /etc/passwd  更改root id为0

sync  保存

reboot


userdel

删除用户


groupadd

创建新组

groupadd [options] GROUP
-g 指定gid号,手工指定的gid号不受login.defs定义的范围限制;
   [gid_min,gid_max]--文件/etc/login.defs定义自动分配的gid
-r:创建系统组,id<500(centos6);id<1000(centos7)
groupadd -g 666666 group2  手工指定的gid号不受范围限制

groupmod

更改组名,组ID和组密码

groupmod [options] GROUP
-g 更改组ID
-n 更改组名
-p 更改组密码

groupdel

删除指定组

groupdel g1

删除组,必须为非主组,即主组下没有用户


chage

修改帐号和密码的有效期限

chage [options] LOGIN
-d 上一次更改密码的日期,格式为YYYY-MM-DD,如果设置为0,则用户在下次登录时会提示必须更改密码
-E 账户有效期expiredate
-I 密码失效时间Password inactive
-l 显示用户的密码策略
-m 最短密码有效期,更改密码的最短间隔天数mindays
-M 最长密码有效期,更改密码的最长间隔天数maxdays
-W 密码过期前几天发出警告warndays

chage -d 0 tom  下次登录强制重设密码
chage -m 0 -M 42 -W 14 -I 7 tom
chage -E 2016-09-10 tom

设置默认口令参数,影响后续新增用户的密码策略

/etc/login.defs

/etc/default/useradd


新建用户的默认配置(centos7.3)

#chage -l test
Last password change                                    : Jun 03, 2017
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

chsh

变更登录系统的默认shell

chsh [-s shell] [-l] [-u] [-v] [username]
chsh -l  //查看系统支持的shell
cat /etc/shells  //同上
echo $SHELL  //查看当前使用的shell
chsh -s /bin/zsh usera  //更改用户的shell
tail /etc/passwd  //查看更改后的用户shell


chfn

用来改变finger命令显示的信息

-f 姓名
-h 家中电话
-o 办公地址
-p 办公电话
chfn abc  //直接按照步骤更改用户信息
finger abc  //查看用户信息

id

显示用户ID及所属组的ID

id [OPTION]... [USER]
-g 显示用户属组ID
-G 显示用户附加组ID
-r 显示实际ID
-u 显示用户ID

finger

查找并显示用户信息

finger [-lmsp] [user ...] [[email protected] ...]
-l 默认显示的信息
-s 以一行显示
-p 不显示计划任务信息
chsh -s /bin/csh usera  更改usera的默认shell
getent passwd usera  查看指定用户的passwd信息,而非全部
more /etc/passwd | grep abc  功能同上

logname  //用来显示用户名称


groups

显示用户所属组

groups  显示当前用户的所属组

groups usera  查看指定用户的所属组


groupmems

更改和查看组成员

groupmems [options] [action]
options:
-g 更改为指定组(只有root)
actions:
-a 指定用户加入组
-d 从组中删除用户
-p 从组中清空所有成员
-l 显示组成员列表
groupmems -l -g g2  查看g2组中成员
groupmems -a usera -g g2  往g2组中添加usera用户
groupmems -d usera -g g2  删除usera用户
groupmems -p -g g2  清空组成员

将用户加入附加组的3种方法:

usermod -aG groupname username
gpasswd -a username groupname
groupmems -a username -g groupname

passwd

用于让用户可以更改自己的密码

passwd [OPTION...] <accountName>
-k 设置只有在密码过期失效后才能更改
-d 删除密码(root权限)
-l 锁定用户
-u 解锁用户
-f 强制执行
-S 列出用户的密码信息为一行显示
-e:强制用户下次登录修改密码
-n mindays:指定密码最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码
echo "password" | passwd --stdin username  编写脚本更改用户密码
#passwd -S abc
abc PS 2017-06-03 0 35 8 10 (Password set, SHA512 crypt.)
#passwd -S aaaa
aaaa LK 2017-06-03 0 99999 7 -1 (Password locked.)
echo centos | passwd --stdin userb  自动设置用户口令
echo centos | passwd --stdin test &> /dev/null  不输出提示信息
getent passwd > username  导出当前所有系统用户,然后删除其中的系统账号

gpasswd

更改组密码或管理组成员

gpasswd [option] GROUP
-a 添加用户到组
-d 从组中删除用户
-A 指定组管理员,使其具有管理权限,即可以增删组中用户
-M 指定组成员
-r 删除组密码
-R 限制用户登入组,只有组中的成员才可以用newgrp加入该组
newgrp usera  //临时切换主组,如果用户本不属于此组,则需要组密码
touch newabc  //创建文件newabc
ll newabc  //查看文件属组
-rw-r--r--. 1 root usera 0 May 27 20:52 newabc

newusers

批量创建用户

文件格式必须按照passwd文件的格式,即用户名1:x:UID:GID:用户说明:用户的家目录:所用SHELL

vi user  创建相同格式的passwd文件
test1:x:2000:2000::/home/test1:/bin/bash
test2:x:3000:3000::/home/test2:/bin/csh
:wq
newusers user  批量创建用户命令newusers
ll /home/test1  目录为空,即newusers命令不会自动创建目录文件

chpasswd

批量更新用户口令

vi password 创建用户密码文件,格式为username:password,并且不能有空行
test1:centos
test2:redhat
:wq
cat passwd | chpasswd
或者chpasswd < passwd  读取用户密码文件
openssl rand -base64 10  随机生成一个10bit长度的口令

pwconv

用来开启用户的投影密码

开启后会将密码记录在/etc/passwd文件中,关闭后会将密码记录在/etc/shadow文件中,原passwd文件中的密码段用x代替

pwunconv

用来关闭用户的投影密码


grpconv

用来开启群组的投影密码

开启后系统会将密码直接记录在/etc/group文件中,关闭后会将密码记录在/etc/gshadow文件中

grpunconv

用来关闭群组的投影密码


vi编辑命令直接更改并自动检查语法格式

vipw

vigr

grpck


用于验证组文件的完整性

grpck /etc/group /etc/gshadow

pwck

用来验证系统认证文件内容和格式的完整性

pwck /etc/passwd


nologin

拒绝用户登录系统

vi /etc/passwd  找到需要禁止登录的用户,更改其shell字段为/sbin/nologin即可

touch /etc/nologin  创建nologin文件,禁止除了root以外的所有用户登录,删除文件即可恢复


su

切换用户或以其他用户身份执行命令

su username:非登录方式切换,即不会读取目标用户的配置文件,不改变当前工作目录

su - uername:登录方式切换,会读取目标用户的配置文件,并切换至家目录,即完全切换

root 通过su切换至其他用户无需密码;非root用户切换时需要密码

su [-] username -c cmd  //切换用户身份执行指定命令

su -l username  //相当于su - username,即完全切换

su - [root]  切换到root时root可省略

注意通过su切换之后,最好及时exit退出,否则会引起一些命令执行错误。

su - root -c ‘cat /etc/shadow‘  切换到root身份执行cat /etc/shadow命令


本文出自 “rackie” 博客,请务必保留此出处http://rackie386.blog.51cto.com/11279229/1931933

以上是关于用户和组管理的主要内容,如果未能解决你的问题,请参考以下文章

win10系统本地用户和组在哪

win10本地用户和组在哪里

Linux用户和组管理

linux系统用户和组管理

用户和组权限管理笔记

管理用户和组账号;管理目录和文件的属性