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
使用する
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