ユーザーとして実行されるファブリック展開スクリプトを作成していますMyAppUser
(ホスト「MyAppUser@myapp.mycompany.com」、sshキーが機能しているため、パスワードは必要ありません)。手順の 1 つは、ファイルを にコピーし/etc/init
、アクセス許可を変更して、将来のデプロイMyAppUser
でそのファイルを上書きできるようにすることです。
MyAppUser
sudoer ではありません。そうであってはなりません。コピーを実行するには、/etc/init
昇格した特権が必要です...そのため、ユーザーにユーザー名の入力を求めて実行するのに行き詰まっています:
run('su %s -c "sudo cp /home/myappuser/git/myapp/myapp.conf /etc/init"')
これは機能しますが、同じパスワードを 2 回入力するように求められます。(私はsudoerです)。
ここには多くの質問がありますが、中心的なものは次のとおりです。
sudo("sudo cp /home/myappuser/git/myapp/myapp.conf /etc/init", user='Me)
期待どおりに動作しないのはなぜですか? 最初の sudo (ファブリックによって実行) が無視されているようuser
です。- root 権限が必要なコマンドを、sudoer である別のユーザーとして実行するより良い方法はありますか? (ファブリックの質問ではなく、Bash の質問です)。