suコマンドではrootとしてログインできませんが、SSHではできます


17

どのようにそれは私がしてrootとしてログインできない可能性があるsu rootsu(私は間違ったパスワードのエラーが出る)、しかし、私はしてログインすることができssh root@localhostたりssh root@my_local_IP、同じパスワードを使用して?

CentOS 6.4を使用しています。


Update1

cat /etc/pam.d/su

与える:

#%PAM-1.0
auth        sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required    pam_wheel.so use_uid
auth        include     system-auth
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password    include     system-auth
session     include     system-auth
session     optional    pam_xauth.so

Update2

$ sudo grep su /var/log/secure | grep -v sudo

与える:

Feb 23 13:12:17 fallah su: pam_unix(su:auth): authentication failure;
logname=fallah uid=501 euid=501 tty=pts/0 ruser=fallah rhost=  user=root

約20回繰り返した。


1
ファイルをクリアしてみてください/etc/securettycp /etc/securetty{,.old}; : > /etc/securetty)。それでも解決しない場合は、のコンテンツを提供してください/etc/pam.d/su
パトリック14

2
確かにssh 192.168.1.218あなたはあなた自身としてログインしているだけですか?経由でrootとしてログインするには、ssh通常ssh root@192.168.1.218またはが必要ssh root@localhostです。
グレアム14

1
シェルのPID(12345)を取得し()、ルートシェル(SUIDバイナリのトレースに必要echo $$)を開いて(たとえば、経由でsshstraceそのシェルを開始しstrace -o su.strace -p 12345 -f、エラーメッセージの前に奇妙なエラーを探します。または、この種の出力に慣れていない場合は、エラーメッセージの前の最後の30行を質問にコピーします。
ホークレイジング14

1
それを@HaukeLagingことは言うProcess 11736 attached - interrupt to quit
アリレザFallah

2
OK、それが機能していない理由です。/ bin / suのsetuidビットをオンにして、通常の(root以外の)ユーザーが使用するときに、/ etc / shadowのパスワードリストにアクセスできるようにする必要があります。chmod 4755 /bin/suこれを修正するには、rootとして入力します。
マークPlotnick 14

回答:


23

あなたのコメントで/bin/suは、次のモード/所有者がいると言っています:

-rwxrwxrwx. 1 root root 30092 Jun 22 2012 /bin/su

ここには2つの問題があります。

  • 常にroot権限で実行されるようにset-uidビットをオンにする必要があります。そうしないと、通常の(非root)ユーザーがパスワード情報にアクセスしたり、パスワード情報/etc/shadowを設定したりできません。目的の新しいユーザーのユーザーID。

  • それは持っているべきgroupother書き込みビットを他のユーザーがそれを変更することはできませんので、オフ。

これを修正するには、次のようにログインしますroot-あなたはこれを行うことができると言いましたssh-そしてタイプします

chmod 4755 /bin/su

または、代わりに、

chmod u+s,g-w,o-w /bin/su

chmod標準ドキュメントでは、引数の種類について詳しく説明しています。)これにより、モードビットがオペレーティングシステムが最初にインストールされたときの状態に戻ります。このファイルをリストすると、次のようになります。

-rwsr-xr-x. 1 root root 30092 Jun 22 2012 /bin/su

@ G-Manが指摘したように、モード777のファイルは信頼できないユーザーによって上書きされる可能性があります。その場合、配布メディアまたはバックアップからそれらを再インストールすることができます。


1
私は通常、次のように使用します:chmod 755 /bin/su、余分な4は何ですか?
アリレザファラー14

4最初の位置には、セットのuid権限を表します。許可ビットに記号名を使用してchmodを使用する代替方法を追加するために、回答を編集しました。うまくいけば、それはより明確になるでしょう。
マークプロトニック14

本当にありがとう。今、私はchmod -R 777 /bin間違って実行したことを理解し、それが私が呪われている理由です:D
Alireza Fallah 14

私はまた 別の質問をしました、それを見てください、たぶんあなたは答えを知っています。
アリレザファラー14

cyberciti.biz/tips/…rpmでは、ファイルのアクセス許可を復元する方法について説明していますが、試したことはありません。
マークPlotnick 14

10

1.ホイールグループ?

