su認証失敗の警告を抑制する方法は? のようですが、実際にはコマンドはまったく実行されません。
# su limited
su: Authentication failure
# su -s /bin/bash limited
su: Authentication failure
# su -s /bin/bash - limited
su: Authentication failure
ルートから実行されているときに認証を確認するのが面倒なのはなぜですか?
ほとんどのユーザーにとって、su
は正常に動作します。
# grep limited /etc/passwd
limited:x:1001:1001::/home/limited:/bin/bash
# grep limited /etc/shadow
#
/etc/shadow
から欠落しても、他のほとんどのユーザーがsu
- edされるのを防ぐことはできません。
試行するとログエントリが表示されます。
Apr 21 10:43:18 thehostname su: FAILED SU (to limited) root on pts/110
# egrep -v '^#|^$' /etc/pam.d/su
auth sufficient pam_rootok.so
session required pam_env.so readenv=1
session required pam_env.so readenv=1 envfile=/etc/default/locale
session optional pam_mail.so nopen
session required pam_limits.so
@include common-auth
@include common-account
@include common-session
/etc/passwd
の(ほとんど使用されなくなった)パスワードフィールドにx
があります。 man 5 passwd
(私のDebian/Raspbianマシンと online )によると、これはmustが必要であることを意味します/etc/shadow
の対応するエントリ:
パスワードフィールドが小文字の「x」の場合、暗号化されたパスワードは実際にはshadow(5)ファイルに格納されます。
/etc/shadow file
に対応する行がなければなりません。そうでない場合、ユーザーアカウントは無効です。
最後の句「ユーザーアカウントが無効です」に達していると思われます。su
は注意。
例(Raspbian)
grep test.: /etc/passwd
test1:x:1005:1005:Test 1:/home/test1:/bin/bash
test2:x:1006:1006:Test 2:/home/test2:/bin/bash
grep test.: /etc/shadow
test1:!:18373:0:99999:7:::
su test1 -c id
uid=1005(test1) gid=1005(test1) groups=1005(test1)
su test2 -c id
su: Authentication failure
解決策は、x
パスワードフィールドでpasswd
を使用しないか、対応するエントリを/etc/shadow
に追加することです。 (/etc/passwd
のパスワードフィールドを空にすると、ユーザーはパスワードなしでログインできるようになります。代わりに、アカウントをロック済みとしてマークする!
を使用してください。)
pwconv
コマンドを使用して、不足しているエントリを含む/etc/shadow
ファイルを修正できます。