用户密码管理
6.2.3 用户密码管理
命令之 passwd
对于普通用户的密码管理权限,只能使用 passwd 更改用户自身的密码,对于管理员用户管理权限,可以使用 passwd USERNAME,可以更改所其他用户的密码。
格式使用格式:passwd [选项] [选项参数] [用户名称]
查看/etc/shadow 文件中的第一行内容,具体含义发图 6-5 所示。
[root@xuegod63 ~]# head -1 /etc/shadow
root:$6$C88LCVx5ZjfBU7xv$cKcdyNeTFmOYTs9NbRZDTA4hGcbMXc/5hQEWZKCtNyLqlBagrjct.pMfs39iEaF1UbEvcOzWZHMDf9Q5KojXM1::0:99999:7:::
图 6-5 /etc/shadow 内容含义分解
格式说明如表 6-2 所示。
name |
登录名称,这个必须是系统中的有效账户名 |
password |
已加密密码,分为三个部分,第一部分是表示使用哪种哈希算法;第二部分是用于加密哈希的salt;第三部分是已加密的哈希 哈希算法:$1表示MD5 ; $6 表示SHA-512 ; $5 SHA-256 查看帮助说明: man 5 passwd man 5 shadow man 5 group man 3 crypt |
lastchange |
最近一次更改密码的日期,以距离1970/1/1的天数表示 |
min-age |
不能更改密码的最少天数,最近更改过后几天才可以更改;如果为0表示“最短期限要求” |
maxage |
密码过期时间,必须更改密码前的最多天数 |
warning |
密码即将到期的警告期,以天数表示,0表示“不提供警告” |
inactive |
宽限天数,密码到期后 |
expire |
账号过期时间,以距离1970/1/1的天数计算 (千年虫) |
blank |
预留字段 |
表 6-2 /etc/shadow 内容含义分解表
1. 给用户添加密码。
[root@panda home]# passwd oracle #交互形式添加密码。
Changing password for user oracle.
New password: #输入密码(输入密码时没有回显)。
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: #再次输入密码(输入密码时没有回显)。
passwd: all authentication tokens updated successfully.
[root@xuegod63 ~]# echo 123456 | passwd --stdin 用户名 #不交互形式添加密码。
[root@xuegod63 ~]# echo 123456 | passwd --stdin harry
互动: 两个用户的密码一样? 那么 shadow 中加密的 hash 值一样吗?
答: 不一样。 因为 salt 不一样。
2. 命令之 chage 用于修改用户密码属性。
命令使用格式:chage [选项] [选项参数] 用户名称
常用选项:
-m:密码可更改的最小天数。为 0 时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-W:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期,为 0 表示强制在下次登录时更新密码。
例:修改用户 mk 密码信息:让用户 mk 首次登录系统时必须更改其密码。
# chage -d 0 mk
# ssh [email protected]
...
Are you sure you want to continue connecting (yes/no)? yes #输入 yes
Warning: Permanently added '192.168.1.63' (ECDSA) to the list of known hOSts.
[email protected]'s password: 123456 #输入密码。
You must change your password now and login again! #提示必须改密码。
更改用户 mk 的密码 。
为 mk 更改 STRESS 密码。
(当前)UNIX 密码: #输入当前密码。
新的 密码: #输入新密码。
重新输入新的 密码: #再次输入新密码。
passwd:所有的身份验证令牌已经成功更新。
例:两个用户使用同一个 UID 号:
# vim /etc/passwd #把 mk 用户的 uid 改为 0。
mk:x:0:0:mk:/home/mk:/bin/bash
# su - mk #切换 mk 用户登录系统。
上一次登录:二 9 月 19 22:03:16 CST 2017:0 上
# id mk #查看 mk 用户信息 UID 号为 0,用户登录系统后的命令
提示符为#。
uid=0(mk) gid=0(root) 组=0(root),10(wheel)
注意:当某个用户 ID 号不其他用户的 ID 号相同时,系统会识别为同一个用户,因为系统识别用户时,是识别用户的 UID 号的,以上实验结果,系统把 mk 用户识别为 root 用户了。