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


53

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

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

回答:


44

はい、これは可能です。

/ etc / sudoersのすぐ等しい次の項目のコマンドは次のように実行を許可されることをユーザがあります。

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

ユーザー(tom)はsudo -u oracle / bin / chown tom / home / oracle / oraclefileと入力できます


5
これは、トムはoracleとしてコマンドを実行できるようになるが、実際にoracleユーザーになることはない
gharper

11
sudo -u oracle su-はどうですか?それは彼にoracleユーザーとして開かれたシェルを与えるでしょう。それはあなたが望むものですか?
ブレント

その最後のコメント、ブレントに+1。それが私の答えでしょう。
アニカバックストローム

3
次のようなものが機能します:sudo -u oracle -sまたはsudo -u oracle -i(シェルの場合は-s、ログインの場合は-i-ログインシェルを実行します)。残念ながら、ユーザーを制限するために/ etc / sudoersで何を使用するのかわからないのですが、シェルアクセスを許可しているのであれば、おそらく他の誰かが言ったようにtom ALL =(oracle)ALLを実行したいだけです。シェルを実行できる場合、実行できるコマンドの制限についてはおそらく気にしません。
マーク

1
理想的には、Tomがoracleユーザーになるのではなく、oracleユーザーとしてコマンドを実行しないようにしますか?違いはわずかですが、監査シェルを使用することに煩わされることなく、優れた監査ログを提供します。
スコットパック

40

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

tom ALL=(oracle) ALL

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

つまり、ユーザーoracleとしてシェルを取得します(sudoが-iオプションを使用するのに十分に新しい場合)。

sudo -u oracle -i

5
tom ALL=(oracle)NOPASSWD:ALLパスワードを要求しないようにsudoを作成するために構文を使用する必要がありました
snowindy

9

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

tom            ALL=(oracle)    /bin/bash

トムは次のことができます:

sudo -u oracle bash -i

0

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

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

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

注:あなたの場合、グループをすでに持っoracleているのは、でoracleユーザーを作成したときにグループが作成されていたからですadduser 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>

今すぐtomことができsu oracleますが、他のユーザーに同じアクセス権を与える必要がある場合や、それらを追加するoracleグループ。

ここで同様の質問

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