本文索引:
- 更改用户属性:usermod命令
- 常用参数
- 用户密码管理:passwd命令
- 常用用法
- 锁定密码
- 解锁密码
- 关于密码的几个建议
- 常用用法
- 自动创建密码:mkpasswd命令
- 使用方法
usermod命令
更改用户属性
# 初始测试状态
[root@localhost ~]# tail -n 1 /etc/passwd
test:x:1001:1001::/home/test:/bin/bash
[root@localhost ~]# tail -n 1 /etc/shadow
test:!!:17460:0:99999:7:::
[root@localhost ~]# tail -n 1 /etc/group
test:x:1001:
[root@localhost ~]# id test
uid=1001(test) gid=1001(test) 组=1001(test)
常用参数
- -g 修改用户gid或组名(组需存在)
[root@localhost ~]# usermod -g 1024 test
usermod:“1024”组不存在
[root@localhost ~]# groupadd -g 1024 test1
[root@localhost ~]# usermod -g 1024 test
[root@localhost ~]# tail -n 1 /etc/passwd
test:x:1001:1024::/home/test:/bin/bash
- -u 修改uid或用户名
[root@localhost ~]# usermod -u 1024 test
[root@localhost ~]# tail -n 1 /etc/passwd
test:x:1024:1024::/home/test:/bin/bash
- -G 设置用户还属于的扩展组
对于-G参数需要注意的是后接的扩展组只有一个组时,再次使用相同方法想添加扩展组会不行的,它将覆盖原扩展组!同时创建多个扩展组的方法是将多个组用逗号连接一起设置!!
# Usage: usermod -G GROUP USER
# 设置test在test1组内
[root@localhost ~]# usermod -G test1 test
[root@localhost ~]# id test
uid=1001(test) gid=1001(test) 组=1001(test),1002(test1)
# 计划新增test在castiel组内,但是发现test已经不再test1组内了
[root@localhost ~]# usermod -G castiel test
[root@localhost ~]# id test
uid=1001(test) gid=1001(test) 组=1001(test),1000(castiel)
# 要实现同时创建2个扩展组,需要一次性设置!使用逗号连接多个组
# Usage: usermod -G [root@localhost ~]# usermod -G test1,castiel test
[root@localhost ~]# id test
uid=1001(test) gid=1001(test) 组=1001(test),1000(castiel),1002(test1)
- -s 修改shell
[root@localhost ~]# usermod -s /bin/chsh test
[root@localhost ~]# tail -n 1 /etc/passwd
test:x:1024:1024::/home/test:/bin/chsh
- -d 修改家目录
[root@localhost ~]# usermod -d /test test
[root@localhost ~]# tail -n 1 /etc/passwd
test:x:1024:1024::/test:/bin/chsh
- -e 修改过期日期
# 默认账户不会过期
[root@localhost ~]# tail -n 1 /etc/shadow
test:!!:17460:0:99999:7:::
[root@localhost ~]# usermod -e 2017-10-25 test
[root@localhost ~]# tail -n 1 /etc/shadow
test:!!:17460:0:99999:7::17464:
- -f 修改账户到期至其失效的天数
[root@localhost ~]# usermod -f 4 test
[root@localhost ~]# tail -n 1 /etc/shadow
test:!!:17460:0:99999:7:4:17464:
- -L 锁定用户,不让其登录
[root@localhost ~]# tail -n 1 /etc/shadow
test:$6$.3FDAIkp$g422.ik85QSX5PiuYc8GeC6oRmKYLM5pFi3Xjg4IzO5XIzB05fjwNMMfQeejxnqIG8Gy2.K5o0H8v1AAr63Br/:17460:0:99999:7:4:17464:
[root@localhost ~]# usermod -L test
# 锁定test用户,其/etc/shadow内的密码字段开头加了一个!
[root@localhost ~]# tail -n 1 /etc/shadow
test:!$6$.3FDAIkp$g422.ik85QSX5PiuYc8GeC6oRmKYLM5pFi3Xjg4IzO5XIzB05fjwNMMfQeejxnqIG8Gy2.K5o0H8v1AAr63Br/:17460:0:99999:7:4:17464:
- -U 解锁因-L锁定的用户
[root@localhost ~]# usermod -U test
# 密码字段开头的!被取消了,用户解锁
[root@localhost ~]# tail -n 1 /etc/shadow
test:$6$.3FDAIkp$g422.ik85QSX5PiuYc8GeC6oRmKYLM5pFi3Xjg4IzO5XIzB05fjwNMMfQeejxnqIG8Gy2.K5o0H8v1AAr63Br/:17460:0:99999:7:4:17464:
用户密码管理
用法:passwd USER(不加USER,修改当前用户的密码;/etc/passwd文件有set_uid位,使得普通用户也可以修改自己的密码)
[root@localhost ~]# passwd
更改用户 root 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# passwd castiel
更改用户 castiel 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# tail -n 5 /etc/shadow
sshd:!!:17456::::::
chrony:!!:17456::::::
castiel:$6$zg/7atV8$PyzrskqXmN13qjrEyB1OMb.ktysgV9bAIH89MB12dL8ZrrsqTOOQJHzA.FJCEOsDyynUQRllfOgB4B..rU9yj/:17467:0:99999:7:::
test:!!:17467:0:99999:7:::
test1:!!:17467:0:99999:7:::
对于/etc/shadow文件的第二个密码字段
- !! 没有密码,无法登录
- * 密码被锁定,无法使用、登录
- 一串字符串,表示用户有密码但 加密
凡是有!!或*,表明账户无法登录
常用用法
锁定密码: passwd -l USER
执行该命令后有密码的用户会在其/etc/shadow文件的密码字段(加密的字符串)前加上!!;
[root@localhost ~]# passwd -l test
锁定用户 test 的密码 。
passwd: 操作成功
[root@localhost ~]# tail -n 1 /etc/shadow
test:!!$6$.3FDAIkp$g422.ik85QSX5PiuYc8GeC6oRmKYLM5pFi3Xjg4IzO5XIzB05fjwNMMfQeejxnqIG8Gy2.K5o0H8v1AAr63Br/:17460:0:99999:7:4:17464:
解锁密码:passwd -u USER
[root@localhost ~]# passwd -u test
解锁用户 test 的密码。
passwd: 操作成功
[root@localhost ~]# tail -n 1 /etc/shadow
test:$6$.3FDAIkp$g422.ik85QSX5PiuYc8GeC6oRmKYLM5pFi3Xjg4IzO5XIzB05fjwNMMfQeejxnqIG8Gy2.K5o0H8v1AAr63Br/:17460:0:99999:7:4:17464:
--stdin,密码只需要输入一次:passwd --stdin USER
# --stdin 修改密码,输入一次密码,明文显示
[root@localhost ~]# passwd --stdin castiel
更改用户 castiel 的密码 。
123456
passwd:所有的身份验证令牌已经成功更新。
#适合在脚本中修改密码的方法
echo "password" | passwd --stdin USER
或
echo -e "password\npassword" | passwd USER
关于密码的几个建议
- 长度大于10个字符
- 包含大小写、数字和特殊字符
- 不规则性(不要全字母或数字)
- 不要包含自己的生日、姓名等易被获取的信息
- 不要多个账户共用一个密码
mkpasswd命令
使用命令来创建密码
安装: yum install expect
使用方法
- -l num 创建的密码长度
- -d num 创建的密码中数字的个数
- -s num 创建的密码中特殊字符的个数
- -C num 创建的密码中大写数字的个数
- -c num 创建的密码中小写数字的个数
不加参数,默认创建的密码长度为9位,包含大小写字母、数字和特殊字符!
[root@centos7 ~]# mkpasswd
nf72HG?ra
[root@centos7 ~]# mkpasswd -l 12 -c 3 -C 5 -s 2
W$]46NkcADfX