用户和用户组管理
1. 用户配置文件
在Linux中主要是通过用户配置文件来查看和修改用户信息。
1.1 用户信息文件/etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
可以通过man
查看配置文件帮助信息:man passwd
字段说明:
-
用户名
-
密码标志:x代表用户有密码。真正的密码密文在
/etc/shadow
下。 -
UID(将普通用户的UID改为0,则该用户也会变成超级用户。)
- 0:超级用户
- 1-499:系统用户(伪用户)
- 500-65535:普通用户
-
GID:用户初始组ID.
- 初始组:用户已登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般是和这个用户的用户名相同的组名作为初始组。
- 附加组:用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。
-
用户说明(备注,没有实质性作用)
-
用户家目录:
- 超级用户:/root/
- 普通用户:/home/用户名/
-
登录之后的shell
1.2 影子文件/etc/shadow
/etc/shadow
中保存加密后的密码。其中有九个字段:
- 用户名;
- 加密密码(使用SHA512加密,如果
!!
是或*
则表明用户没有密码,不能登录); - 密码最后一次修改日期,时间戳表示,每过一天时间戳+1;
- 两次密码修改间隔(与第三个字段相比),满足时间间隔才能改;
- 密码有效期,定义密码的时效性;
- 密码修改到期前的警告天数;
- 密码过期之后的宽限天数(0:密码到期之后立马失效;-1:密码到期之后不会失效);
- 账号失效时间(用时间戳表示);
- 时间戳与日期换算
- 时间戳换算为日期:
date -d "1970-01-01 18000 days"
- 日期换算为时间戳:
echo $(($(date --date="2020/01/06" +%s)/86400+1))
- 时间戳换算为日期:
9.保留(暂时无用)
1.3 组信息文件
-
/etc/group
root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4:centos
- 组名;
- 组密码标志;(组密码文件在
/etc/gshadow
) - GID;
- 组中附加用户;
2. 用户管理相关文件
-
用户的家目录
- 普通用户:
/home/用户名/
:所有者和所属组都是此用户,权限为700.若将普通用户的UID改为0,则其变为超级用户,但家目录仍然在/home/用户名/
- 超级用户:
/root/
:所有者和所属组都是root,权限是550
- 普通用户:
-
用户的邮箱
/var/spool/mail/用户名/
3. 用户管理命令
-
useradd
:useradd [选项] 用户名
常用选项:
-u UID
:手工指定用户的UID号(一般不指定)-d 目录
:手工指定家目录-c 用户说明
:手工指定用户说明-g 组名
:手工指定用户初始组(一般不指定)-G 组名
:制定用户附加组
用户默认值文件:
/etc/default/useradd
GROUP=100 # 用户默认组 HOME=/home # 用户家目录 INACTIVE=-1 # 密码过期宽限天数(shadow文件第7字段) EXPIRE= # 密码失效时间 SHELL=/bin/bash # 默认shell SKEL=/etc/skel # 模板目录 CREATE_MAIL_SPOOL=yes # 是否建立邮箱
-
passwd
:passwd [选项] 用户名
常用选项:
-
-S
:查询用户密码的密码状态(仅root可用)mumu PS 2020-01-29 0 99999 7 -1 (Password set, SHA512 crypt.) # 用户名-密码设定时间-密码修改间隔时间-密码有效期-警告时间-密码不失效
-
-l
:暂时锁定用户(仅root可用) -
-u
:解锁用户(仅root可用) -
echo "123" | passwd --stdin mumu
:使用管道操作符,将字符串作为用户的密码
-
-
usermod
:修改用户信息。与
useradd
类似,不过usermod
是针对已有用户的。usermod [选项] 用户名
:常用选项:
-u UID
:修改用户UID;-c 用户说明
:手工指定用户说明;-L
:临时锁定用户;-U
:解锁用户锁定。
-
userdel
:userdel [-r] 用户名
-r
:删除时将用户家目录也删除。