58 votes

Impossible de modifier les permissions de fichiers sur Ubuntu Bash pour Windows 10

J'essayais d'utiliser une instance ssh et j'ai reçu l'erreur suivante, ce qui est étrange puisque j'ai essayé de changer la permission en utilisant chmod mais cela n'a pas semblé fonctionner car les permissions étaient encore 777 :

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for 'privkey.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "privkey.pem": bad permissions
Permission denied (publickey).

J'ai ouvert git bash et j'ai pu me connecter en SSH à mon instance sans aucun problème, et les permissions n'étaient pas 777 également.

88voto

user87963 Points 31

Si vous faites référence à des fichiers dans le système de fichiers Windows, ils ne conservent pas, par défaut, les permissions Linux. Cependant, il existe un moyen de l'activer. Modifiez ou créez (en utilisant sudo ) /etc/wsl.conf et ajoutez ce qui suit :

[automount]
options = "metadata"

Arrêter toutes les instances WSL et redémarrer une instance, et toute chmod Les changements sont maintenant conservés.

25voto

La façon correcte de gérer cela :

  1. Créer /etc/wsl.conf avec les éléments suivants :

    [automount]
    enabled  = true
    root     = /mnt/
    options  = "metadata,umask=22,fmask=11"

    Pour comprendre la signification de chaque paramètre ci-dessus, veuillez vous référer à diese article sur MSDN

  2. Fermez tous les terminaux WSL et ouvrez-en un nouveau.

  3. Redémarrer votre machine (comme indiqué par certains commentaires)

Vous êtes maintenant prêt à modifier les autorisations d'un fichier dans Windows à partir de /mnt/c/ sera reflété, et monté, correctement dans WSL au démarrage via la commande metadata option.

22voto

erobertc Points 535

La clé privée se trouve-t-elle sur votre système de fichiers Windows (sous /mnt/) ? Vous ne pouvez pas modifier les permissions des fichiers sur le système de fichiers de Windows en utilisant chmod sur Bash sur Ubuntu sur Windows. Vous devez copier la clé privée dans votre répertoire personnel WSL (~) et le faire là.

Une discussion ici : https://github.com/Microsoft/WSL/issues/81

7voto

Salvioner Points 171

J'ai créé un alias qui est chargé dans mon fichier ~/.bashrc et permet de démonter/remonter le fichier C:/ conduire dans le /mnt/c/ avec les permissions ``métadonnées''.

alias win-chmod="cd ~ && sudo umount /mnt/c && sudo mount -t drvfs C: /mnt/c -o metadata && cd -"

Cela me permet d'activer uniquement chmod quand j'en ai besoin, en évitant les modifications non désirées du système de fichiers monté. Il s'agit juste d'invoquer

$ ls -l | grep myfile
-rwxrwxrwx 1 root root          0 Dec 12 16:34 myfile.txt
$ win-chmod
/mnt/c/Users/myself/Documents/myfolder
$ chmod 666 myfile.txt
$ ls -l | grep myfile
-rw-rw-rw- 1 root root          0 Dec 12 16:34 myfile.txt

2voto

megar Points 186

Copiez le fichier clé n'importe où dans le système Linux Sub, puis changez la permission et connectez-vous.

cp /mnt/path/to/key/file /home/$USER/

chmod 400 /home/$USER/key_file_name.pem

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X