回答:
requiretty
特定のユーザーまたは特定のコマンド(または特定のrun-as-userまたはホスト)などのオプションのデフォルト設定をオーバーライドできますが、特定のユーザーとして実行された場合の特定のコマンドはオーバーライドできません。
たとえばrequiretty
、compile-defaultオプションで設定されていると仮定すると、次のsudoers
ファイルは両方artbristol
を許可し、スクリプトからrootとしてbob
実行でき/path/to/program
ます。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/
ファイルに追加されたときに機能しました。CentOSの7.1
/etc/sudoers.d/
。CentOS 7.5 :(
のファイルを使用するとうまく機能することがわかりました/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
/etc/sudoers
があり/etc/sudoers.d/
ますが、ファイルでは機能しないようです