Linux系统修改Linux root密码时,提示"passwd:Permission denied "没有权限的处理思路.
执行passwd命令修改密码时,系统返回Permission denied错误。 核心认证文件(如/etc/passwd,/etc/shadow)被设置了不可变属性,禁止所有修改操作。 文件读写权限配置不当,导致passwd命令无法修改密码。 系统开启SELinux,且安全策略阻止passwd修改密码。PAM配置文件(/etc/pam.d/)使用DOS格式会导致解析失败。 在执行任何系统文件修改前,请先为配置数据进行备份。以便在发生意外时能够快速恢复。 sudo lsattr /etc/passwd /etc/shadow
2、如果输出中包含i属性或a属性(如----ia------),表示文件被锁定。使用chattr移除锁定。 sudo chattr -ia /etc/passwd sudo chattr -ia /etc/shadow
sudo ls -l /etc/passwd /etc/shadow
2、核对权限是否符合标准。如若权限不正确,使用chmod修复。 /etc/passwd:标准权限为644(-rw-r--r--)。 /etc/shadow:标准权限为000(----------)或600(-rw-------)。 sudo chmod 644 /etc/passwd sudo chmod 000 /etc/shadow
2、如果Current mode为enforcing,表示系统处于强制模式,会禁止违反安全策略的文件修改。可以将SELinux临时调整为宽容模式,暂时允许这些操作。 3、关闭SELinux后,尝试执行passwd命令。 sudo file -i /etc/pam.d/passwd
2、如果输出包含ASCII text, with CRLF line terminators,则表示文件是DOS格式(使用CRLF换行),Linux系统无法解析含CRLF(\r\n)换行符的文件。需要转换格式。 sudo yum install -y dos2unix sudo dos2unix /etc/pam.d/passwd
问题解决后,可重新为/etc/passwd和/etc/shadow文件添加不可变属性,防止意外篡改。 sudo chattr +i /etc/passwd sudo chattr +i /etc/shadow