0

sudo -i -u user /bin/bla/whatever と呼ばれる bash スクリプトがありました。CentOS 5.8 への最後の更新までは正常に機能していました。これは、sudoers ファイル内の対応するエントリです。

Runas_Alias TEST = user1, user2
Defaults:test always_set_home
test ALL=(TEST) NOPASSWD: /bin/bash -c /bin/bla/whatever, /bin/bla/whatever

sudo -i を使用した場合、コマンドを呼び出したようです

"/bin/bash -c /bin/bla/whatever"

(安全なログについて)。今、更新以来、それは呼び出すようです

"/bin/bash -c \/bin\/bla\/whatever"

したがって、許可されていません。sudoers ファイルの行を次のように変更しようとしました

test ALL=(TEST) NOPASSWD: /bin/bash -c /bin/bla/whatever, /bin/bla/whatever, /bin/bash -c \/bin\/bla\/whatever

しかし、それは構文を許可していないので、試しました:

test ALL=(TEST) NOPASSWD: /bin/bash -c /bin/bla/whatever, /bin/bla/whatever, /bin/bash -c \\/bin\\/bla\\/whatever

これは有効な構文ですが、機能しません。

Sudo -H -u user /bin/bla/whatever を使用すると、正常に動作します。sudoers ファイルで /bin/bash を許可しても、何でも許可されます.....

何か案は?

エリック

4

2 に答える 2

1

私のfedora16システムのsudomanページを確認したところ、次のようになっています。

   -i [command]
               The -i (simulate initial login) option runs the shell specified by the password database entry of the target user as a login shell.  This means
               that login-specific resource files such as .profile or .login will be read by the shell.  If a command is specified, it is passed to the shell
               for execution via the shell's -c option.

bash -cしたがって、sudoersコマンド定義で指定する必要はないようです。

コマンドを呼び出す場合sudo -i /bin/bla/whateverは、sudoersファイルに次のものしか必要ありません。

test ALL=(TEST) NOPASSWD: /bin/bla/whatever

私のfedora16システムで問題を再現できますが、試したsudoersファイルに変更を加えても効果はありませんでした。これを機能させるために必要な他の構成が見つかりません。私が言えるのは、「-H-u...」を使用することだけです。

于 2012-06-01T08:40:59.783 に答える
1

あなたsudo -i -u user /bin/bla/whateverは引数で走っていましたか?からman sudoers:

単純なファイル名により、ユーザーは任意の引数を指定してコマンドを実行できます。ただし、コマンド ライン引数 (ワイルドカードを含む) を指定することもできます。または、"" を指定して、コマンド ライン引数なしでのみコマンドを実行できることを示すこともできます。

したがって、 を追加すると、引数を指定することになり、正確に/bin/bash -c一致する必要があります。

以下に行の例を示しsudoersます。

test ALL=(ALL) NOPASSWD: /bin/bash -c /bin/true, /bin/bash -c /bin/true *, /bin/true *

それで私はできる:

sudo /bin/true
sudo /bin/true foo
sudo -u /bin/true
sudo -u /bin/true foo

しかし、それは一致しないものになるからではありませ sudo trueん。bash -c truebash -c /bin/true

于 2014-02-13T21:19:37.820 に答える