Question En utilisant Cygwin dans Windows 8, chmod 600 ne fonctionne pas comme prévu?


J'essaie de modifier les autorisations sur mon fichier de clé key.pem dans Cygwin 1.7.11. Il dispose des drapeaux de permissions: -rw-rw----

chmod -c 600 key.pem

Rapports:

mode de 'key.pem' changé de 0660 (rw-rw ----) à 0600 (rw -------)

Toutefois:

ls -l key.pem 

rapporte toujours

Les drapeaux d'autorisation de key.pem sont toujours: -rw-rw ----

Cette raison pour laquelle je demande est que ssh se plaint:

Les autorisations 0660 pour 'key.pem' sont trop ouvertes.

lorsque j'essaie de ssh dans mon instance Amazon EC2. Est-ce un problème avec Cygwin & Windows 8 NTFS ou est-ce que je manque quelque chose?


74
2018-03-05 22:27


origine


Cela ressemble à un bug Win8 / Cygwin. Je recommanderais de le signaler sur le Liste de diffusion Cygwin. - me_and
Cela pourrait être lié à NTFS ... Windows n'utilise pas vraiment ce schéma Linux. Peut-être que vous pouvez essayer d'entrer dans les paramètres d'autorisation de Windows et ne vous donner que des droits ... - sinni800
Je pense que cela est lié à superuser.com/questions/363141/... - Daniel Stiner


Réponses:


J'utilise Cygwin dans Win8CP et j'ai eu le même problème. Il s’agit bien d’un bogue Cygwin, mais il existe une solution de contournement: essayez de lancer:

 chgrp -R Users ~/.ssh

La plus longue explication est que, pour une raison quelconque, Cygwin /etc/passwd et /etc/group la génération met le groupe par défaut / principal de l'utilisateur comme None. Et vous ne pouvez pas changer la permission de None, alors le chmod car le groupe n'a aucun effet.

Je n'ai pas essayé de réparer le passwd/group fichiers moi-même, mais j'ai fait un chgrp -R Users ~/.ssh (ou, si vous êtes sur la version préliminaire de Windows 8, avec le nom du groupeHomeUsers). Après cela, vous pouvez faire le chmod 0600 et cela fonctionnera comme prévu.

le chgrp au Users groupe peut être fait dans les autres cas similaires que vous trouvez. Il fonctionne même comme prévu puisque Cygwin met les utilisateurs dans le Users groupe en tant que secondaire groupe (au lieu de primaire, qui serait le comportement correct).


96
2018-04-03 18:58



J'avais besoin de chgrp -Rv Users ~ / .ssh / * chmod -vR 600 ~ / .ssh / * - Tomáš Fejfar
@ TomášFejfar commentaire ci-dessus a travaillé pour moi. Merci. - scaraveos
@ TomášFejfar qui était très utile, peut-être qu'il devrait trouver son chemin dans les scripts d'installation ou quelque chose - dashesy
Notez si Windows est installé dans une autre langue Users ne va pas au travail. Utilisation cat /etc/group vérifier avec ce que vous devriez remplacer Users. En néerlandais, par exemple, vous devrez remplacer Users avec Gebruikers. - thijsai
Cela ne fonctionne plus. La nouvelle solution est celle de @ luke-lee. - fjardon


À partir de Cygwin 1.7.34 (2015-02-04), la méthode qui change le groupe en Users ne fonctionne plus. Au lieu de cela, vous devez utiliser les fonctionnalités de Cygwin. setfacl utilitaire.

  • Dites si vous souhaitez définir le mode fichier sur 644 (rw-r--r--) fais ceci:

    setfacl -s u::rw-,g::r--,o:r-- foo.bar
    
  • ou utilisez un format plus long:

    setfacl -s user::rw-,group::r--,other::r-- foo.bar
    
  • ou copier son mode en utilisant getfacl à partir du fichier foo à bar:

    getfacl foo | setfacl -f - bar
    

Un manuel complet est dans le Section "setfacl" du guide de l'utilisateur Cygwin. Je me demande pourquoi Cygwin n'a pas encore changé chmod utilitaire de même.


25
2018-02-12 02:19



