私は非常に敏感なネットワーク設定をしていて、本当にそれを台無しにしたくありません。私のネットワークは、Sudo特権を持つ多数のユーザーで構成されています。
彼らの走りを止めたい
service NetworkManager restart
service network restart
コマンド。
これを達成する方法はありますか?
まず、sudoersファイルをSudo visudo
で開きます。 IIRC、user ALL=!/usr/sbin/service
willを追加すると、ユーザーservice
のuser
コマンドが禁止されます。
ソース: http://nixcraft.com/showthread.php/15132-Sudo-Exclude-Commands-And-Disable-Sudo-su-Bash-Shell
私は解決策を見つけました。
端末を開いて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
コマンドについても同様です。
これに対する本当の答えは、これを本当に防ぐことはできないということです。他の回答に記載されている方法で、悪意のあるユーザーが誤ってそのコマンドを実行するのを防ぐことができますが、実際に実行したいユーザーがsudoersリストに含まれている場合は、そのコマンドを実行できます。たとえば、次のことができます。
joe@box:~$ Sudo bash root@box:~# service network restart
または、sudoersファイルでの制限を回避するために使用できる別の楽しいコマンド:
Sudo visudo
簡単に言えば、Sudoが可能で、特定のコマンドの実行に制限されていない場合は、ほとんど何でも実行できます。特定のコマンドセットに制限する場合でも、ユーザーが実行したい他のコマンドを、実行するために許可したコマンドと同じ名前にコピーできないようにする必要があります(実行する権限があるコマンドを上書きするなど)。
Firejailを使用して、サンドボックスを持つユーザーを制限します。
https://github.com/netblue30/firejail/
/ etc/passwdで、制限したいすべてのユーザーに対して、firejailをbashではなくShellとして設定します。それは非常に使いやすく、優れたドキュメントがあります。
例:
user:x:1000:1000:user:/home/user:/usr/bin/firejail