GNU/Linux >> Tutoriales Linux >  >> Linux

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

Tuve el mismo problema y no conseguí que funcionara usando los métodos sugeridos en las otras respuestas. Lo que finalmente funcionó fue enviar explícitamente mi "usuario" al copiar el archivo como se indica en la documentación oficial. La parte importante es "[email protected]" en

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

En mi caso, inicialmente podría transferir archivos escribiendo:

gcloud compute scp instance_name:~/file_to_copy /local_dir

pero después de que me denegaron el permiso, conseguí que funcionara escribiendo:

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

donde el nombre de usuario en mi caso era con el que había iniciado sesión en Google Cloud.


insertar [email protected] antes del nombre de la instancia:

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

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

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

También debe configurar 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 cortar el directorio de destino ya que esto causa otros problemas con otros scripts...


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

Nota que, dado que esta pregunta es sobre máquinas virtuales de Google Compute Engine, no puede usar SSH directamente en 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 se basa en ssh para la autenticación.

Posibles soluciones:

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

    1. usa gcloud compute copy-files para transferir archivos/directorios donde su usuario puede escribir, por ejemplo, /tmp o /home/$USER

    2. inicie sesión en la VM de GCE a través de gcloud compute ssh o a través de SSH en la consola y copiar usando 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 un trabajo de preparación previo:

    1. configuración única:otorga a tu 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


Linux
  1. Cómo mantener intactos los permisos de propiedad y archivo al copiar archivos o directorios

  2. ¿Acelerar la copia de 1000000 archivos pequeños?

  3. ¿Cuándo no lo son los archivos ejecutables?

  4. un montón de (Permiso denegado) en catalina.out

  5. Permiso denegado al clonar el repositorio de git

Copiar archivos en Linux

Rsync Mostrar barra de progreso al copiar archivos en Linux

¿Cómo puedo copiar archivos de un servidor de computación en la nube de Google a mi máquina local?

error de montaje 13 =Permiso denegado

tcpdump:out.pcap:Permiso denegado

Permiso POSTFIX main.cf denegado