当前位置:首页>Linux>Linux系统修改Linux root密码时,提示"passwd:Permission denied "没有权限的处理思路.

Linux系统修改Linux root密码时,提示"passwd:Permission denied "没有权限的处理思路.

  • 2026-10-10 14:34:13
Linux系统修改Linux root密码时,提示"passwd:Permission denied "没有权限的处理思路.
 ——内容来自阿里云技术文档

01

问题现象

执行passwd命令修改密码时,系统返回Permission denied错误。 

02

问题原因

文件锁定:
核心认证文件(如/etc/passwd,/etc/shadow)被设置了不可变属性,禁止所有修改操作。  
读写权限配置不当:
文件读写权限配置不当,导致passwd命令无法修改密码。  
SELinux策略限制:
系统开启SELinux,且安全策略阻止passwd修改密码。
PAM配置文件格式异常:
PAM配置文件(/etc/pam.d/)使用DOS格式会导致解析失败。  

03

解决方案

在执行任何系统文件修改前,请先为配置数据进行备份。以便在发生意外时能够快速恢复。 

01

检查并修改文件属性

1、 检查文件属性。
sudo lsattr /etc/passwd /etc/shadow 
2、如果输出中包含i属性或a属性(如----ia------),表示文件被锁定。使用chattr移除锁定。    
sudo chattr -ia /etc/passwd sudo chattr -ia /etc/shadow 
3、移除属性后,尝试执行passwd命令。  

02

检查并修复文件权限

1、查看文件权限。   
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 
3、修复权限后,尝试执行passwd命令。  

03

检查SELinux状态

1、检查SELinux的当前状态。   
sestatus 
2、如果Current mode为enforcing,表示系统处于强制模式,会禁止违反安全策略的文件修改。可以将SELinux临时调整为宽容模式,暂时允许这些操作。 
 setenforce 0 
3、关闭SELinux后,尝试执行passwd命令。  

04

检查PAM配置文件格式

1、检查PAM系统配置文件的格式。   
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 
3、转换格式后,尝试执行passwd命令。  

04

后续建议

问题解决后,可重新为/etc/passwd和/etc/shadow文件添加不可变属性,防止意外篡改。    
sudo chattr +i /etc/passwd sudo chattr +i /etc/shadow

最新文章

随机文章