第一种:/usr/bin/passwd 的权限中没有添加s即SUID特殊权限
即:-rwxr-xr-x. 1 root root 27000 8月 22 2010 /usr/bin/passwd
解决方案:chmod u+s /usr/bin/passwd
SUID的功能简单的说就是让组用户或其他用户在执行该文件是拥有文件所有者(own)权限,这里就是需要获取w(写)权限,这样才能将新密码写到/etc/shadow文件中
切记:SUID只能运行在二进制的程序上(系统中的一些命令),不能用在脚本上(script),因为脚本还是把很多的程序集合到一起来执行,而不是脚本自身在执行。同样,SUID也不能放到目录上,放上也是无效的。详细的说明见该博客:<u style="box-sizing: border-box;">[http://blog.csdn.net/wlxxsj/article/details/7344355](http://blog.csdn.net/wlxxsj/article/details/7344355)</u>
第二种:lsattr /etc/shadow 得到----i--------e- /etc/shadow(文件的隐藏属性,具体不扩展),这里需要将i去掉,用chattr -i /etc/shadow
同样/etc/group /etc/passwd也可能出现该情况。
以上两种均不是我遇到的情况。
第三种:虽然出现passwd: 鉴定令牌操作错误,但是密码已经修改了,可以通过cat /etc/shadow去查看,只是该用户被锁定了,这里需要解锁。
解决方案:usermod +U somebody将该用户解锁(/etc/shadow文件中该用户所属第二栏有几个!(惊叹号)就执行几次该指令)
PS:以上操作全部在root权限下。