[TOC]
用户配置文件
-
用户信息文件/etc/passwd
查看配置文件的帮助文档:
man 5 passwd
There is one entry per line, and each line has the format:
account:password:UID:GID:GECOS:directory:shell
-
第一个字段:用户名称
-
第二个字段:密码标志
- x 表示该用户有密码
- 没有 x 表示没有密码,可以直接登录(只允许本机登录,远程登录则不行,因为ssh机制)。
-
第三个字段:UID(用户ID)
-
0: 超级用户
-
1-499: 系统用户(伪用户,不能登录;也不能删除,否则系统会崩溃)
-
500-65535: 普通用户
-
- 第四个字段:GID(用户初始组ID)
- 初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
- 附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有对个。
-
第五个字段:用户说明
-
第六个字段:家目录
- 普通用户:/home/用户名/
- 超级用户:/root/
- 第七个字段:登录之后的Shell
-
-
影子文件/etc/shadow
存放用户密码的文件。除了root用户其他用户对该文件没有任何权限。
- 第一个字段:用户名
- 第二个字段:加密密码
- 加密算法升级为SHA512散列加密算法
- 如果密码位是”!!”或者”*“代表没有密码,不能登录
- 第三个字段:密码最后一次修改日期
- 使用1970年1月1日作为标准时间,每过一天时间戳加1
- 第四个字段:两次密码的修改间隔时间
- 例如这个字段的值是10,意思是这次修改密码后10天之内不允许再修改密码。
- 第五个字段:密码有效期
- 密码过期后(无宽限时间)禁止用户登录
- 第六个字段:密码到期前的警告天数
- 第七个字段:密码到期之后的宽限时间
- 过了宽限时间才禁止用户登录
- -1表示密码永远不会失效(第五个字段就没有意义了)
- 第八个字段:账号失效时间
- 要用时间戳表示
- 第九个字段:保留
-
组信息文件/etc/group
- 第一个字段:组名
- 第二个字段:组密码标志
- 第三个字段:GID
- 第四个字段: 组中附加用户
-
组密码文件/etc/gshadow
- 第一个字段:组名
- 第二个字段:组密码
- 第三个字段:组管理员用户名
- 第四个字段:组中附加用户
用户管理相关文件
- 用户的家目录
- 普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700
- 超级用户:/root/,所有者和所属组都是root用户,权限是550
- 普通用户改成超级用户后家目录并不会改变,还是/home/用户名/
- 用户的邮箱
- /var/spool/mail/用户名
- 用户模板目录
- /etc/skel
- 在新添加一个用户后,该用户的家目录里会默认生成一些文件,这些文件就是从模板目录下拷贝过来的
- /etc/skel
用户管理命令
-
用户添加命令useradd
- 添加用户
useradd harris
-
用户默认值文件
/etc/default/useradd
/etc/login.defs
-
修改用户密码passwd
-
设置密码
passwd harris
普通用户给自己设置密码只需要使用
passwd
即可,不需要加用户名。 -
锁定用户
passwd -l harris
-
解锁用户
passwd -u harris
-
使用字符串作为用户的密码
echo "123" | passwd --stdin harris
这种方式使用在shell脚本中批量设置密码。
-
-
修改用户信息usermod
-
usermod [选项] 用户名
选项:
- -u UID:修改用户的UID号
- -c 用户说明:修改用户的说明信息
- -G 组名:修改用户的附加组
- -L :临时锁定用户
- -U :解锁用户锁定
-
-
修改用户密码状态chage
-
chage [选项] 用户名
选项:
-
-l :列出用户的详细密码状态
-
-d 日期:修改密码最后一次更改日期
chage -d 0 harris
这个命令其实是把密码修改日期归0了,这样用户一登录,系统会提示用户修改密码。
-
-m 天数:两次密码修改间隔
-
-M 天数:密码有效期
-
-W 天数:密码过期前警告天数
-
-I 天数:密码过期后宽限天数
-
-E 日期:账号失效时间
-
-
-
删除用户userdel
userdel -r harris
选项 -r 表示删除用户的同时删除用户的家目录
-
查看用户ID
id harris
-
用户切换命令su
-
su [选项] 用户名
选项:
-
-:选项只使用“-”代表连带用户的环境变量一起切换
查看环境变量的命令:
env
-
-c:仅执行一次命令,而不切换用户身份
su - root -c "useradd username"
不切换成root,但是执行useradd命令添加用户。
-
-
-
查看系统当前有哪些用户登录
w
用户组管理命令
-
添加用户组
groupadd [选项] 组名
-
修改用户组
-
groupmod [选项] 组名
把组名group1修改为testgrp:
groupmod -n testgrp group1
-
-
删除用户组
-
groupdel 组名
之前说过,每个用户都一定或者必须有一个初始组,所以含有初始用户的组不能被删除。
-
-
把用户添加入组或者从组中删除
-
gpasswd [选项] 组名
选项:
- -a 用户名:把用户加入组
- -d 用户名:把用户从组中删除
-