SUDOにはttyが必要です。

SUDOにはttyが必要です。

Amazon Linux 2018.03には、権限のないユーザーとして実行され、sudoを呼び出してコマンドを実行するプロセスがあります。次のメッセージを受け取りました。

sudo: sorry, you must have a tty to run sudo

権限のないユーザー(xymon)がパスワードなしで関連コマンドを実行できるようにする

Cmnd_Alias YUM = /usr/bin/yum
xymon   ALL=(ALL)               NOPASSWD: YUM

このコマンドは、次の行を使用してローカルのxymonクライアントプロセスで実行されるPerlスクリプトから呼び出されます。

my $YumCmd  = 'sudo yum check-update  2>&1' ;
@Lines = `$YumCmd` ;

/etc/sudoersでtty要件を無効にする必要がありました。

Defaults    !requiretty

不運。設定要件は含まれていません。

xymon ユーザーとして sudo -ll は次のようになります。

Matching Defaults entries for xymon on this host:
!visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
_XKB_CHARSET XAUTHORITY", !requiretty, secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin, requiretty, !visiblepw, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME
LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", !authenticate

User xymon may run the following commands on this host:

Sudoers entry:
RunAsUsers: ALL
Commands:
    NOPASSWD: /usr/bin/yum

私はそれがrequiretty出力に表示されるのを見ましたが、Defaults !requiretty私のディレクティブによって無視されないようです。Defaults !requirettysudoersファイルの最後にディレクティブを配置し、これがどこから来たのかわかりませんrequirettysudo -ll

SSHで擬似ttyを使用するには、次のコマンドを使用できます。

my $YumCmd  = 'ssh -tt -i ~/.ssh/id_rsa localhost sudo yum check-update  2>&1' ;

多くのサーバーでこのスクリプト(Xymonスクリプト)を実行するために必要な広範な設定を考慮すると、これは良いオプションではありません。 sudoと連携させる方法について提案がありますか?それともバグですか?

答え1

問題が解決しました。requiretty私のLDAPに含めました。

cn=defaults,OU=SUDOerssudoOptionがrequiretty次のように変更され、!requirettyすべてがうまく機能します。

!requiretty今は影響を受けるユーザーに制限します。

関連情報