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:
(también sugerido por Faizan en los comentarios) esta solución requerirá dos pasos cada vez
use
gcloud compute copy-files
para transferir archivos / directorios donde su usuario puede escribir, p. ej.,/tmp
o/home/$USER
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 consudo
para obtener los permisos adecuados:# note: sample command; adjust paths appropriately
sudo cp -r $HOME/html/* /var/www/html
esta solución es un paso con algunos trabajos previos de preparación:
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
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
ACTUALIZAR
gcloud compute copy-files
está en desuso .
Use en su lugar:
$ gcloud compute scp example-instance:~/REMOTE-DIR ~/LOCAL-DIR / --zone us-central1-a
Más información: https://cloud.google.com/sdk/gcloud/reference/compute/scp