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 !requiretty
sudoersファイルの最後にディレクティブを配置し、これがどこから来たのかわかりませんrequiretty
。sudo -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=SUDOers
sudoOptionがrequiretty
次のように変更され、!requiretty
すべてがうまく機能します。
!requiretty
今は影響を受けるユーザーに制限します。