ジェンキンスからsudoを呼び出す


8

abcsudoアクセスが制限されているユーザーがいるビルドマシンを1つ持っています。ソースコードをチェックアウトしてビルドスクリプトを実行すると、問題なく動作します。ビルドスクリプトにsudoは、「sudo:ttyが存在せず、askpassプログラムが指定されていません」と書かれていない呼び出しが含まれています。しかし、スレーブとして追加されたビルドマシンでJenkinsを使用して同じことを実行すると、「sudo:ttyが存在せず、askpassプログラムが指定されていません」と表示されます。

Default requirettyファイルでコメント化するという解決策が1つ見つかりました/etc/sudoers。しかし、私はこのファイルにアクセスできません。

この問題を解決するにはどうすればよいですか?


経由して実行しようとしているこのコマンドはsudo、パスワードを入力せずに実行できますか?パスワードを入力する必要がある場合、sudoはttyを要求します。
Patrick

はい、それはパスワードを入力せずに実行されます
Niraj 2014年

回答:


3

2つのオプションがありDefaults requirettyます。前述のように/ etc / sudoersの設定をコメント化するか、に疑似tty割り当て(-t)引数を使用しsshます。

jenkinsスクリプトで以下を試してください:

ssh -t 127.0.0.1 "sudo command"

あなたが持っている必要がありますが、ssh自分自身に構成された事前共有鍵を、既知のホストにエントリを追加するために、一度それを手動で実行し、その代わりに追加-o StrictHostKeyChecking=noの引数をするにはssh、これを無視します。


2

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)に。

理想的には(安全)、次のように指定できる特定のコマンドのみにroot権限を制限することです %admin ALL=(ALL) NOPASSWD:/path/to/program


2
それでもTTYが必要です。
オービットのライトネスレース2016年

0

ssh経由でコマンドを実行している場合は、「Exec in pty」オプションを確認する必要があります。 ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.