Cheug's Blog

当前位置:网站首页 / Server / 正文

密码修改失败 passwd: Authentication token manipulation error

2024-03-26 / Server / 280 次围观 / 0 次吐槽 /

Authentication token manipulation error 这个错误直译就是:认证令牌操作失败错误。


1.保存用户密码的两个文件是否无修改权限


2.磁盘已满导致无法修改


3.PAM 模块设置   ls -l /etc/pam.d/  

错误配置的/etc/pam.d/common-password文件可能会导致此错误,使用root权限运行pam-auth-update命令可以解决此问题。


思路1


/etc/passwd 用户信息文件 和/etc/shadow用户密码文件。在/etc/shadow中能看到用户密码策略的一些信息。

所以我先看了下了,是否这两个文件出了权限问题。

[root@master ~]# lsattr /etc/passwd  /etc/shadow
---------------- /etc/passwd
---------------- /etc/shadow

发现并没有设置不允许修改的权限,所以不是这个问题。

通过用lsattr命令查看存放用户和密码的文件属性,发现有i选项,所以导致所有的用户都不能修改密码,因为没有权限允许。

        i:不得任意更动文件或目录。

我们可以用chattr命令将i权限撤销

chattr -i /etc/passwd
chattr -i /etc/shadow


然后看第二个思路

df -h

发现根目录挂载的剩余空间很多,所以也不是这个问题。从这开始,我就在导出找是不是其它原因了。

比如是不是这个用户有问题,或者密码设置不对?最后想到是不是密码策略有关


还有个文件 /etc/pam.d/system-auth


linux的用户与密码用户策略比如密码强度,然后看到一篇文章上说重复密码次数,有一篇文章通过查看系统日志找错误信息,

/var/log/messages 但是message里并没有有用的信息,然后看下目录下面,还有个security日志,cat /var/log/secure 

最后看到一行日志,无法打开旧密码文件检查旧密码。

passwd: pam_unix(passwd:chauthtok): can't open /etc/security/opasswd file to check old passwords

/etc/security/opasswd 旧密码保存文件,是因为在 /etc/pam.d/system-auth中强制不能和最近的5个旧密码相同,所以在查找旧密码时,发现没有 opasswd文件报错了,校验失败,没法修改密码。

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

所以解决方法,1不校验旧密码。2.创建旧密码文件。我用了第二个方法。


最能追根求源的方法,果然还是看日志。


最后总结一下,主要知识是密码修改相关的知识,


1.修改密码的策略


所有的设置都在/etc/pam.d/system-auth里,包括密码强度,大小写,特殊字符之类。比如是否旧密码校验。


2.密码保存文件


/etc/passwd  /etc/shadow 要修改密码成功,这两个文件必须有写,修改权限。


Powered By Cheug's Blog

Copyright Cheug Rights Reserved.