全部產品
Search
文件中心

:修改Linux ECS執行個體root密碼時,提示"passwd:Permission denied"

更新時間:Nov 11, 2025

問題現象

執行passwd命令修改密碼時,系統返回Permission denied錯誤。

問題原因

  • 檔案鎖定:核心認證檔案(如/etc/passwd/etc/shadow)被設定了不可變屬性,禁止所有修改操作。

  • 讀寫權限配置不當:檔案讀寫權限配置不當,導致passwd命令無法修改密碼。

  • SELinux策略限制:系統開啟SELinux,且安全性原則阻止passwd修改密碼。

  • PAM設定檔格式異常:PAM設定檔(/etc/pam.d/)使用DOS格式會導致解析失敗。

解決方案

重要

在執行任何系統檔案修改前,請先為系統硬碟建立快照對配置資料進行備份。以便在發生意外時能夠快速恢複。

步驟一:檢查並修改檔案屬性

  1. 檢查檔案屬性。

    sudo lsattr /etc/passwd /etc/shadow
  2. 如果輸出中包含i屬性或a屬性(如----ia------),表示檔案被鎖定。使用chattr移除鎖定。

    sudo chattr -ia /etc/passwd
    sudo chattr -ia /etc/shadow
  3. 移除屬性後,嘗試執行passwd命令。

步驟二:檢查並修複檔案許可權

  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命令。

步驟三:檢查SELinux狀態

  1. 檢查SELinux的目前狀態。

    sestatus
  2. 如果Current modeenforcing,表示系統處於強制模式,會禁止違反安全性原則的檔案修改。可以將SELinux臨時調整為寬容模式,暫時允許這些操作。

    setenforce 0
  3. 關閉SELinux後,嘗試執行passwd命令。

步驟四:檢查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命令。

後續建議

問題解決後,可重新為/etc/passwd/etc/shadow檔案添加不可變屬性,防止意外篡改。

sudo chattr +i /etc/passwd
sudo chattr +i /etc/shadow