メインの管理者ユーザー (全員に sudo 権限を持つ) に、1 つのコマンドに対して別のユーザーとしてパスワードなしの sudo 権限を持たせたい状況があります。私の知る限り、/etc/sudoers に次の内容を設定する必要があります。
ramo ALL=(otherUser) NOPASSWD: /usr/bin/command
ramo ALL=(ALL) ALL
しかし、この 2 つの行が競合しているか、2 番目の行が最初の行を上書きしているようです。これを実現する方法について何かアイデアはありますか?
乾杯
ラモ
編集: ユーザーを指定するときの sudo の動作を少し誤解していたことが判明しました。ALL=(otherUser) の場合、「sudo -u otherUser」は必要なく、sudo だけでよいという印象を持っていました。これは当てはまりません。
答え1
順序は重要であり、その動作は sudoers(5) のマニュアル ページで説明されています。
ユーザーに複数のエントリが一致する場合、それらは順番に適用されます。複数の一致がある場合、最後の一致が使用されます (必ずしも最も具体的な一致とは限りません)。
元のルールでは、「(ALL) ALL」が最後の一致なので、sudo はパスワードを要求します。
次の /etc/sudoers は機能します:
ramo ALL=(ALL) ALL
ramo ALL=(otherUser) NOPASSWD: /bin/whoami
例えば:
$ sudo -k /bin/whoami
[sudo] password for ramo:
root
$ sudo -k -u otherUser /bin/whoami
otherUser
$ sudo -k -u otherUser /bin/true
[sudo] password for ramo:
$ sudo -k /bin/true
[sudo] password for ramo:
Fedora 19 で sudo-1.8.6p7-1 を使用してテスト済み
答え2
'!' で否定できると思います。2行目を試してください
ramo ALL=(ALL) !/usr/bin/command