GROUP=100 # 用户默认组
HOME=/home # 用户家目录
INACTIVE=-1 # 密码过期宽限天数(对应于影子文件/etc/shadow的第7字段)
EXPIRE= # 密码失效时间(对应于影子文件/etc/shadow的第8字段)
SHELL=/bin/bash #默认shell
SKEL=/etc/skel #模板目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱
/etc/login.defs 文件:
/etc/login.defs 文件内容相对较多,去掉注释后的主要内容如下:
PASS_MAX_DAYS 99999 # 密码有效期(对应于影子文件/etc/shadow的第5字段)
PASS_MIN_DAYS 0 # 密码修改间隔(对应于影子文件/etc/shadow的第4字段)
PASS_MIN_LEN 5 # 密码最小5位( PAM)
PASS_WARN_AGE 7 # 密码到期警告(对应于影子文件/etc/shadow的第6字段)
UID_MIN 1000 # 最小和最大UID范围
UID_MAX 60000
GID_MIN 1000 # 最小和最大GID范围
GID_MAX 60000
ENCRYPT_METHOD SHA512 # 加密模式
(2) 修改用户密码 passwd
只执行 useradd 命令添加用户,这样的用户是不能正常使用的,还需要给用户设置密码,这就需要用到 passwd 命令。
命令格式:passwd [选项] 用户名
选项:
-S 查询用户密码的密码状态。仅root用户可用。
-l 暂时锁定用户。仅root用户可用。
-u 解锁用户。仅root用户可用。
--stdin 可以通过管道符输出的数据作为用户的密码。
① 查看密码状态:
各字段如下:
用户名
密码设定时间(2016-01-07)
密码修改间隔时间(0)
密码有效期(99999)
密码修改到期前的警告时间(7)
密码过期后的宽限天数(-1:表示密码永远不会失效)
② 锁定用户和解锁用户:
锁定sky用户:passwd -l sky
查看 /etc/shadow 文件可以看出锁定后在 sky 用户真正的密码串之前加上了两个感叹号,导致原始密码失效,从而锁定了 sky 用户。当然手工修改 /etc/shadow 文件中该用户的密码串也可以锁定用户。
锁定 sky 用户后再登陆 sky 用户会发现登陆失败,显示密码验证错误:
解锁sky用户:passwd -u sky
解锁后发现 sky 用户的密码串的前两个感叹号消失了,此时 sky 用户又可以恢复登陆了。
③ 使用字符串作为用户的密码:
echo "<字符串>" | passwd --stdin <用户名>
(3) 修改用户信息 usermod
useradd 是添加新用户时同时进行设置,而 usermod 是修改已经存在的用户信息。
命令格式:usermod [选项] 用户名
选项:
-u UID: 修改用户的UID号
-c 用户说明: 修改用户的说明信息
-G 组名: 修改用户的附加组
-L: 临时锁定用户(Lock)
-U: 解锁用户锁定(Unlock)
例如:修改已存在的用户 sky 的说明为test user,修改 sky 的 UID 为1024,并把 sky 加入 root 组
先查看用户 sky 的信息:
用 usermod 命令进行修改:
通过查看 /etc/passwd 和 /etc/group 文件,可以看出用户信息修改成功。
用usermod 的 -L 和 -U 选项来锁定、解锁用户与 passwd 命令的作用是一样的:
可以看出用 usermod 命令和 passwd 命令相比,前者在密码串前加了一个感叹号,而后者在密码串钱加了两个感叹号,但作用是一样的。
(4) 修改用户密码状态 chage
命令格式:chage [选项] 用户名
选项:
-l: 列出用户的详细密码状态
-d 日期: 修改密码最后一次更改日期(对应于/etc/shadow的第3字段)
-m 天数: 两次密码修改间隔(对应于/etc/shadow的第4字段)
-M 天数: 密码有效期(对应于/etc/shadow的第5字段)
-W 天数: 密码过期前警告天数(对应于/etc/shadow的第6字段)
-I 天数: 密码过期后宽限天数(对应于/etc/shadow的第7字段)
-E 日期: 账号失效时间(对应于/etc/shadow的第8字段)
看一下 -l 选项:
所显示的信息即为 /etc/shadow 中相关信息。
上面用命令来修改信息的都可以在 /etc/shadow 文件中用 vi 进行修改,但有一个重要的命令需要说明一下:
chage -d 0 <用户名>
这个命令其实是把密码修改日期归0了,这样用户一登陆就要修改密码,修改密码后密码修改日期就不再是0了,下次便可以正常登陆了。
对用户 sky 执行此命令后,/etc/shadow 文件中用户 sky 的第三个字段变为0。此时登陆用户 sky 时便要求修改密码:
修改密码后,密码修改时期就不再是0了:
所以,下次再登陆用户 sky 输入修改后的密码就可以正常登陆了。
(5) 删除用户 userdel
命令格式:userdel [-r] 用户名
选项:
-r 删除用户的同时删除用户家目录
当然也可以进行手工删除用户:删除 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 4个配置文件中要删除用户的行,删除邮件 /var/spool/mail/<要删除的用户名>和家目录 /home/<要删除的用户名>。手工删除用户时要想确定用户是否已经被删除,可通过 useradd
<要删除的用户名> 命令来判断,若出现已存在该用户则表示手工删除未成功,若无提示则表示手工删除完成。
(6) 查看用户ID id
命令格式: id <用户名>
显示用户的用户ID,初始组ID,所属组的ID(包括初始组ID)
(7) 切换用户身份 su
命令格式:su [选项] 用户名
选项:
- : 选项只使用“-”代表连带用户的环境 变量一起切换
-c 命令: 仅执行一次命令,而不切换用户身份
su root # 只能获得root的执行权限,不能获得环境变量
su - root # 切换到root并获得root的环境变量及执行权限
上面两个命令可以省略 root,因为 su 命令默认切换到 root。
注意:有些命令即使你使用 su root 切换到 root 用户,仍无法执行,所以切换到
root 时,建议使用su - root。
su - root -c "useradd user1" # 不切换成root,但是执行 useradd 命令添加
user1 用户
2. 用户组管理命令
(1) 添加用户组 groupadd
命令格式: groupadd [选项] 组名
选项:
-g GID: 指定用户组ID
(2) 修改用户组 groupmod
命令格式: groupmod [选项] 组名
选项:
-g GID: 修改用户组ID
-n 新组名: 修改组名
如: groupmod -n newg oldg # 把组名 oldg 修改为 newg
(3) 删除用户组 groupdel
命令格式: groupdel 组名
注意:如果用户组中存在初始用户,则该用户组不能删除,而附加用户对用户组删除没有影响。
如:
添加一个用户组 baobao,添加一个用户 bao1 且指定 baobao 为其初始组,添加一个用户 bao2 且指定 baobao 为其附加组。此时用户组 baobao 中包含初始用户 bao1 和附加用户 bao2,因此删除 baobao 失败。而把用户 bao1 删除后,baobao 中只包含附加用户 bao2,这时删除 baobao 成功。
(4) 把用户添加入组或从组中删除 gpasswd
命令格式: gpasswd [选项] 组名
选项:
-a 用户名: 把用户(作为附加用户)加入组
-d 用户名: 把用户从组中删除
如:
添加一个用户组 test,查看 /etc/group 文件可以看出 test 组中没有附加用户,通过 gpasswd -a 命令将 xiaobao 和 bao2 两个用户加入到 test 组中。再查看 /etc/group 文件发现 test 组中已经多了 xiaobao 和 bao2,添加用户成功。
同样可以用 gpasswd -d 命令进行用户删除操作: