web-dev-qa-db-ja.com

Sudoユーザーが特定のコマンドを実行できないようにするにはどうすればよいですか?

私は非常に敏感なネットワーク設定をしていて、本当にそれを台無しにしたくありません。私のネットワークは、Sudo特権を持つ多数のユーザーで構成されています。

彼らの走りを止めたい

service NetworkManager restart
service network restart

コマンド。

これを達成する方法はありますか?

30
shekhar

まず、sudoersファイルをSudo visudoで開きます。 IIRC、user ALL=!/usr/sbin/service willを追加すると、ユーザーserviceuserコマンドが禁止されます。

ソース: http://nixcraft.com/showthread.php/15132-Sudo-Exclude-Commands-And-Disable-Sudo-su-Bash-Shell

5
Zeb McCorkle

私は解決策を見つけました。

端末を開いてsu -でrootユーザーに変更し、次にvisudoと入力して編集しました。

そして最後に私は次のような行を書きました

user ALL=!/etc/init.d/NetworkManager restart
user ALL=!/etc/init.d/network restart

次に、保存して閉じ、再起動しました。

今私がservice network restartまたはservice NetworkManager restartと入力している場合、それは私を許可せず、次のようなエラーを出します

Sorry user is not allowed to execute '/sbin/service NetowkrManager restart' as root on localhost.localdomain

service network restartコマンドについても同様です。

5
shekhar

これに対する本当の答えは、これを本当に防ぐことはできないということです。他の回答に記載されている方法で、悪意のあるユーザーが誤ってそのコマンドを実行するのを防ぐことができますが、実際に実行したいユーザーがsudoersリストに含まれている場合は、そのコマンドを実行できます。たとえば、次のことができます。

joe@box:~$ Sudo bash root@box:~# service network restart

または、sudoersファイルでの制限を回避するために使用できる別の楽しいコマンド:

Sudo visudo

簡単に言えば、Sudoが可能で、特定のコマンドの実行に制限されていない場合は、ほとんど何でも実行できます。特定のコマンドセットに制限する場合でも、ユーザーが実行したい他のコマンドを、実行するために許可したコマンドと同じ名前にコピーできないようにする必要があります(実行する権限があるコマンドを上書きするなど)。

3
reirab

Firejailを使用して、サンドボックスを持つユーザーを制限します。

https://github.com/netblue30/firejail/

/ etc/passwdで、制限したいすべてのユーザーに対して、firejailをbashではなくShellとして設定します。それは非常に使いやすく、優れたドキュメントがあります。

例:

user:x:1000:1000:user:/home/user:/usr/bin/firejail
3
Jeff