ユーザーmartin
がパスワードなしでユーザーmartin-test
に切り替えることを許可する必要があります
su - martin-test
これは/etc/pam.d/su
で設定できると思います。そのファイルにはすでにコメント解除できる行がいくつかあります。ただし、ユーザーmartin
をグループwheel
に追加するという考えは好きではありません。 martin
にmartin-test
に切り替えられる以上の特権を与えたくありません。また、Sudo
を使用したくありません。
ユーザーmartin
の特権を最小限に抑えながら、それを行うための最良の方法は何ですか?
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構成ファイルの構文 も参照してください。
martin-test
かどうかを確認します。何も起こらない場合(success=ignore
)、次の行に進んで現在のユーザーを確認できます。そうでない場合、次の行はスキップされ(default=1
)、通常の認証手順で後続の行に進むことができます。martin
であるかどうかをチェックします。そうである場合、システムは認証プロセスが成功したと見なし、(sufficient
)を返します。そうでない場合、何も起こりません。通常の認証手順を次の行に続けます。su
をグループに制限することもできます。ここでは、グループallowedpeople
はパスワードなしでsu
を実行できます。
auth sufficient pam_succeed_if.so use_uid user ingroup allowedpeople
グループを変更したくない場合、または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:~$
これが可能な最良の方法かもしれません。
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
_に似ています
Rootアカウントにアクセスできないが、コマンドの実行に使用するユーザーのパスワードを持っている場合は、次の操作を実行できます。
Totoのauthorized_keysにあなたの公開鍵をインストールするだけです