AIX 6.1サーバーがあり、sudo
bashスクリプトからリモートコマンドを実行する必要があります。
私のbashスクリプトを単純化すると、次のようになります。
TestSudo.sh
#!/usr/bin/bash
set -x
sudo env
sudo
パスワードなしでローカルでコマンドを実行できます。
[user@server]$ sudo env
VAR=VAL
...
スクリプトをローカルで実行できます。
[user@server]$ /tmp/testSudo.sh
+ sudo env
VAR=VAL
...
sudo
リモートホストで実行できます。
[user@client]$ ssh user@server sudo env
VAR=VAL
...
tty を使用してリモートホスト上でスクリプトを実行できます。
[user@client]$ ssh -t user@server /tmp/testSudo.sh
+ sudo env
VAR=VAL
...
ttyがないと、リモートホストでスクリプトを実行できません(そしてコンテキストに-tオプションを追加することもできません)。
[user@client]$ ssh user@server /tmp/testSudo.sh
+ sudo env
そこにかかっています。
答え1
端末なしで実行される場合、Sudoはパスワードクエリを処理するためにヘルパーが必要です。
SUDO_ASKPASS Specifies the path to a helper program used to read the
password if no terminal is available or if the -A option is specified.
通常、sshとsudoを介して接続するときにパスワードを入力する必要がありますが、端末は割り当てられず、エラーが報告されます。 AIXでは異なる場合があります。
sudo設定を確認し、すべてのリモートシステムでNOPASSWDを有効にします。正しい規則は次のとおりです(/ etc / sudoersの末尾に追加)。
user ALL= NOPASSWD:/tmp/testSudo.sh