GNU/Linux >> LINUX-Kenntnisse >  >> Linux

„gcloud compute copy-files“:Berechtigung beim Kopieren von Dateien verweigert

Ich hatte das gleiche Problem und konnte es mit den in den anderen Antworten vorgeschlagenen Methoden nicht zum Laufen bringen. Was schließlich funktionierte, war, meinen "Benutzer" beim Kopieren der Datei explizit einzusenden, wie in der offiziellen Dokumentation angegeben. Der wichtige Teil ist "[email protected]" in

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

In meinem Fall konnte ich zunächst Dateien übertragen, indem ich Folgendes eingab:

gcloud compute scp instance_name:~/file_to_copy /local_dir

aber nachdem mir die Erlaubnis verweigert wurde, funktionierte es, indem ich stattdessen eintippte:

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

wobei der Benutzername in meinem Fall der war, mit dem ich bei Google Cloud angemeldet war.


[email protected] einfügen vor dem Instanznamen:

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

Ich verwende ein Bash-Skript, um von meinem lokalen Computer in ein beschreibbares Verzeichnis auf dem entfernten GCE-Computer zu kopieren. dann verschieben Sie die Dateien mit ssh.

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

Sie müssen auch GCE_USER und GCE_INSTANCE

festlegen
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" 

In meinem Fall möchte ich das Zielverzeichnis nicht ändern, da dies andere Probleme mit anderen Skripten verursacht ...


Dies funktioniert nicht, weil Ihr Benutzername keine Berechtigungen für die GCE-VM-Instanz hat und daher nicht in /var/www/html/ schreiben kann .

Hinweis Da es sich bei dieser Frage um Google Compute Engine-VMs handelt, können Sie als root nicht direkt eine SSH-Verbindung zu einer VM herstellen , noch können Sie Dateien direkt als root kopieren , aus dem gleichen Grund:gcloud compute copy-files verwendet scp die sich auf ssh stützt zur Authentifizierung.

Mögliche Lösungen:

  1. (auch von Faizan in den Kommentaren vorgeschlagen) Diese Lösung erfordert jedes Mal zwei Schritte

    1. Verwenden Sie gcloud compute copy-files um Dateien/Verzeichnisse zu übertragen, in die Ihr Benutzer schreiben kann, z. B. /tmp oder /home/$USER

    2. Melden Sie sich über gcloud compute ssh bei der GCE-VM an oder über SSH auf der Konsole anklicken und mit sudo kopieren um die richtigen Berechtigungen zu erhalten:

      # note: sample command; adjust paths appropriately

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

  2. Diese Lösung ist ein Schritt mit einigen Vorarbeiten:

    1. Einmalige Einrichtung:Geben Sie Ihrem Benutzernamen Schreibzugriff auf /var/www/html direkt; dies kann auf verschiedene Weise erfolgen; Hier ist ein Ansatz:

      # make the HTML directory owned by current user, recursively

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

    2. Jetzt können Sie die Kopie in einem Schritt ausführen:

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


Linux
  1. So bleiben Eigentums- und Dateiberechtigungen beim Kopieren von Dateien oder Verzeichnissen erhalten

  2. eine Menge (Erlaubnis verweigert) in catalina.out

  3. Berechtigung beim Zugriff auf den freigegebenen VirtualBox-Ordner verweigert, wenn Mitglied der vboxsf-Gruppe

  4. Warum wird mir beim Ausführen von ssh-add die Berechtigung verweigert?

  5. Berechtigung für die Datei „authorized_key“ verweigert

Kopieren von Dateien unter Linux

Rsync zeigt Fortschrittsbalken beim Kopieren von Dateien unter Linux an

docker.sock-Berechtigung verweigert

Unerwartete Exec-Berechtigung von mmap, wenn Assembly-Dateien im Projekt enthalten sind

tcpdump:out.pcap:Zugriff verweigert

POSTFIX main.cf-Berechtigung verweigert