`su`がrootとして実行されても「su:認証失敗」というメッセージが表示されるのはなぜですか?

`su`がrootとして実行されても「su:認証失敗」というメッセージが表示されるのはなぜですか?

少し内にあるようです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

すると、次のログエントリが表示されます。

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

ベストアンサー1

x(ほとんど使用されていない)パスワードフィールドに1つがあります/etc/passwd。 (man 5 passwd私のDebian / Raspbianコンピュータとオンライン)これは次のことを意味します。〜しなければならない以下の対応する項目は次のとおりです/etc/shadow

パスワードフィールドが小文字の「x」の場合、暗号化されたパスワードは実際にはShadow(5)ファイルに対応する行が必要です。/etc/shadow fileそれ以外の場合、ユーザーアカウントは無効です。

最後の条項を満たしているかどうか疑わしいです。」無効なユーザーアカウントそして、suとても慎重です。

はい(Raspbian)、すべてのコマンドはrootとして実行されます。

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

おすすめ記事