スクリプト内でSudoを実行できるようにrequirettyを無効にしたいのですが、すべてではなく1つのコマンドに対してのみ無効にしたいと思います。 sudoers構成内でそれは可能ですか?
特定のユーザーまたは特定のコマンド(または特定のrun-as-userまたはHost)のrequiretty
などのオプションのデフォルト設定をオーバーライドできますが、特定のコマンドを特定のコマンドとして実行する場合はオーバーライドできませんユーザー。
たとえば、requiretty
がcompile-defaultオプションで設定されているとすると、次のsudoers
ファイルにより、artbristol
とbob
の両方が/path/to/program
をrootとして実行できるようになりますスクリプト。 artbristol
はパスワードを必要としませんが、bob
はパスワードを入力する必要があります(おそらくtty_tickets
がオフで、bob
が最近一部の端末でパスワードを入力しました)。
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
このようなもの:
myuser ALL=(ALL) NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser !requiretty
/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