GNU/Linux >> Linux の 問題 >  >> Linux

「gcloud compute copy-files」:ファイルのコピー時に権限が拒否されました

私は同じ問題を抱えていて、他の回答で提案されている方法を使用しても機能しませんでした。最終的に機能したのは、公式ドキュメントに示されているように、ファイルをコピーするときに「ユーザー」を明示的に送信することでした。重要な部分は、

の "[email protected]" です。
gcloud compute scp [[[email protected]]INSTANCE:]SRC [[[[email protected]]INSTANCE:]SRC …] [[[email protected]]INSTANCE:]DEST

私の場合、最初に次のように入力してファイルを転送できました:

gcloud compute scp instance_name:~/file_to_copy /local_dir

しかし、許可が拒否された後、代わりに次のように入力して機能させました:

gcloud compute scp [email protected]_name:~/file_to_copy /local_dir

ここでのユーザー名は、Google Cloud へのログインに使用したものです。


[email protected] を挿入 インスタンス名の前:

local:$ gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.php [email protected]:/var/www/html --zone us-central1-a

bash スクリプトを使用して、ローカル マシンからリモート GCE マシンの書き込み可能なディレクトリにコピーします。次に、ssh を使用してファイルを移動します。

SRC="/cygdrive/d/mysourcedir"
TEMP="~/incoming"
DEST="/var/my-disk1/my/target/dir"

GCE_USER と GCE_INSTANCE も設定する必要があります

echo "=== Pushing data from $SRC to $DEST in two simple steps"
echo "=== 1) Copy to a writable temp directoy in user home"
gcloud compute copy-files "$SRC"/*.* "${GCE_USER}@${GCE_INSTANCE}:$TEMP"
echo "=== 2) Move with 'sudo' to destination"
gcloud compute ssh ${GCE_USER}@${GCE_INSTANCE} --command "sudo mv $TEMP/*.* $DEST" 

私の場合、他のスクリプトで別の問題が発生するため、ターゲット ディレクトリを chown したくありません ...


これが機能しない理由は、ユーザー名が GCE VM インスタンスに対する権限を持っていないため、/var/www/html/ に書き込めないためです。 .

注意 この質問は Google Compute Engine VM に関するものであるため、root として VM に直接 SSH 接続することはできません。 、ファイルを root として直接コピーすることもできません 、同じ理由で:gcloud compute copy-files scp を使用 ssh に依存する 認証用。

考えられる解決策:

<オール>
  • (コメントで Faizan によっても提案されています) このソリューションには、毎回 2 つの手順が必要です

    <オール>
  • gcloud compute copy-files を使用 /tmp など、ユーザーが書き込み可能なファイル/ディレクトリを転送する または /home/$USER

  • gcloud compute ssh 経由で GCE VM にログインします または SSH 経由 コンソールのボタンをクリックし、sudo を使用してコピーします 適切な権限を取得するには:

    # note: sample command; adjust paths appropriately

    sudo cp -r $HOME/html/* /var/www/html

  • このソリューションは、いくつかの事前準備作業を伴う 1 つのステップです:

    <オール>
  • ワンタイム セットアップ:ユーザー名に /var/www/html への書き込みアクセス権を付与します 直接;これにはいくつかの方法があります。ここに 1 つのアプローチがあります:

    # make the HTML directory owned by current user, recursively

    sudo chown -R $USER /var/www/html

  • ワンステップでコピーを実行できるようになりました:

    gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.php example-instance:/var/www/html --zone us-central1-a


  • Linux
    1. 実行可能ファイルがない場合

    2. git リポジトリのクローン作成時に許可が拒否されました

    3. プロジェクトにアセンブリ ファイルが含まれている場合、mmap からの予期しない exec 権限

    1. マウント エラー 13 =許可が拒否されました

    2. 隠しファイルを再帰的にコピーする - Linux

    3. tcpdump:out.pcap:権限が拒否されました

    1. 1000000個の小さなファイルのコピーを高速化しますか?

    2. ユーザーが ftp 経由で vsftpd サーバーにログインすると、エラー「530:許可が拒否されました」

    3. POSTFIX main.cf 許可が拒否されました