J'essaie de modifier les autorisations de mon fichier de clé key.pem
dans Cygwin 1.7.11. Il a les drapeaux d'autorisations: -rw-rw----
chmod -c 600 key.pem
Rapports:
le mode de 'key.pem' est passé de 0660 (rw-rw ----) à 0600 (rw -------)
Toutefois:
ls -l key.pem
rapporte encore
les drapeaux d'autorisation de key.pem sont toujours: -rw-rw ----
La 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 et Windows 8 NTFS ou est-ce que quelque chose me manque?
J'utilise Cygwin dans Win8CP et j'ai eu le même problème. C'est certainement un bogue de Cygwin, mais il existe une solution de contournement: essayez de lancer:
chgrp -R Users ~/.ssh
L'explication la plus longue est que, pour une raison quelconque, la génération /etc/passwd
et /etc/group
de Cygwin place le groupe par défaut/principal de l'utilisateur sous la forme None
. Et vous ne pouvez pas modifier l'autorisation de None
, de sorte que chmod
pour le groupe n'a aucun effet.
Je n'ai pas essayé de réparer les fichiers passwd
/group
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.
La variable chgrp
à Users
peut être utilisée dans n'importe quel autre cas similaire trouvé. Cela fonctionne même comme prévu puisque Cygwin place les utilisateurs dans le groupe Users
en tant que groupe secondaire (au lieu de primaire , qui serait le comportement correct).
Depuis Cygwin 1.7.34 (2015-02-04), la méthode permettant de changer le groupe en Users
ne fonctionne plus. Au lieu de cela, vous devez utiliser l'utilitaire setfacl
de Cygwin.
Si vous souhaitez définir le mode de fichier sur 644 (rw-r--r--)
, procédez comme suit:
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 copiez son mode en utilisant getfacl
du fichier foo
à bar
:
getfacl foo | setfacl -f - bar
Un manuel complet se trouve dans la section "setfacl" du guide de l'utilisateur Cygwin . Je me demande pourquoi Cygwin n’a pas encore changé d’utilité chmod
.
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 l’autorisation 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 mes fichiers .ssh:
chmodfacl 700 ~/.ssh
chmodfacl 600 ~/.ssh/*
chmodfacl 640 ~/.ssh/*.pub
chgrp -R Users ~/.ssh
chmod 0600 ~/.ssh/config
chmod 0700 ~/.ssh
Si vous avez installé Git bash , exécutez la même commande (chmod -c 600 key.pem
) avec git bash et évitez Cygwin .
Ce problème peut être résolu en exécutant la commande ssh-keygen à partir du terminal cygwin (l’invite de commande normale de Windows). Je l'ai fait dans ma machine Windows8.