sudo -sとsudo -iを無効にする

sudo -sとsudo -iを無効にする

ルートになるためにsudoの使用を無効にして、すべてのユーザーにsudoプレフィックス付きの特権コマンドを実行させたいと思います。これにより、これらすべてのコマンドが記録され、アクセスと変更の履歴が維持されます。

これを達成できるソリューションはありますか?

ベストアンサー1

sudoers例外とともに、ユーザーが実行できるコマンドを一覧表示できます。

これsudoersマニュアルページあなたが望むことをほとんど実行する例もあります(ここにはDebianに対するいくつかの調整があります):

Cmnd_Alias      SHELLS = /bin/sh, /bin/bash, /bin/bash, /usr/bin/zsh
Cmnd_Alias      SU = /bin/su

jill            SERVERS = /usr/bin/, !SU, !SHELLS

Host_Aliasのすべてのシステムに対して、jillはHost_AliasとCmnd_Aliasesに属するコマンドを除いてそのディレクトリ内のすべてのSERVERSコマンドを実行できます。/usr/bin/ルールに特に言及されていませんが、Cmnd_Aliasのコマンドはすべてnoexecオプションが設定されています。SUSHELLSPAGERS/usr/bin

また適用されますALL

someuser ALL=(ALL:ALL) ALL, !SU, !SHELLS

これを得なさい:

$ sudo -s
Sorry, user someuser is not allowed to execute '/bin/bash' as root on thishost.
$ sudo bash -c "echo please"
Sorry, user someuser is not allowed to execute '/bin/bash -c echo please' as root on thishost.

そして、sudo -lこれらの特定のコマンドを実行できないと言います。

デフォルトで何でも実行できる場合は、すべてのシェルを明示的に一覧表示する必要があります。たとえば、su許可されている場合は使用できるようにシェルを実行しますsudo su(通常は役に立ちません)。上記で間違って書いているので、/bin/dashまだ利用可能です。


いずれにしても、そのような例外を列挙しても実際の制限になるわけではありません。ユーザーが別の名前()でシェルを複製またはsudo cp -a /bin/bash /bin/cash実行してsudo viクリックするのを防ぐ方法はありません:shell。もちろん、漏れを防ぐためにエディタなどを設定することはできますが、すべての穴を見つけて止める必要があり、まだ漏れを防ぐことはできません。それにもかかわらず、このようなシステムを使った経験があるので、これが良いアイデアだと思う人もいます。

ロギングに加えて、人々がすべてのコマンドを実行するために特権シェルを開いたままにしないようにして事故を減らすことだと思います。ただし、sudoコマンドの前に追加する必要があるため、コマンドのスペルが間違っている可能性は実際には減りません。それでもsudo rm -rf *間違ったディレクトリにあるか、誤ってそう/dev/sdd思うかもしれません。/dev/sdf

特権シェルを拒否すると、管理者にとって実質的な問題が発生します。システムに管理者の一般アカウントでアクセスできないディレクトリがある場合は、特権シェルを実行してディレクトリに入り、ファイルの一覧を表示し、ファイル名にタブ補完機能を使用する必要があります。シェルがない場合は、常にこれを行う必要がありますsudo ls path/to/dir(ただsudo ls行くことはできないためではなく)、操作を実行するときにファイル名を手動でコピーして貼り付ける必要があります。これは非常に面倒ですが、すべてを遅くして、少なくとも単位時間あたりのエラーを減らすことができます。

おすすめ記事