web-dev-qa-db-ja.com

sudoersのデフォルトのrootpwをオーバーライドするにはどうすればよいですか?

manyエントリを含むsudoersファイルがあります。

上部にはデフォルト設定があります。

# default Sudo password is the ROOT password (not the invoking user's password)
Defaults rootpw

ただし、ownパスワードを入力する限り、ユーザーにrootとして実行させたい特定のコマンドが1つあります。

特定のコマンドを指定するには、呼び出し元のユーザーのパスワードが必要です。これにより、「デフォルト」セットが上書きされますか?

例えば以下のコマンドを変更して、呼び出し元のユーザーのパスワード(notルートパスワード)を要求する方法:

markus ALL = PASSWD: /usr/sbin/tcpdump -p -i eth2 Host 192.168.14.15
2
PP.

使用する

Defaults!/usr/sbin/tcpdump !rootpw

単一のコマンドでrootpwを無効にします。詳細については、 この回答 および/またはman 5 sudoersを参照してください。

または、NOPASSWDオプションを使用すると、パスワードプロンプトが完全に無効になります。

markus ALL = NOPASSWD: /usr/sbin/tcpdump -p -i eth2 Host 192.168.14.15

最後に、1人のユーザーからrootpwを無効にできます。

Defaults:markus !rootpw

特定のユーザーと特定のコマンドのrootpwをオーバーライドする場合は、少なくとも次の回避策を使用できます。ラッパースクリプトを作成します(例:/usr/local/bin/special_tcpdump.sh)。

 #!/bin/sh
 /usr/sbin/tcpdump $*

次に、sudoersを構成します。

 Defaults!/usr/local/bin/special_tcpdump.sh !rootpw
 markus ALL = PASSWD: /usr/local/bin/special_tcpdump.sh -p -i eth2 Host 192.168.14.15
3
Olli