これは、useidがwheelグループにないためです。Red Hatディストリビューションでは、このグループに属さないユーザーがsuコマンドを実行することを明示的に禁止できます。

suデフォルトでは、PAM構成は次のようになります。

$ more /etc/pam.d/su
#%PAM-1.0
auth        sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required    pam_wheel.so use_uid
auth        include     system-auth
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password    include     system-auth
session     include     system-auth
session     optional    pam_xauth.so

この行は、suコマンドへのアクセスをwheelグループ内のユーザーに制限できます。

auth        required    pam_wheel.so use_uid

その音から、これは有効になっており、ユーザーIDはsuコマンドを操作できません。

SSHは異なるPAMメカニズムを通過するため機能します。SSHには、ルートログインへのアクセスを制限する独自の機能もあります。通常、少なくともほとんどのRed Hatディストリビューションでは、デフォルトでルートログインが許可されています。

$ sudo grep PermitRoot /etc/ssh/sshd_config 
#PermitRootLogin yes
# the setting of "PermitRootLogin without-password".

上記はコメントアウトされていますが、これはデフォルトであり、OpenSSHが設定のデフォルト設定をどのように表示するかです。

これで動作しますか?

システムがこのように構成されている場合、ユーザー名をwheelグループに追加できます。

$ useradd -G wheel saml

ログアウトして再度ログインした後:

$ groups
saml wheel

注:私のユーザーIDは上記の「saml」です。

2. suの権限

実行可能ファイルがrootによって所有されていることを確認してください。

$ type -a su
su is /usr/bin/su
su is /bin/su

$ ls -l /usr/bin/su /bin/su
-rwsr-xr-x. 1 root root 32064 Jan 13 06:31 /bin/su
-rwsr-xr-x. 1 root root 32064 Jan 13 06:31 /usr/bin/su

また、実行可能ファイルのsビットが有効になっていることを確認します。これにより、それらはsetuidになり、実行されると独自のルートとして実行されます。

3.ログには何と書かれていますか?

su -コマンドを実行しようとすると/var/log/secure、試行に関するエントリが表示されます。

$ sudo grep su /var/log/secure | grep -v sudo
Feb 23 23:31:26 greeneggs su: pam_unix(su-l:session): session opened for user root by saml(uid=0)
Feb 24 00:27:32 greeneggs su: pam_unix(su-l:session): session closed for user root
Feb 24 01:34:12 greeneggs su: pam_unix(su-l:session): session opened for user root by saml(uid=1000)
Feb 24 01:34:26 greeneggs su: pam_unix(su-l:session): session closed for user root

このログを参照して、追加情報が得られるかどうかを確認してください。

4.パスワードは問題ではないのですか?

を使用してログインしようとするsu -と、間違ったパスワードを入力すると次のメッセージが表示されます。

$ su -
Password: 
su: Authentication failure
$

別のアカウントを作成して、このセカンダリアカウントがsu -正常に実行できるかどうかを確認します。


あなたの素晴らしい答え、あなたの答えを読んだ後に私が試したものに感謝します:usermod -a -G wheel my_usernameの結果はgroupsですfallah wheel。したがって、の結果はcat /etc/pam.d/su私の質問にあります、そして、再び、suコマンドでrootとしてログインすることはできません!!!
アリレザファラー14

これは、最後の行である/var/log/secureFeb 24 10:19:45 fallah su: pam_unix(su:auth): authentication failure; logname=fallah uid=501 euid=501 tty=pts/2 ruser=fallah rhost= user=root
アリレザFallah

そして、このラインはで約20回繰り返される/var/log/secure
アリレザFallah

4:私はしようとすると:su: incorrect password -と私はSSHで同じパスワードでログインすることができますので、パスワードは、正しいです
アリレザFallah

私はまたのような、別のアカウントでログインしようとしたsu alireza、そして再び同じ問題
アリレザFallah

0

このようなエラーメッセージが表示される場合

su: PAM adding faulty module: /lib64/security/pam_tally.so
su: PAM unable to dlopen(/lib64/security/pam_tally.so): /lib64/security/pam_tally.so: cannot open shared object file: No such file or directory

この手順を実行します。

ln -s /lib64/security/pam_tally2.so /lib64/security/pam_tally.so

その後、suを試してください。動作するはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.