web-dev-qa-db-ja.com

Sudo -iとSudo su-を使用して、ユーザーがrootにログインしないように制限する方法、および存在する場合はその他

sudoersファイルM ALL=!/bin/suを編集してユーザーを制限しようとしました。 Sudo su -は制限できますが、Sudo -iは制限できません。

2
mmk_ind

元の質問では、次のように/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を持っている場合、ユーザー指定の「!」要素に関係なく、ユーザーにルートシェルを提供する独自のプログラムを作成する(またはシェルの独自のコピーを作成する)ことを妨げるものはありません。

2
Tom Klino