GNU/Linux >> Linux Esercitazione >  >> Linux

`gcloud compute copy-files`:autorizzazione negata durante la copia dei file

Ho avuto lo stesso problema e non sono riuscito a farlo funzionare utilizzando i metodi suggeriti nelle altre risposte. Ciò che alla fine ha funzionato è stato inviare esplicitamente il mio "utente" durante la copia del file come indicato nella documentazione ufficiale. La parte importante è "[email protected]" in

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

Nel mio caso potrei inizialmente trasferire i file digitando:

gcloud compute scp instance_name:~/file_to_copy /local_dir

ma dopo aver ottenuto il permesso negato, l'ho fatto funzionare digitando invece:

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

dove il nome utente nel mio caso era quello con cui avevo effettuato l'accesso a Google Cloud.


inserire [email protected] prima del nome dell'istanza:

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

Uso uno script bash per copiare dalla mia macchina locale alla directory scrivibile sulla macchina GCE remota; poi usando ssh sposta i file.

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

Devi anche impostare GCE_USER e 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" 

Nel mio caso non voglio chown la directory di destinazione in quanto ciò causa altri problemi con altri script ...


Il motivo per cui questo non funziona è che il tuo nome utente non dispone delle autorizzazioni sull'istanza GCE VM e quindi non può scrivere su /var/www/html/ .

Nota che poiché questa domanda riguarda le VM di Google Compute Engine, non puoi accedere tramite SSH direttamente a una VM come root , né puoi copiare i file direttamente come root , per lo stesso motivo:gcloud compute copy-files utilizza scp che si basa su ssh per l'autenticazione.

Possibili soluzioni:

  1. (suggerito anche da Faizan nei commenti) questa soluzione richiederà due passaggi ogni volta

    1. usa gcloud compute copy-files per trasferire file/directory in cui l'utente può scrivere, ad esempio /tmp o /home/$USER

    2. accedere alla VM GCE tramite gcloud compute ssh o tramite SSH sulla console e copia usando sudo per ottenere le autorizzazioni appropriate:

      # note: sample command; adjust paths appropriately

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

  2. questa soluzione è un passaggio con alcuni lavori di preparazione precedenti:

    1. configurazione una tantum:dai al tuo nome utente accesso in scrittura a /var/www/html direttamente; Questo può essere fatto in diversi modi; ecco un approccio:

      # make the HTML directory owned by current user, recursively

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

    2. ora puoi eseguire la copia in un solo passaggio:

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


Linux
  1. Velocizzare la copia di 1000000 piccoli file?

  2. un sacco di (Autorizzazione negata) in catalina.out

  3. Autorizzazione exec imprevista da mmap quando i file di assemblaggio sono inclusi nel progetto

  4. Perché ricevo Autorizzazione negata quando eseguo ssh-add?

  5. autorizzazione negata sul file authorized_key

Copiare file in Linux

Rsync Mostra la barra di avanzamento durante la copia di file in Linux

Autorizzazione docker.sock negata

Autorizzazione negata quando si accede alla cartella condivisa di VirtualBox quando si è membri del gruppo vboxsf

errore di montaggio 13 =Autorizzazione negata

Copia ricorsiva di file nascosti - Linux