sudoers
ファイルM ALL=!/bin/su
を編集してユーザーを制限しようとしました。 Sudo su -
は制限できますが、Sudo -i
は制限できません。
元の質問では、次のように/bin/bash
(または/etc/passwd
でユーザーのシェルとして定義されているもの)を除外する必要があります。
tomk ALL= ALL,!/bin/su,!/bin/bash
ただし(!!!)、これはユーザーがSudo -s
またはSudo -i
を実行することを拒否しますが、質問へのコメントですでに述べたように、it rootとしてインタラクティブなシェルを取得することを実際には妨げません。
man sudoers
から:
「!」演算子の制限
一般に、「!」演算子を使用してALLからコマンドを「減算」することは効果的ではありません。ユーザーは、目的のコマンドを別の名前にコピーして実行することで、これを簡単に回避できます。例えば:
bill ALL = ALL, !SU, !SHELLS
ビルがSUまたはSHELLSにリストされたコマンドを実行することを実際に妨げることはありません。なぜなら、彼はそれらのコマンドを別の名前にコピーするか、エディターまたは他のプログラムからシェルエスケープを使用できるからです。したがって、これらの種類の制限は、せいぜい助言と見なす必要があります(ポリシーによって強化する必要があります)。
一般に、ユーザーがSudo ALLを持っている場合、ユーザー指定の「!」要素に関係なく、ユーザーにルートシェルを提供する独自のプログラムを作成する(またはシェルの独自のコピーを作成する)ことを妨げるものはありません。