web-dev-qa-db-ja.com

Jenkinsエラーを回避するためのベストプラクティス:Sudo:no tty present and no askpass program specified

JenkinsからSudoコマンドを実行すると、次のエラーが表示されます:Sudo: no tty present and no askpass program specified

[〜#〜] nopasswd [〜#〜]エントリを/etc/sudoersファイルに追加することでこれを解決できることを理解しています。これにより、ユーザーjenkinsパスワードを必要とせずにコマンドを実行します。次のようなエントリを追加できます。

%jenkins ALL=(ALL)NOPASSWD:/home/me/dir/script.sh

...しかし、これは次の問題につながります: https://stackoverflow.com/questions/17414330/how-to-avoid-specifying-full-path-in-sudoers-file

次のようなエントリを追加できます。

%jenkins ALL=NOPASSWD: ALL

...しかしこれにより、ユーザーjenkinsは[〜#〜] all [〜#〜]コマンドのパスワードプロンプトを回避できます。これは少し安全ではないようです。ここに自分の選択肢が何なのか興味があり、ベストプラクティスがあれば検討する必要があります。

26
s g

No tty(requiretty insudoers)は本当の問題です。

基本的に、/ etc/sudoersファイルの次の行をコメントアウトします。

#Defaults    requiretty
#Defaults   !visiblepw

上記は、Unix&Linux Stack Exchangeサイトのこの質問に対する this answer から取られています。

12
Electrawn

できることの1つは、Jenkinsに「run.sh」などのスクリプトを実行させ、このスクリプト内からメイクファイルを起動して、メイクファイル内にSudoコマンドがないことを確認することです。

少し面倒ですが、少なくともセキュリティ設定を変更するリスクはありません。

4
serup