sudoersで単一のコマンドの要件を無効にする方法は?

sudoersで単一のコマンドの要件を無効にする方法は?

私のスクリプトでsudoを使用できるようにrequirettyを無効にしたいのですが、すべてのコマンドに対して無効にするよりも、単一のコマンドに対して無効にすることをお勧めします。 sudoers設定でこれは可能ですか?

答え1

特定のユーザーや特定のコマンド(または特定の実行中のユーザーまたはホスト)などのオプションのデフォルト設定を上書きできますが、特定のユーザーとして実行される特定のrequirettyコマンドについては上書きできません。

たとえば、次のファイルはrequirettyコンパイルのデフォルトオプションに設定されていると仮定してスクリプトでrootとしてsudoers許可され実行されます。パスワードは必要なく、むしろパスワードを入力する必要があります(おそらく一部の端末で閉じられ、最近入力された可能性があります)。artbristolbob/path/to/programartbristolbobtty_ticketsbob

artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty

特定のパラメータを使用してコマンド設定を変更するには、コマンドエイリアスを使用する必要があります(これは構文制限です)。たとえば、次のスニペットはスクリプト内で実行できますが、artbristol他のパラメータでは実行できません。/path/to/program --option/path/to/program

Cmnd_Alias MYPROGRAM = /path/to/program --option  
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty

答え2

このような:

myuser    ALL=(ALL)    NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser        !requiretty

答え3

私はそれが私にとって効果的であることを知りました/etc/sudoers.d。確認するのはとても簡単でした。

まず、/etc/sudoers.d/01build以下を作成しました。

build    ALL=(ALL)    NOPASSWD:/bin/date
Defaults:build !requiretty

次に、動作しているかどうかをテストします。

ssh host sudo -n /bin/date
Mon Nov 16 16:04:27 CST 2015

/etc/sudoers.d/01buildその後、その行を修正して削除し、次のようにDefaults:なりました。

ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo

関連情報