Les solutions avec changement de groupe pour les utilisateurs ne fonctionnaient pas pour moi, mais uniquement pour setfacl! - dim
Luke, je pense que tu as manqué un deux-points dans ton premier bloc de code après le «o». - SeldomNeedy
@ SlowNeedy Argh! Vous avez raison, corrigé en conséquence. Merci! - Luke Lee
@SeldomNeedy Après quelques vérifications, j'ai trouvé que les deux syntaxes fonctionnaient, mais la version originale (avec un deux-points) est plus précise. Le deuxième deux-points pour 'u' et 'g' sert à spécifier UID et GID. Pour 'o', il n'y a pas de tel spécificateur, donc un seul deux-points est nécessaire. - Luke Lee


Voici un script qui utilise la suggestion de Luke Lee mais supporte les arguments octaux comme chmod. Il fournit un cadre qui peut être étendu. bien qu'il ne supporte actuellement que les arguments octaux nécessaires pour corriger les autorisations sur les répertoires et fichiers key.pem et / ou ~ / .ssh.

#!/bin/bash

# convert chmod octal permission args to equivalent setfacl args
ARGS=() ; FILES=()
while [ $# -gt 0 ]; do
  A=$1 ; shift
  case "$A" in
  600|0600) ARGS+=("u::rw-,g::---,o::---") ;;
  640|0640) ARGS+=("u::rw-,g::r--,o::---") ;;
  644|0644) ARGS+=("u::rw-,g::r--,o::r--") ;;
  700|0700) ARGS+=("u::rwx,g::---,o::---") ;;
  *) if [ -e "$A" ]; then FILES+=( "$A" ) ; else
    echo "unrecognized arg [$A]" 1>&2
    exit 1
  fi
  ;;
  esac
done
for F in "${FILES[@]}" ; do
  setfacl -s "${ARGS[@]}" "$F"
done

Je l'ai utilisé comme ça pour réparer mon répertoire et ses fichiers .ssh:

chmodfacl 700 ~/.ssh
chmodfacl 600 ~/.ssh/*
chmodfacl 640 ~/.ssh/*.pub

9
2018-02-14 15:57



Je viens juste d'être touché par celui-ci dans une mise à jour de cygwin. Merci pour le script. setfacl à lui seul est horrible. - Andy Brown
Où est-ce que je mets le script? - Sisir
le script peut aller n'importe où dans votre chemin cygwin. Vous pouvez créer un répertoire $ HOME / bin et le placer ici, bien que vous deviez ensuite l'ajouter à votre chemin, par exemple dans $ HOME / .bashrc. - philwalk


chgrp -R Users ~/.ssh

chmod 0600 ~/.ssh/config

chmod 0700 ~/.ssh

3
2018-05-26 17:36



Ce sont les étapes exactes dont j'avais besoin, +1. - camomileCase


Si tu as git bash installé lance la même commande (chmod -c 600 key.pem) avec git bash et éviter Cygwin.


0
2018-04-26 15:15





Ce problème peut être résolu en exécutant la commande ssh-keygen à partir du terminal cygwin (pas l'invite de commande normale de Windows). Je l'ai fait dans ma machine Windows8.


0
2017-08-08 14:59



Pouvez-vous nous donner plus de détails? Comment cela peut-il résoudre le problème? Quelles mesures l’utilisateur doit-il prendre à part "exécuter ssh-keygen à partir de Cygwin"? - DanteTheEgregore
Cela génère simplement une clé, mais l'OP a une clé avec des autorisations incorrectes - Jonathan
Même expérience ici: chmod / ssh-keygen accorde une bonne autorisation sous cygwin, mais ne le fait pas si je les exécute depuis Windows cmd. (Je ne sais pas pourquoi cependant :-)) - autra


Exécutez le programme d'installation de Cygwin et mettez-le à jour. Le bogue devrait être corrigé.


-2
2018-06-15 17:52



Votre message doit être étendu. Un bien répondre comprend des instructions spécifiques (pas seulement des liens vers celles-ci) et une explication de la manière ou de la raison pour laquelle la réponse aborde la question des PO. S'il vous plaît éditer votre message pour répondre adéquatement à ces deux éléments. - Twisty Impersonator