すべてのプロダクト
Search
ドキュメントセンター

:Linux ECS インスタンスの root パスワードを変更する際の "passwd: Permission denied" エラーの解決

最終更新日:Nov 12, 2025

問題の説明

passwd コマンドを実行して root パスワードを変更すると、システムから Permission denied エラーが返されます。

原因

  • ファイルロック: /etc/passwd/etc/shadow などのコア認証ファイルには不変属性があり、変更ができません。

  • 不正な権限: 1 つ以上のファイルの読み取りおよび書き込み権限が正しくないため、passwd コマンドでパスワードを変更できません。

  • SELinux ポリシーの制限: SELinux セキュリティポリシーにより、passwd コマンドによるパスワードの変更が妨げられています。

  • 不正な PAM 設定ファイル形式: /etc/pam.d/ 内の Pluggable Authentication Modules (PAM) 設定ファイルが DOS 形式を使用しているため、Linux が正しく解析できません。

解決策

重要

システムファイルを変更する前に、スナップショットを作成してシステムディスクの設定データをバックアップしてください。これにより、問題が発生した場合にシステムを迅速に復元できます。

手順 1: ファイル属性の確認と変更

  1. ファイル属性を確認します。

    sudo lsattr /etc/passwd /etc/shadow
  2. 出力に i 属性または a 属性 (例: ----ia------) が含まれている場合、ファイルはロックされています。次のコマンドを実行して、これらの属性を削除します。

    sudo chattr -ia /etc/passwd
    sudo chattr -ia /etc/shadow
  3. 属性を削除した後、passwd コマンドを再試行します。

手順 2: ファイル権限の確認と修正

  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 コマンドを再試行します。

手順 3: SELinux のステータスの確認

  1. SELinux の現在のステータスを確認します。

    sestatus
  2. Current modeenforcing の場合、SELinux は enforcing モードであり、セキュリティポリシーに違反する変更をブロックします。変更を許可するために、一時的に SELinux を permissive モードに切り替えます。

    setenforce 0
  3. SELinuxpermissive モードに設定した後、passwd コマンドを再試行します。

手順 4: PAM 設定ファイル形式の確認

  1. PAM 設定ファイルの形式を確認します。

    sudo file -i /etc/pam.d/passwd
  2. 出力に ASCII text, with CRLF line terminators が含まれている場合、ファイルは DOS 形式です。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