7

Capistranoを介してリモートで実行されるコマンドにsudoを使用したくありません。具体的には、を実行するcap deploy:setupと、最初のコマンドでsudoパスワードの入力を求められますmkdir。deploy.rbファイルに追加set :use_sudo, falseしましたが、違いはありませんでした。

私はかなり完全なdeploy.rbファイルから始めましたが、問題が発生し始めたらそれを削り落としました。use_sudoこれがまだ尊重されていないことを示している私の最小バージョンです:

# App Definitions

set :domain, '[server-ip]'
role :app, domain
role :web, domain
role :db, domain, :primary => true

set :user, "my_app"
set :use_sudo, false

task :sudo_test do
  run "#{try_sudo} whoami"
end

実行cap sudo_testすると、sudoパスワードの入力を求められます。私はここで何が欠けていますか(私がすでに引き出した髪以外に)?

Googleの調査結果

https://groups.google.com/forum/?fromgroups#!topic/capistrano/QNYnvW8obrg

同様の問題を抱えている誰かとのスレッド。スレッドに結論/解決策は記載されていません。

4

2 に答える 2

12

この問題に遭遇し、私のようなばかである他の人のために。誤って引用しないように注意してください。私が持っていた:

set :use_sudo, "false"

に切り替えたとき

set :use_sudo, false

ほとんどのものは私が期待したように働き始めました。YWCA Helloが指摘しているように、use_sudo設定を無視するコマンドがまだあります。ただし、正しく設定することを忘れないでください。

于 2013-03-08T23:32:14.100 に答える
5

どうやら、特定のcapistranoタスクでsudo機能を無効にすることはできません。サーバー上の非特権ユーザーが特定のタスクを実行できないようにする必要があることを前提としています。

問題のコマンドはですmkdir。親フォルダーが許可されているフォルダーであれば、特権のないユーザーがこのコマンドを実行できるはずだと私は主張します。また、ユーザーは実際にはrootなどの特権ユーザーである可能性があることも主張します。ベストプラクティス?必ずしも。特定の展開の理由の範囲内で、はい。

これが私の元の質問への回答へのリンクです:

https://github.com/capistrano/capistrano/issues/211#issuecomment-7667467

于 2012-08-13T16:53:30.693 に答える