GNU/Linux >> Belajar Linux >  >> Linux

`gcloud compute copy-files`:izin ditolak saat menyalin file

Saya memiliki masalah yang sama dan tidak berhasil menggunakan metode yang disarankan di jawaban lain. Apa yang akhirnya berhasil adalah mengirimkan "pengguna" saya secara eksplisit saat menyalin file seperti yang ditunjukkan dalam dokumentasi resmi. Bagian yang penting adalah "[email protected]" di

gcloud compute scp [[[email protected]]INSTANCE:]SRC [[[[email protected]]INSTANCE:]SRC …] [[[email protected]]INSTANCE:]DEST

Dalam kasus saya, saya awalnya dapat mentransfer file dengan mengetik:

gcloud compute scp instance_name:~/file_to_copy /local_dir

tetapi setelah saya mendapat izin ditolak, saya membuatnya berfungsi dengan mengetik:

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

di mana nama pengguna dalam kasus saya adalah yang saya gunakan untuk masuk ke Google Cloud.


masukkan [email protected] sebelum nama instance:

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

Saya menggunakan skrip bash untuk menyalin dari mesin lokal saya ke direktori yang dapat ditulis pada mesin GCE jarak jauh; lalu gunakan ssh pindahkan file.

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

Anda juga perlu menyetel GCE_USER dan 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" 

Dalam kasus saya, saya tidak ingin mengunyah dir target karena hal ini menyebabkan masalah lain dengan skrip lain ...


Alasan ini tidak berhasil adalah karena nama pengguna Anda tidak memiliki izin pada instance VM GCE sehingga tidak dapat menulis ke /var/www/html/ .

Catatan bahwa karena pertanyaan ini tentang VM Google Compute Engine, Anda tidak dapat melakukan SSH langsung ke VM sebagai root , Anda juga tidak dapat menyalin file secara langsung sebagai root , untuk alasan yang sama:gcloud compute copy-files menggunakan scp yang mengandalkan ssh untuk autentikasi.

Solusi yang memungkinkan:

  1. (juga disarankan oleh Faizan di komentar) solusi ini membutuhkan dua langkah setiap saat

    1. gunakan gcloud compute copy-files untuk mentransfer file/direktori tempat pengguna Anda dapat menulis, misalnya, /tmp atau /home/$USER

    2. masuk ke VM GCE melalui gcloud compute ssh atau melalui SSH tombol di konsol dan salin menggunakan sudo untuk mendapatkan izin yang tepat:

      # note: sample command; adjust paths appropriately

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

  2. solusi ini adalah satu langkah dengan beberapa pekerjaan persiapan sebelumnya:

    1. penyiapan satu kali:beri nama pengguna Anda akses tulis ke /var/www/html secara langsung; Hal ini dapat dilakukan dengan beberapa cara; inilah satu pendekatan:

      # make the HTML directory owned by current user, recursively

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

    2. sekarang Anda dapat menjalankan salinan dalam satu langkah:

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


Linux
  1. Mempercepat Penyalinan 1000000 File Kecil?

  2. banyak (Izin ditolak) di catalina.out

  3. Izin ditolak saat mengkloning repositori git

  1. Izin ditolak saat mengakses folder bersama VirtualBox saat menjadi anggota grup vboxsf

  2. Menyalin file tersembunyi secara rekursif - Linux

  3. tcpdump:out.pcap:Izin ditolak

  1. Cara Menjaga Kepemilikan Dan Izin File Tetap Utuh Saat Menyalin File Atau Direktori

  2. Kapan File yang Dapat Dieksekusi Tidak?

  3. Izin main.cf POSTFIX ditolak