web-dev-qa-db-ja.com

rootアクセスを許可せずに、あるユーザーが別のユーザーをsuできるようにするにはどうすればよいですか?

特定のユーザーがアカウントのパスワードを知らなくても他のユーザーアカウントにsuできるようにしたいが、他のユーザーアカウント(つまりroot)へのアクセスは許可しない。
たとえば、トムのDBAにOracleユーザーへのsuを許可しますが、Tomcatユーザーまたはrootへの許可は許可しません。

これは/ etc/sudoersファイルで実行できると思います-可能ですか?もしそうなら、どうですか?

56
gharper

はい、可能です。

/ etc/sudoersでは、equalsの直後の項目は、コマンドの実行を許可されるユーザーです。

tom  ALL=(Oracle) /bin/chown tom *

ユーザー(tom)は次のように入力できますSudo -u Oracle/bin/chown tom/home/Oracle/oraclefile

45
Brent

/ etc/sudoersに次のようなものを追加します

tom ALL=(Oracle) ALL

次に、ユーザーtomは、Sudoを使用して、ユーザーuで-uオプションを指定し、tomを許可せずに物事を実行できる必要があります。

つまりユーザーOracleとしてシェルを取得する(まあ、あなたのSudoが-iオプションを持つほど新しいことを考えると)。

Sudo -u Oracle -i
42

問題の機能のみを提供するには、以下を/ etc/sudoersに追加します。

tom            ALL=(Oracle)    /bin/bash

次に、トムは次のことができます。

Sudo -u Oracle bash -i
9
karimofthecrop

たとえば、トムのDBAにOracleユーザーへのsuを許可しますが、Tomcatユーザーまたはrootへの許可は許可しません。

私は最近システムに対してこれを行う必要があり、構文su <user>も許可する、何年も前に使用した代替セットアップに関するメモを見つけるのに苦労しました。私の状況では、複数のユーザーが特定のユーザーにsuできるようにする必要がありました。

他のユーザーがパスワードなしでsuできるaddgroup <groupName>を使用してグループを作成します。次に、パスワードなしでそのユーザーにsuできるようにする各ユーザーにそのグループを追加します:usermod -a -G <groupName> <userName>(またはusermod -a -G Oracle tom)。グループの変更は、次回ログインするまで有効にならない場合があります。

注:この場合、adduser Oracleを使用してOracleユーザーを作成したときにOracleグループが作成されていたため、グループはすでに存在しています。

ここで/etc/pam.d/suを編集し、以下の下に移動します。

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so

..authルール行を追加すると、セクションは次のようになります。

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so
auth       [success=ignore default=1] pam_succeed_if.so user = <groupName>
auth       sufficient   pam_succeed_if.so use_uid user ingroup <groupName>

この場合、<groupName>Oracleに置き換えます。これにより、<groupName>からsu <groupName>の一部であるすべてのユーザーが許可されます

これでtomsu Oracleできるようになり、他のユーザーに同じアクセス権を与える必要がある場合は、Oracleグループに追加します。

同様の質問 ここ

0
jtlindsey