Sur un système Unix ou Linux moderne, comment pouvez-vous dire dans quel jeu de code le fichier /etc/passwd
stocke les noms d'utilisateur? Les noms d'utilisateur sont-ils autorisés à contenir des caractères accentués (de la plage 0x80..0xFF dans, disons, ISO 8859-1 ou 8859-15)? Est-ce que le fichier /etc/passwd
peut contenir UTF-8? Pouvez-vous dire qu'il contient UTF-8? Qu'en est-il du texte brut des mots de passe avant qu'ils ne soient cryptés ou hachés? De toute évidence, si les noms d'utilisateur et autres données sont limités à la plage 0x00..0x7F (et exclut 0x00 de toute façon), il n'y a pas de différence entre UTF-8, 8859-1 ou 8859-15; les caractères présents sont tous codés de la même manière. En outre, j'utilise /etc/passwd
comme abréviation de quelque chose comme "la base de données d'identification et d'authentification de l'utilisateur (parfois appelée service d'annuaire) sur une machine Unix, généralement accessible via PAM et parfois hébergé sur d'autres machines tout à fait de la locale, mais parfois encore effectivement un fichier sur le disque dur local, classiquement appelé /etc/passwd
, souvent pris en charge par /etc/shadow
". Je suppose également que les questions équivalentes sur la base de données du groupe (souvent le fichier /etc/group
) ont la même réponse.Dans quel jeu de codes est stocké/etc/passwd? Peut-il être UTF-8? Quelles sont les limites imposées aux noms d'utilisateur?
7
A
Répondre
4
Tout est ASCII. Mais le mot de passe lui-même n'est jamais stocké - seulement les résultats du hash à sens unique. Si vous vous demandez quels caractères peuvent figurer dans le mot de passe lui-même, cela dépend des paramètres régionaux, ce qui limitera les caractères que votre terminal peut gérer. Voir "man locale"
"/ etc/passwd fichier de mot de passe ASCII ..."
En ce qui concerne les noms d'utilisateur, je peux vous dire que Solaris ne supporte que ASCII. Je ne peux pas parler pour d'autres Unix-en.
"Non tous les objets dans Solaris 2 et Solaris 7can ont des noms composés de caractères arbitraires. The names of the following objects must be composed of ASCII characters:
* User names, group name, and passwords
* System name ...
"
Pouvez-vous fournir des preuves documentaires (une URL) pour l'affirmation? Et que se passe-t-il si des octets non-ASCII sont entrés dans le fichier/etc/passwd? –
Merci pour l'info supplémentaire. Supposons que vous ayez accès à une machine par des personnes venant des États-Unis (terminaux en 8859-1), d'Allemagne (8859-15) et de Taiwan (UTF-8). Quel jeu de codes est le fichier de mot de passe stocké maintenant? –
C'est toujours tout ASCII. Ce que vous pouvez taper variera en fonction des paramètres régionaux du terminal. Mais la sortie de la fonction de hachage sera toujours ASCII. Par exemple, vous pouvez créer un fichier contenant tous les caractères que vous aimez, et le run md5 dessus - et le jeu de caractères du fichier original n'a rien à voir avec le jeu de caractères du hash résultant. (traditionnellement, le hachage passwd est généré par crypt, pas md5 cependant) – nont