Sudoアクセスが制限されているユーザーabc
を持つビルドマシンが1つあります。ソースコードをチェックアウトしてビルドスクリプトを実行すると、問題なく動作します。ビルドスクリプトには、「[sudo:ttyが存在せず、askpassプログラムが指定されていません]」と示されていないSudo
呼び出しが含まれています。しかし、スレーブとして追加されたビルドマシンでJenkinsを使用して同じことを実行すると、「Sudo:ttyが存在せず、askpassプログラムが指定されていません」と表示されます。
コメントアウトするという解決策が1つ見つかりましたDefault requiretty
ファイル内/etc/sudoers
。しかし、私はこのファイルにアクセスできません。
この問題を解決するにはどうすればよいですか?
2つのオプションがあります。前述のように、/ etc/sudoersのDefaults requiretty
設定をコメント化するか、ssh
に疑似tty割り当て(-t
)引数を使用します。
Jenkinsスクリプトで以下を試してください:
ssh -t 127.0.0.1 "Sudo command"
ssh
事前共有キーを自分で設定し、既知のホストにエントリを追加するために手動で1回実行する必要がありますが、ssh
に-o StrictHostKeyChecking=no
引数を追加して無視することもできますこの。
Sudo
がrootパスワードでプロンプトを表示しようとしているため、疑似ttyが割り当てられていないため、失敗します。
Rootとしてログインするか、_/etc/sudoers
_(または:_Sudo visudo
_)に次のルールを設定する必要があります。
_# Members of the admin group may gain root privileges.
%admin ALL=(ALL) NOPASSWD:ALL
_
次に、Jenkinsユーザーがadmin
グループ(またはwheel
)に属していることを確認します。
理想的には(安全)%admin ALL=(ALL) NOPASSWD:/path/to/program
として指定できる特定のコマンドのみにroot権限を制限することです