今早忽然想修改一下一个普通用户的密码,root登录进去之后键入修改密码命令之后发现提示“passwd: 鉴定令牌操作错误”。
[root@Geeklp-Administrator ~]# passwd Geeklp
更改用户 Geeklp 的密码 。
新的 密码:
无效的密码: 密码少于 7 个字符
重新输入新的 密码:
passwd: 鉴定令牌操作错误
检查了/etc/passwd的隐藏属性,也没发现什么异常。忽然想起来上周我在实验的时候键入过pwunconv命令,可能是这个命令引起的问题,于是重新键入pwconv命令,再次执行修改密码,操作成功!
操作之前的/etc/passwd目录:
[root@Geeklp-Administrator ~]# cat /etc/passwd
root:$6$W2B2u9mW/343Cwol$o8uxim3sGBVwPP//ktUv0TpZI4spD6nDlka/.8g9r99LidrhgTUiG8f3T/S71ZFlWZ4CbxRL2MOJZeh94Nf4R/:0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:/sbin/nologin
daemon:*:2:2:daemon:/sbin:/sbin/nologin
adm:*:3:4:adm:/var/adm:/sbin/nologin
lp:*:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:*:5:0:sync:/sbin:/bin/sync
shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown
halt:*:7:0:halt:/sbin:/sbin/halt
mail:*:8:12:mail:/var/spool/mail:/sbin/nologin
operator:*:11:0:operator:/root:/sbin/nologin
games:*:12:100:games:/usr/games:/sbin/nologin
ftp:*:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:*:99:99:Nobody:/:/sbin/nologin
systemd-network:!!:192:192:systemd Network Management:/:/sbin/nologin
dbus:!!:81:81:System message bus:/:/sbin/nologin
polkitd:!!:999:997:User for polkitd:/:/sbin/nologin
postfix:!!:89:89::/var/spool/postfix:/sbin/nologin
chrony:!!:998:996::/var/lib/chrony:/sbin/nologin
sshd:!!:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
Geeklp:$6$WkX08HPX$L/FdYUT5cNaTTP9AJOWz5rSVKqwS3cSVOg6HXWOR2blkLCA9Vbd.raEdSR4ErgC2pcIHPA1HGj.5kj49k.aCs/:1000:1000::/home/Geeklp:/bin/bash
操作之后的/etc/passwd目录:
[root@Geeklp-Administrator ~]# pwconv
[root@Geeklp-Administrator ~]# cat /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
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
Geeklp:x:1000:1000::/home/Geeklp:/bin/bash
初步观察,我们会发现在密码那里有明显的不同,这是由于使用了pwunconv及pwconv的缘故。
pwconv命令用来开启用户的投影密码。Linux系统里的用户和群组密码,分别存放在名称为passwd和group的文件中, 这两个文件位于/etc目录下。因系统运作所需,任何人都得以读取它们,造成安全上的破绽。投影密码将文件内的密码改存在/etc目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为”x”字符,有效的强化了系统的安全性。
pwunconv命令与pwconv功能相反,用来关闭用户的投影密码。它会把密码从shadow文件内,重回存到passwd文件里。这种方式降低了系统的安全性,任何人都可以读passwd的内容,而shadow文件只有root用户才有读写权限。