問題の説明
su コマンドを使用してユーザーを切り替えると、次のエラーが表示されます。
su: failed to execute /bin/bash: Permission denied原因
このエラーは、/bin/bash へのパスに対する権限が不十分であることを示します。具体的には、ファイルまたは親ディレクトリに実行 (x) 権限がありません。この権限がないと、システムは新しいシェルセッションを開始するために /bin/bash 実行可能ファイルにアクセスできません。
解決策
ECS インスタンスにログインします。
[ECS コンソール - インスタンス] に移動します。トップナビゲーションバーで、ターゲットリージョンとリソースグループを選択します。
ターゲットインスタンスの詳細ページに移動します。[接続] をクリックし、[Workbench] を選択します。ページのプロンプトに従ってターミナルにログインします。
不変属性を確認して削除します。
ファイルに不変属性または追加のみの属性がある場合、その属性を削除するまで権限を変更することはできません。
不変属性を確認します。
sudo lsattr /bin/bash# 'a' (追加のみ) 属性が設定されていることを示します ----a---------e------ /bin/bash # 'i' (不変) 属性が設定されていることを示します ----i---------e------ /bin/bash # 両方の属性が設定されていることを示します ----ia--------e------ /bin/bash出力に
iまたはaフラグが含まれている場合は、次のステップで削除します。それ以外の場合は、ステップ 3 に進みます。属性を削除します。
# 'i' 属性が設定されている場合は、このコマンドを実行します sudo chattr -i /bin/bash # 'a' 属性が設定されている場合は、このコマンドを実行します sudo chattr -a /bin/bash属性を削除した後、次のステップに進みます。
パスの権限を確認して修正します。
完全な権限パスを確認します。
sudo namei -l /bin/bashf: /bin/bash dr-xr-xr-x root root / dr-xr-xr-x root root bin -r-xr-xr-x root root bashパス内の各ディレクトリには、実行 (
x) 権限が必要です。出力で権限が不足していることが示された場合は、修正する必要があります。それ以外の場合は、ステップ 4 に進みます。たとえば、ルートディレクトリ (
/) の権限がdr--r--r--であった場合、修正が必要な実行権限が欠落していることを示します。chmodを使用して正しい権限を適用します。# ルートディレクトリ (/) の正しい権限 sudo chmod 755 / # /bin ディレクトリの正しい権限 sudo chmod 755 /bin # /bin/bash ファイルの正しい権限 sudo chmod 755 /bin/bash
修正を検証します。
suコマンドを再度実行して、ターゲットユーザーに切り替えます。これでエラーは解決されるはずです。