web-dev-qa-db-ja.com

パスワードなしでuser1に "su-user2"を許可する

ユーザーmartinがパスワードなしでユーザーmartin-testに切り替えることを許可する必要があります

su - martin-test

これは/etc/pam.d/suで設定できると思います。そのファイルにはすでにコメント解除できる行がいくつかあります。ただし、ユーザーmartinをグループwheelに追加するという考えは好きではありません。 martinmartin-testに切り替えられる以上の特権を与えたくありません。また、Sudoを使用したくありません。

ユーザーmartinの特権を最小限に抑えながら、それを行うための最良の方法は何ですか?

55
Martin Vegter

pam_rootok.so/etc/pam.d/su行の下に次の行を追加します。

auth  [success=ignore default=1] pam_succeed_if.so user = martin-test
auth  sufficient                 pam_succeed_if.so use_uid user = martin

これらの行は pam_succeed_if.so モジュールを使用してチェックを実行します。 auth行の詳細については、 Linux-PAM構成ファイルの構文 も参照してください。

  • 1行目は、ターゲットユーザーmartin-testかどうかを確認します。何も起こらない場合(success=ignore)、次の行に進んで現在のユーザーを確認できます。そうでない場合、次の行はスキップされ(default=1)、通常の認証手順で後続の行に進むことができます。
  • 2行目は、現在のユーザーがmartinであるかどうかをチェックします。そうである場合、システムは認証プロセスが成功したと見なし、(sufficient)を返します。そうでない場合、何も起こりません。通常の認証手順を次の行に続けます。

suをグループに制限することもできます。ここでは、グループallowedpeopleはパスワードなしでsuを実行できます。

auth sufficient pam_succeed_if.so use_uid user ingroup allowedpeople
66
GnP

グループを変更したくない場合、またはSudoを使用しない場合は、pam_execというpamモジュールを使用して、pamステージで外部スクリプトを実行します。

/etc/pam.d/su行の後のpam_rootok.soに行を追加します。

auth       sufficient pam_exec.so quiet /path/to/script

/path/to/scriptには、権限755(rwxr-xr-x)と次のコンテンツがあります。

#!/bin/bash
if [ "$PAM_TYPE" == "auth" ] && \
[ "$PAM_USER" == "martin-test" ] && \
[ "$PAM_RUSER" == "martin" ]; then
  exit 0
else
  exit 1
fi

したがって、suの場合、このスクリプトは正常に終了します。

  • 認証のコンテキストで呼び出され、
  • 呼び出し元のユーザーはmartinであり、
  • 認証するユーザーはmartin-testです。

見る:

martin@Host:~$ su - martin-test
martin-test@Host:~$ exit
martin@Host:~$ su - otheruser
Password: ****
otheruser@Host:~$ 
13
chaos

これが可能な最良の方法かもしれません。

suはそうすることを意図したものではありません-Sudoはそうです。

Open _/etc/sudoers.d/custom_そして次のように書きます:

user-a ALL=(user-b:user-b) NOPASSWD:ALL

これは:user-aが_Sudo -u user-b_を実行するときはいつでも、パスワードを要求せずに彼に行かせます。

別の方法

_youruserid ALL = (username) NOPASSWD: ALL
_

visudoそして_Sudo -u username bash_は_su - username_に似ています

2
champion-runner

Rootアカウントにアクセスできないが、コマンドの実行に使用するユーザーのパスワードを持っている場合は、次の操作を実行できます。

  • これにより、totoのパスワードが要求されます。su-toto -c whoami
  • これはできません:ssh toto @ localhost whoami

Totoのauthorized_keysにあなたの公開鍵をインストールするだけです

0
Patrick