Un exemple de /etc/group
fichier contient les entrées suivantes:
root:*:0:
adm:!:4:logcheck
antoine:x:1000:
Les pages de manuel que j'ai lues (Debian et OSX) indiquent que le deuxième champ est de stocker un mot de passe de groupe. Comme ils sont rarement utilisés, un astérisque *
ou un x
est généralement placé dedans plutôt que de le laisser vide.
La shadow
page de manuel indique également que ce deuxième champ doit stocker le résultat de la crypt
fonction. Et si un résultat invalide est stocké (comme *
ou !
), cela signifie que le mot de passe ne peut pas être utilisé comme méthode d'authentification.
Cela vaut-il également pour le group
fichier? Pourquoi est-ce que je me retrouve avec 3 caractères différents dans mon group
fichier ayant tous la même signification? Puis-je tout changer en toute sécurité *
?
*
?!
utilisation d'un seul groupe sur un seul serveur sur 10+ que je gère actuellement. Pour la simplicité de certains scripts de vérification, le fait d'avoir toujours le même caractère clarifierait les choses. Eh bien, si cela signifie en fait la même chose, bien sûr.Réponses:
Vous pensez que le
!
,*
oux
a une signification particulière ici, et craignez donc qu'il puisse y avoir une distinction entre eux.Le fait est que ces personnages sont choisis simplement parce qu'ils se démarquent, au moins aux yeux occidentaux. Ces caractères désignent une valeur manquante, un cas d'exception ou un avertissement. Vous pourriez mettre
boogabooga
ici et avoir exactement le même effet.Cela est dû à la façon dont les mots de passe sont traités sur les systèmes de type Unix. Lorsque le système reçoit une entrée de mot de passe, il la hache et la compare au hachage stocké. Par conséquent, tout ce qui importe ici est que vous utilisez un caractère ou une séquence de caractères qui ne peut pas être un hachage de mot de passe valide. (Il ne doit pas non plus inclure de deux points, pour des raisons évidentes.)
Bien qu'il n'y ait aucune différence entre ces personnages du point de vue du système d'exploitation principal, il existe certaines conventions:
Quand le
pwconv(8)
programme Linux voitx
, cela signifie que «j'ai déjà déplacé ce hachage de mot de passe public vers le fichier de mot de passe caché».Ce n'est pas un cas important dans la pratique, car les jours de la conversion vers (ou, le ciel vous aide, depuis ) les mots de passe cachés sont maintenant derrière nous.
Si vous utilisez
usermod -L
oupasswd -l
pour verrouiller un utilisateur, cela!
a une signification particulière/etc/shadow
car c'est la convention pour "casser ce hachage pour qu'il ne corresponde plus".L'ajout de tout autre caractère au hachage stocké le briserait tout aussi bien. La violation de cette convention empêche simplement
usermod -U
oupasswd -u
de déverrouiller la connexion de l'utilisateur. Tout aussi vrai, puisque vous l'avez verrouillé à la main en ajoutant un faux personnage, vous pouvez le déverrouiller à la main en le supprimant.Cependant, tout cela n'est que trivial en ce qui concerne cette question. Il n'y a pas
groupmod -L
ougpasswd -l
donc pas de!
convention/etc/group
.Plus Anecdote: si vous êtes allez aux comptes utilisateur de verrouillage à la main, vous devez rester à l' écart de l'
[A-Za-z0-9/\]
ensemble, puisque ce sont des caractères juridiques pour le hachage. C'est une des raisons d'usermod
utiliser!
ici au lieu dex
.Je ne vois rien de mal à normaliser tous vos
/etc/group
champs de mot de passe, si cela vous fait vous sentir mieux. Ce faisant, vous dites déjà que vous êtes heureux de pirater ces fichiers à la main, vous n'êtes donc probablement pas du genre à utiliser les outils qui se soucient des distinctions de toute façon. Quoi qu'il en soit, le changement n'aura pas d'effet sur le fonctionnement quotidien du système.la source
getpwent(3)
et amis. Perl a des wrappers pour ceux-ci dans sa bibliothèque standard, comme tout autre langage de script axé sur les administrateurs système Unix. Si vous utilisez une langue sans de tels wrappers, ce serait une bonne excuse pour échanger. :)x
et*
pour marquer un champ de mot de passe "inutilisé". Juste curieux cependant ... la page de manuel indique que le champ peut très bien être laissé vide (ce qui dans le champ de la base de données peut être appelé NULL - en particulier dans Oracle qui définit NULL et la chaîne vide comme étant la même). Donc, revenons à / etc / group: pourquoi utiliserx
ou!
ou*
, au lieu de simplement laisser le champ vide? Deux deux points consécutifs se distinguent aussi bien que n'importe lequel de ces personnages. Pas important - juste curieux/etc/shadow
. De plus, je rejette l'idée qu'un double colon est tout aussi clair. Vite, combien de champs vides sont là::::::
:? Maintenant combien:x:*:!:x:*:
:? Même nombre de deux points, mais des réponses différentes, j'espère.