sudoの後にリモートコマンドを実行します-Rundeckでsu anotheruser


0

私はRundeckの初心者であり、これに完全に驚いています。ジョブを実行しようとしていますが、シナリオの詳細を以下に示します。

  • Rundeckは、ユーザー「master」のノードServer(rundeckサーバー)とノードTarget(リモートSolarisホスト)の間のユーザーマスターに対してsshパスワードレス認証で構成されます
  • ノードターゲット/app/acme/stopApp.shで、ユーザーでスクリプトを実行したいappmanager
  • 通常、手動で、上記のスクリプトを実行する必要がある場合は、

    ssh master@server 
    sudo su - appmanager
    

    または単に

    ssh -t master@server 'sudo su - appmanager'
    

    パスワードなしで動作し、最後に実行されます(appmanagerとして)

    /app/acme/stopApp.sh
    

しかし、Rundeckを使用してこれらの手順をどのように再現できるかわかりません。私は、各ジョブラインのrundeckが新しいssh接続を使用するという以前のメッセージを読みました。そのため、以下のワークフローは常にメッセージで失敗します。

sudo: no tty present and no askpass program specified
Remote command failed with exit status 1

誰かがこの問題を解決するための情報を提供してくれます。

この機能がなければ、私の部署に少しのDevOpsを導入することはできません。

ユーザーガイドと管理者ガイドを読みましたが、このフォーラムでも簡単な例を見つけることができませんでした。

回答:


0

私はrundeckについて何も知らないので、大きなアドバイスをしてください。しかしno tty present、sudoからメッセージを受け取っている場合は、おそらく、このアカウントへのsudoの送信元はそうではありません。 sudoersファイルのNOPASSWORDディレクティブで許可されており、パスワードを入力する必要があります。また、ヘッドレス接続(つまりnotty)を確立しているため、このパスワードを読み取る場所が見つからなかったために失敗しています。

sudoersファイルをスキャンして、このsudo / loginの組み合わせに関連する行を見つけて再生できるかどうかを確認してください。

あまり起こりそうにないシナリオでは、rundeckは何らかの方法でsudoをオーバーライドする可能性がありますが、あまり期待していません。


0

問題は、/ etc / sudoersに「requiretty」があるということです。つまり、sudoコマンドを実行するにはttyが必要です。1つの修正方法は、マシン上の/ etc / sudoersにこれを追加することにより、特定のユーザーのこの要件を削除することです。

Defaults:someuser !requiretty

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