【Linux】"sudo -s"を禁止する方法
前回書いたように、"sudo -s"は対話式シェルを起動できるので、root権限で色々と作業したいときに大変便利ですが、ログに起動したシェル上で行った作業が記録されないという問題があります。
ユーザに特定のコマンドしかsudoさせない場合、"sudo -s"の利用は禁止するのが望ましいです。
/etc/sudoersではオプション利用が禁止できない
sudoコマンドの設定は、visudoコマンドで/etc/sudoersファイルを編集して行います。
ところが、/etc/sudoersファイルでは特定のオプション禁止することができません。
シェルコマンドを1つ1つ禁止する
"sudo -s"は実行されると環境変数SHELLに設定されたシェルを起動します。
つまり、"sudo -s"は"sudo $SHELL"と同じです。
そのため、$SHELLに設定される可能性がある、/bin/bash、/bin/tsch、/bin/zshなどのコマンドを1つ1つ禁止する必要があります。 (とても面倒ですが他によい方法が見つかりません。。。)
【/etc/sudoersの設定例】 Cmnd_Alias SHELLS = /bin/bash/, /bin/tsch, /bin/zsh, /usr/local/bin/bash, /usr/local/bin/tcsh, .... %wheel ALL = (ALL) ALL, !SHELLS ← wheelグループのSHELLSに設定したコマンド利用を禁止