txt permiso denegado copiar como archivo linux ubuntu permissions google-compute-engine gcloud

copiar - permiso denegado linux terminal



`gcloud compute copy-files`: permiso denegado al copiar archivos (4)

Me está costando copiar archivos a mi Google Compute Engine. Estoy usando un servidor Ubuntu en Google Compute Engine.

Estoy haciendo esto desde mi terminal OS X y ya estoy autorizado a usar gcloud .

local:$ gcloud compute copy-files /Users/Bryan/Documents/Websites/gce/index.php example-instance:/var/www/html --zone us-central1-a Warning: Permanently added ''<IP>'' (RSA) to the list of known hosts. scp: /var/www/html/index.php: Permission denied ERROR: (gcloud.compute.copy-files) [/usr/bin/scp] exited with return code [1].


inserte root@ antes del nombre de la instancia:

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


Utilizo un script bash para copiar desde mi máquina local al directorio grabable en la máquina GCE remota; luego, usando ssh mover los archivos.

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

También necesita establecer GCE_USER y 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"

En mi caso, no quiero desactivar el directorio de destino ya que esto causa otros problemas con otros scripts ...


La razón por la que esto no funciona es porque su nombre de usuario no tiene permisos en la instancia de GCE VM y, por lo tanto, no puede escribir en /var/www/html/ .

Tenga en cuenta que dado que esta pregunta es acerca de las máquinas virtuales de Google Compute Engine, no puede SSH directamente a una máquina virtual como root , ni puede copiar archivos directamente como root , por la misma razón: gcloud compute copy-files usa scp que depende de ssh para la autenticación.

Soluciones posibles:

  1. (también sugerido por Faizan en los comentarios) esta solución requerirá dos pasos cada vez

    1. use gcloud compute copy-files para transferir archivos / directorios donde su usuario puede escribir, p. ej., /tmp o /home/$USER

    2. inicie sesión en la máquina virtual GCE a través de gcloud compute ssh o mediante el botón SSH en la consola y copie con sudo para obtener los permisos adecuados:

      # note: sample command; adjust paths appropriately

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

  2. esta solución es un paso con algunos trabajos previos de preparación:

    1. configuración por única vez: proporcione su nombre de usuario acceso de escritura a /var/www/html directamente; Esto se puede hacer de varias maneras; aquí hay un enfoque:

      # make the HTML directory owned by current user, recursively

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

    2. ahora puede ejecutar la copia en un solo paso:

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