36 votes

Pourquoi je ne peux pas faire de chmod dans Cygwin sous Windows 8 CP ?

Je n'arrive pas à obtenir la permission de groupe chmod dans Cygwin sous Windows 8, ce qui m'empêche de me connecter par ssh à un serveur à l'aide d'une clé ssh.

Avertissement de l'invite Bash : "Les permissions 0660 pour '/home/KeepZero/.ssh/id_rsa' sont trop ouvertes. Il est nécessaire que vos fichiers de clés privées ne soient PAS accessibles par d'autres personnes."

KeepZero@t400win8 ~
$ ls
test

KeepZero@t400win8 ~
$ ls -l
total 0
-rwxrwx--- 1 KeepZero KeepZero 0 Mar  4 15:07 test

KeepZero@t400win8 ~
$ chmod 700 test

KeepZero@t400win8 ~
$ ls -l test
-rwxrwx--- 1 KeepZero KeepZero 0 Mar  4 15:07 test

KeepZero@t400win8 ~
$ chmod 777 test

KeepZero@t400win8 ~
$ ls -l test
-rwxrwxrwx 1 KeepZero KeepZero 0 Mar  4 15:07 test

0 votes

Cela fonctionne pour moi. Quel type de système de fichiers utilisez-vous ?

0 votes

Ah, j'avais oublié que c'était sous Windows 8, alors oubliez mon commentaire. Le mieux est de le signaler à la liste de diffusion Cygwin, je pense.

70voto

Roi Danton Points 586

Faites un ls -al et vous verrez que vos fichiers n'appartiennent à aucun groupe (aucun).

Faites juste un chgrp Users * sur vos fichiers, et tout va bien à nouveau.

0 votes

Merci, ça a réglé le problème pour moi !

0 votes

Cela a réglé le problème pour moi aussi ! Merci beaucoup !

3 votes

Oui et n'oubliez pas de faire votre chmod 600 <file> ensuite

48voto

Robert Points 479

La solution de Roi Danton fonctionne, mais ne résout pas la cause première, et le problème se reproduira avec tout fichier créé par l'utilisateur dont vous voulez changer les permissions.

Pour régler le problème de façon permanente :

  1. Recherchez l'ID du groupe "Utilisateurs" dans la base de données de la Commission européenne. /etc/group (ou le nom de groupe équivalent pour votre locale).

    Dans mon installation, ce chiffre était de 545 (votre expérience peut varier). cat /etc/group|egrep '^Users:' vous donnera la bonne ligne. Le troisième champ de la ligne est l'identifiant du groupe ( cat /etc/group|egrep '^Users:'|cut -f3 -d':' pour obtenir simplement l'identifiant).

  2. Modifiez votre /etc/passwd fichier. Localisez l'enregistrement de votre utilisateur. Le quatrième champ est le "groupe primaire" de l'utilisateur. Il est incorrectement défini sur un groupe inexistant. Remplacez ce numéro par celui que vous avez trouvé à l'étape 1 ci-dessus. Sauvegardez le fichier etc le fichier de mots de passe.

  3. Fermez toutes les fenêtres/terminaux Cygwin ouverts, puis ouvrez-en un nouveau. Créez un nouveau fichier. Il devrait avoir un groupe de "Users", et vous devriez pouvoir changer ses permissions comme vous le souhaitez.

4 votes

Cette réponse devrait être acceptée car elle résout le problème initial et n'est pas un petit correctif. Veuillez noter que le nom du groupe dépend de la langue de la machine de l'utilisateur. Dans mon cas, c'était "Utilisateurs" (en français).

2 votes

$ cat /etc/group|egrep '^Usuarios:'|cut -f3 -d':' pour les utilisateurs espagnols.

0 votes

Cette solution est la première que j'ai trouvée qui me permet de chown -R myuser:myuser /usr/share/zsh.

1voto

ayko Points 1

Une raison possible de ce problème est que vous avez copié votre dossier .ssh sur l'ordinateur actuel...

Créez votre propre dossier, et vous obtiendrez ainsi le bon groupe d'utilisateurs. Ne copiez pas les dossiers... ils sont affectés à des groupes d'utilisateurs qui ne correspondent pas.

1voto

Evil.2000 Points 43

J'ai eu le même problème sur Windows Server 2012 R2. Après avoir essayé de modifier le propriétaire, le groupe ou même les autorisations d'un fichier, les valeurs d'origine étaient toujours affichées et mes paramètres étaient ignorés.

Après avoir lu Autorisations de fichiers ,

Autorisations de fichiers

Sur NTFS et si l'option noacl mount n'est pas spécifiée pour un point de Cygwin définit les permissions de fichiers comme sur les systèmes POSIX.

J'ai compris que le noacl a été définie pour les mountpoins :

$ mount
C:/cygwin/bin on /usr/bin type ntfs (binary,noacl)
C:/cygwin/lib on /usr/lib type ntfs (binary,noacl)
C:/cygwin on / type ntfs (binary,noacl)
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,noacl,auto)

J'ai donc retiré le noacl à partir des points de montage dans /etc/fstab et fermé toutes les fenêtres Cygwin. Après avoir rouvert la console, le réglage des autorisations avec chown, chgrp et chmod a fonctionné comme prévu.

0voto

PHP Dev Points 1

J'ai rencontré le même problème sous Windows 10 dans l'invite de commande Cygwin.

Pour le fichier id, seul l'utilisateur Root doit avoir une autorisation complète et pour les autres utilisateurs, des autorisations restreintes/aucune autorisation devraient suffire.

La commande ci-dessous résout le problème,

 chmod 700 <id-file>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X