問題
状況によっては、Docker コンテナー内の通常のユーザーは、「su」コマンドを実行してユーザーを切り替えることができません。 su コマンドを発行すると、次のエラーが返されます。
$ su - Password: [entering correct password] su: Authentication failure
解決策
コンテナ内の /usr/bin/su にスティッキー権限がない可能性があります。 root 権限があれば、次のように修正できます:
1. まず、/usr/bin/su バイナリ ファイルの現在のアクセス許可を確認します。
# ls -l /usr/bin/su -rwxr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su
上記の出力からわかるように、スティッキー ビットのアクセス許可がありません。
2. 次のように /usr/bin/su ファイルにスティッキー ビット権限を追加します。
# chmod u+s /usr/bin/su
3. 権限を再度確認し、権限フィールドの末尾にある「x」フラグを確認します。
# ls -l /usr/bin/su -rwsr-xr-x 1 root root 32208 Mar 14 01:39 /usr/bin/su
4. docker コンテナー内で su を再試行してください。
$ su - postgres Password: Last login: Tue Aug 6 12:13:57 JST 2019 on pts/1 postgres@[hostname] $