Su 認証失敗のトラブルシューティングと解決
su 認証失敗の一般的な原因とアクセス制御の設定方法を理解したので、これらの失敗のトラブルシューティングと解決に焦点を当てましょう。
認証失敗の診断
su 認証失敗が発生した場合は、次の体系的な手順に従って問題を診断します。
手順 1: エラーメッセージの確認
エラーメッセージは、失敗の性質に関する貴重な手がかりを提供できます。一般的なエラーメッセージには以下が含まれます。
su: Authentication failure - 通常、間違ったパスワードを示します。
su: user username does not exist - 指定されたユーザーアカウントが存在しません。
su: permission denied - アクセス制御の制限により、操作が妨げられています。
手順 2: ユーザーアカウントの確認
ターゲットユーザーアカウントが存在し、ロックされていないことを確認します。
grep testuser /etc/passwd
これにより、パスワードファイルに testuser のエントリが表示され、アカウントが存在することが確認されます。
アカウントがロックされているかどうかを確認します。
sudo passwd -S testuser
出力には、アカウントのステータスが含まれます。「L」(ロック)と表示されている場合、アカウントはロックされています。
手順 3: アクセス制御の制限の確認
前の手順で学習したように、PAM 設定は su のアクセスを制限できます。そのような制限がないか確認します。
grep -v "^#" /etc/pam.d/su | grep pam_wheel
これが pam_wheel.so を含む行を返す場合、su へのアクセスは特定のグループのメンバーに制限されている可能性があります。
手順 4: システムログの確認
システムログは、認証失敗に関する詳細な情報を提供できます。
sudo tail -n 20 /var/log/auth.log
su の失敗に関連するエントリを探します。これにより、追加のコンテキストが提供される場合があります。
一般的な Su 認証失敗の解決
次に、一般的な su 認証失敗と、それらを解決する方法について説明します。
1. 間違ったパスワード
正しいパスワードを入力しても認証失敗が発生する場合は、パスワードをリセットする必要がある場合があります。
sudo passwd testuser
プロンプトが表示されたら、testuser の新しいパスワードを入力します。
2. アカウントがロックされている
アカウントがロックされている場合は、ロックを解除します。
sudo passwd -u testuser
3. アクセス制御の制限
アクセス制御の制限により su へのアクセスが妨げられている場合は、次のいずれかを実行できます。
a. ユーザーを必要なグループに追加します。
sudo usermod -aG sugroup testuser2
これにより、testuser2 が sugroup に追加されます。
b. PAM 設定の関連行をコメントアウトして、制限を一時的に無効にします。
sudo sed -i 's/^auth\s\+required\s\+pam_wheel.so/#&/' /etc/pam.d/su
このコマンドは、su PAM 設定で pam_wheel.so を含む行をコメントアウトします。
4. ファイル権限の問題
su バイナリに誤った権限がある場合は、修正します。
sudo chmod u+s $(which su)
これにより、su バイナリに setuid ビットが設定されていることが保証されます。
修正のテスト
修正を適用した後、su 認証が正しく機能するかテストします。
su - testuser
プロンプトが表示されたら、testuser のパスワードを入力します。成功した場合、testuser としてログインしているはずです。
root ユーザーに切り替えてみます。
su -
root パスワードがあり、アクセス制御の制限が適切に処理されている場合は、root ユーザーに正常に切り替えることができるはずです。
これらのトラブルシューティング手順と修正は、最も一般的な su 認証失敗に対処します。これらの問題を体系的に診断して解決することにより、システムで su コマンドが正しく機能するようにすることができます。