0

別のユーザーのホームにあるデフォルト ユーザー (Ubuntu) を使用して、Capistrano を使用して AWS-EC2 インスタンスに Rails アプリをデプロイしようとしていますが、「アクセス許可が拒否されました」というエラーが表示されました。これは私のコードです:

server "9.9.9.9", :web, :app, :db, primary: true

set :application, "some_app"
set :user, "ubuntu"
set :keep_releases, 3
set :location, "9.9.9.9"
ssh_options[:keys] = ["~/Keys/serverkey.pem"]
ssh_options[:forward_agent] = true
default_run_options[:pty] = true
set :use_sudo, false

task :hello do
  run "echo 'Hello World' > /home/other_user/i_was_here.txt"
end

そして、これは出力です:

$ cap hello
  * 2013-03-22 14:11:29 executing `hello'
  * executing "echo 'Hello World' > /home/other_user/i_was_here.txt"
    servers: ["9.9.9.9"]
    [9.9.9.9] executing command
 ** [out :: 9.9.9.9] sh: cannot create /home/other_user/i_was_here.txt: Permission denied
    command finished in 798ms
failed: "sh -c 'echo '\\''Hello World'\\'' > /home/other_user/i_was_here.txt'" on 9.9.9.9

何が間違っている可能性がありますか?目的は別のユーザーのためにRailsアプリをデプロイすることなので、いくつか疑問があります:

  1. Rails アプリを AWS-EC2 インスタンスに他のユーザーと直接デプロイする方法はありますか?
  2. #1 の答えが「いいえ」の場合、Rails アプリをデフォルト ユーザーの Ubuntu で他のユーザーにデプロイする正しい方法は何ですか? (将来、他のユーザーがアプリにアクセスしようとしたときに権限に問題が発生しないようにするため)

サーバーでは、各ユーザーのストレージと帯域幅を取得したいため、多くのユーザーが管理されています。そのため、この方法でそれを行い、今日まで Capistrano から始めています。

前もって感謝します。

4

4 に答える 4

1

皆様、ご回答ありがとうございます。私がしたことは、この手順に従って、特定のユーザーで Capistrano に接続することでした。

http://utkarshsengar.com/2011/01/manage-multiple-accounts-on-1-amazon-ec2-instance/

于 2013-03-25T16:01:15.603 に答える
1

通常は、アプリケーションを実行/維持する必要があるユーザーとしてデプロイします。それ以外の場合は、両方のユーザーがアクセス許可をいじっていないことを本当に確認する必要があります。

このシナリオの理由は、資格情報を共有したくないということですか? .ssh/authorized_keysその場合は、すべてのユーザーに追加される特別なデプロイ ssh キーの使用を検討してください。

于 2013-03-22T21:52:11.670 に答える
1

構成ファイルから行を削除ssh_options[:forward_agent] = trueします。同じ問題がありましたが、この行を削除しましたが、現在は正常に機能しています

于 2013-03-25T07:20:10.280 に答える
0

sudo を使用するか、/home/other_user の権限を変更しない限り、ubuntu ユーザーには other_user のホーム ディレクトリにアクセスする権限がありません。

アプリを other_user として実行する場合の最善の方法は、カピストラーノを other_user としてデプロイするように構成することです。公開 ssh キーを /home/other_user/.ssh/authorized_keys に追加する必要があります。アプリを ubuntu として実行する場合は、/home/ubuntu にデプロイします。

于 2013-03-23T00:13:48.363 に答える