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


44

スクリプト内でsudoを実行できるようにrequirettyを無効にしますが、すべてではなく1つのコマンドに対してのみ無効にします。sudoers構成内で可能ですか?

回答:


55

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

31

このようなもの:

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

これは機能する可能性/etc/sudoersがあり/etc/sudoers.d/ますが、ファイルでは機能しないようです
-8bitjunkie

私にとって、この編集は/etc/sudoers.d/ファイルに追加されたときに機能しました。CentOSの7.1
ジョンERCK

を使用する場合、私にとっては機能しません/etc/sudoers.d/。CentOS 7.5 :(
Stefan Lasiewski

4

のファイルを使用するとうまく機能することがわかりました/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/01buildDefaults:行を変更して削除した後、次のようになります。

ssh host sudo -n /bin/date
sudo: sorry, you must have a tty to run sudo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.