it-swarm-ja.com

パスワイルドカードを使用してsudoerを構成するにはどうすればよいですか?

特定のエリアの下のパスのコマンドにはSudoが必要です。例:

Sudo mycommand /opt/apps/myapp/...

このコマンドを/ opt/apps/myappに該当するパスで実行できるようにするsudoers構文は何ですか? Solaris 10Sudoです。


返信ありがとうございますが、コマンドへのパスにはワイルドカードは必要ありませんが、コマンドの引数にはワイルドカードが必要です。

たとえば、次のようなことをしたいと思います...

Sudo mycmd /opt/userarea/area1
Sudo mycmd /opt/userarea/area1/area2
Sudo mycmd /opt/userarea/area1/area2/area3

これまでのところ、sudoersの引数にワイルドカードを使用すると次のようになります。

/opt/userarea/*
/opt/userarea/*/*

また、Nレベルのディレクトリが必要な場合は、sudoerにN行が必要になるようです。 sudoersの1行にすべてのNレベルを含めるためのより良い方法はありますか?ありがとう。

4
C. Lee

Sudoは、ファイル/etc/sudoersによって制御されます。このファイルは、Sudoが実行できることと実行できないことを示します。下記の理由で、目的を達成できるかどうかはわかりませんが、次のようなコマンドのグループを作成できます。

Cmnd_Alias TESTAPPS = /opt/dev/myapp/myapp1, /opt/dev/myapp/myapp2

次に、これらのコマンドだけを使用して、特定のグループがSudoを実行できるようにすることができます。私はこれを私のセットにしています:

root    ALL=(ALL)       ALL
%wheel  ALL=(ALL)       ALL

これに追加することもできます:

%development    ALL=(TESTAPPS)   ALL

紛らわしいことに、最初のケースのALLは、ログイン元のすべてのホストを示しているため、特定のホストからSudoが実行されるのを防ぐことができます。

簡単な警告-これを実行してこの領域への書き込みアクセスを有効にすると、ユーザーは/ bin、/ usr/binなどからコマンドをコピーして、rootとして好きなように実行できます。したがって、Sudo /opt/apps/myapp/rm -rf /を実行すると、機能します。また、これらのコマンドを実行できる場所を制限する必要があります。

1
user26996

私は同じことをしようとしていて、この(確かに古い)質問を見つけました...

さらに調べてみると、sudoersのmanページで、コマンド/パス名のワイルドカード一致のスラッシュと一致しないことが明らかになっていることがわかりました。 sudoers(5)から(「ワイルドカード」セクション内):

スラッシュ( ‘/’)は、パス名で使用されているワイルドカードとは一致しないことに注意してください。

マニュアルページには記載されていませんが、これは、/opt/userarea/*でコマンドを実行するためのアクセス権を持つ誰かが/opt/userarea/../../bin/shのようなものを実行しようとするのを防ぐためにかなり明確だと思います。

ですから、設計上、あなたが望むように(そして私が望むように)機能しません。

0
Mike Myers