GNU/Linux >> Znalost Linux >  >> Linux

`gcloud compute copy-files`:oprávnění odepřeno při kopírování souborů

Měl jsem stejný problém a nepodařilo se mi to pomocí metod navržených v ostatních odpovědích. To, co nakonec fungovalo, bylo výslovně odeslat mého „uživatele“ při kopírování souboru, jak je uvedeno v oficiální dokumentaci. Důležitou součástí je "[email protected]" v

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

V mém případě jsem mohl zpočátku přenášet soubory zadáním:

gcloud compute scp instance_name:~/file_to_copy /local_dir

ale poté, co jsem dostal povolení odepřeno, zprovoznil jsem to tak, že jsem místo toho napsal:

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

kde v mém případě bylo uživatelské jméno to, se kterým jsem byl přihlášen do Google Cloud.


vložte [email protected] před názvem instance:

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

Ke kopírování z místního počítače do zapisovatelného adresáře na vzdáleném počítači GCE používám bash skript; pak pomocí ssh přesuňte soubory.

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

Musíte také nastavit GCE_USER a 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" 

V mém případě nechci chown cílový adresář, protože to způsobuje další problémy s jinými skripty ...


Důvodem, proč to nefunguje, je, že vaše uživatelské jméno nemá oprávnění k instanci virtuálního počítače GCE, a proto nemůže zapisovat do /var/www/html/ .

Poznámka že jelikož se tato otázka týká virtuálních počítačů Google Compute Engine, nemůžete SSH přímo na virtuální počítač jako root , ani nemůžete kopírovat soubory přímo jako root , ze stejného důvodu:gcloud compute copy-files používá scp který se opírá o ssh pro ověření.

Možná řešení:

  1. (také navrhl Faizan v komentářích) toto řešení bude vyžadovat vždy dva kroky

    1. použijte gcloud compute copy-files pro přenos souborů/adresářů, do kterých může uživatel zapisovat, např. /tmp nebo /home/$USER

    2. přihlaste se k virtuálnímu počítači GCE pomocí gcloud compute ssh nebo prostřednictvím SSH tlačítko na konzole a zkopírujte pomocí sudo získat správná oprávnění:

      # note: sample command; adjust paths appropriately

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

  2. toto řešení je jedním krokem s několika předchozími přípravnými pracemi:

    1. jednorázové nastavení:udělte svému uživatelskému jménu přístup pro zápis na /var/www/html přímo; to lze provést několika způsoby; zde je jeden přístup:

      # make the HTML directory owned by current user, recursively

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

    2. nyní můžete spustit kopii v jednom kroku:

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


Linux
  1. Chyba „530:oprávnění odepřeno“, když se uživatel přihlásí k serveru vsftpd přes ftp

  2. Povolení odepřeno při klonování úložiště git

  3. povolení docker.sock odepřeno

  1. Oprávnění odepřeno při přístupu ke sdílené složce VirtualBox, když je členem skupiny vboxsf

  2. Proč se mi při spuštění ssh-add odepírá oprávnění?

  3. oprávnění odepřeno pro soubor autorizovaný_klíč

  1. Jak mohu zkopírovat soubory ze serveru Google Cloud Compute Server do svého místního počítače

  2. chyba připojení 13 =Oprávnění odepřeno

  3. Rekurzivní kopírování skrytých souborů - Linux