问题描述:
以用户ops登录虚拟机,提示密码已过期,需要更换密码。更换密码失败,报错“Authentication token manipulation error”【身份验证令牌操作错误】。我们用另一个账户密码登录上机器,查看问题
可能原因:
- 根目录空间满了
【排查方法】df
查看分区使用情况
【处理方法】删除根目录下无用的文件
【tips】du
命令可查看当前目录下的空间占用情况 - inode满了
【排查方法】df -i
查看,若根目录下的inode使用情况为100%
【处理方法】删除无用的临时文件sudo find /tmp -type f -exec rm {} \;
和 0字节文件sudo find /home -type f -size 0 -exec rm {} \;
- 密码文件(/etc/passwd和/etc/shadow)不同步
【排查方法】cat /etc/passwd
cat /etc/shadow
对比两个文件中,登录用户ops的信息是否有差异,若有则不同步
【处理方法】pwconv
命令,将/etc/passwd文件投影到/etc/shadow文件中,根据passwd文件修改shadow文件 - 密码文件(/etc/passwd和/etc/shadow)属性设置为 不可被修改
【排查方法】lsattr /etc/passwd /etc/shadow
查看存放用户和密码的文件 属性,若有i属性,表明该文件不能被修改:无法被删除或重命名,无法为此创建任何链接文件,不能将任何数据写入该文件。若有a属性,表明该文件不能被删除、改名、原有内容无法修改,只能追加内容。
【处理方法】chattr -i /etc/passwd /etc/shadow
用chattr命令将i/a权限撤销
【tips】lsattr命令列出文件或目录的隐藏权限,chattr命令修改文件或目录的隐藏权限
排查过程:
查看分区使用情况,发现根目录使用率为100%,猜测是原因1
锁定问题并解决:
根目录空间满了,删除/目录下无用文件夹,用passwd命令修改密码,成功。
参考资料:
【1】Linux操作系统执行passwd命令重置密码失败提示:Authentication token manipulation error
【2】linux修改密码出现Authentication token manipulation error的解决办法
【3】linux inode已满解决方法