GNU/Linux >> Tutoriels Linux >  >> Linux

`gcloud compute copy-files` :autorisation refusée lors de la copie de fichiers

J'ai eu le même problème et je ne l'ai pas fait fonctionner en utilisant les méthodes suggérées dans les autres réponses. Ce qui a finalement fonctionné a été d'envoyer explicitement mon "utilisateur" lors de la copie du fichier comme indiqué dans la documentation officielle. La partie importante étant le "[email protected]" dans

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

Dans mon cas, je pourrais initialement transférer des fichiers en tapant :

gcloud compute scp instance_name:~/file_to_copy /local_dir

mais après avoir obtenu l'autorisation refusée, je l'ai fait fonctionner en tapant à la place :

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

où le nom d'utilisateur dans mon cas était celui avec lequel j'étais connecté à Google Cloud.


insérer [email protected] avant le nom de l'instance :

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

J'utilise un script bash pour copier depuis ma machine locale vers un répertoire inscriptible sur la machine GCE distante ; puis en utilisant ssh déplacer les fichiers.

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

Vous devez également définir GCE_USER et 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" 

Dans mon cas, je ne veux pas chown le répertoire cible car cela cause d'autres problèmes avec d'autres scripts ...


La raison pour laquelle cela ne fonctionne pas est que votre nom d'utilisateur ne dispose pas d'autorisations sur l'instance de VM GCE et ne peut donc pas écrire dans /var/www/html/ .

Remarque que puisque cette question concerne les VM Google Compute Engine, vous ne pouvez pas vous connecter directement en SSH à une VM en tant que root , vous ne pouvez pas non plus copier les fichiers directement en tant que root , pour la même raison :gcloud compute copy-files utilise scp qui repose sur ssh pour l'authentification.

Solutions possibles :

  1. (également suggéré par Faizan dans les commentaires) cette solution nécessitera à chaque fois deux étapes

    1. utilisez gcloud compute copy-files pour transférer des fichiers/répertoires où votre utilisateur peut écrire, par exemple, /tmp ou /home/$USER

    2. connectez-vous à la VM GCE via gcloud compute ssh ou via le SSH bouton sur la console et copiez en utilisant sudo pour obtenir les autorisations appropriées :

      # note: sample command; adjust paths appropriately

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

  2. cette solution est une étape avec un travail de préparation préalable :

    1. configuration unique :accordez à votre nom d'utilisateur un accès en écriture à /var/www/html directement; cela peut se faire de plusieurs manières; voici une approche :

      # make the HTML directory owned by current user, recursively

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

    2. vous pouvez désormais exécuter la copie en une seule étape :

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


Linux
  1. Accélérer la copie de 1 000 000 petits fichiers ?

  2. Lorsque les fichiers exécutables ne le sont pas ?

  3. Autorisation refusée lors du clonage du dépôt git

  4. autorisation docker.sock refusée

  5. Copie récursive de fichiers cachés - Linux

Copier des fichiers sous Linux

Comment conserver la propriété et les autorisations de fichiers intactes lors de la copie de fichiers ou de répertoires

Rsync Afficher la barre de progression lors de la copie de fichiers sous Linux

autorisation refusée sur le fichier authorized_key

Comment puis-je copier des fichiers d'un serveur Google Cloud Compute sur ma machine locale ?

erreur de montage 13 =Autorisation refusée