Y a-t-il une raison technique? S'agit-il d'un artefact des débuts de Linux ou d'Unix, et si oui, y a-t-il une raison pour laquelle il persiste?
Je ne peux pas penser à une raison technique - historiquement, c'est juste ASCII. La manière dont il est lu puis dactylographié est entre les mains du codeur.
unix-history-repo / usr / src / cmd / passwd.c
char *uname;
insist = 0;
if(argc < 2) {
if ((uname = getlogin()) == NULL) {
printf ("Usage: passwd user\n");
goto bex;
} else {
printf("Changing password for %s\n", uname);
}
} else {
uname = argv[1];
}
Depuis que j'ai passé un certain temps à parcourir les pages de manuel des archives (par exemple: 1BSD a été la première distribution de logiciels de Berkeley par Bill Joy ), je n’ai rien vu qui spécifie les noms d’utilisateur. Cela ne veut pas dire qu'il n'existe pas, mais je ne l'ai pas vu.
Nous nous retrouvons donc avec un contexte humain historique. À mes débuts dans la technologie en 1980, nous utilisions toujours notre vrai nom pour les connexions. Habituellement, le prénom initial et le nom complet, à moins d’une limite de longueur. C'était important car votre nom d'utilisateur a été utilisé comme adresse électronique. À l'époque, personne n'a envoyé d'e-mail anonyme. Bien sûr, il doit y avoir quelques exceptions, je ne les rappelle pas. Dans l’ensemble cependant, je crois que tel est le cas.
Et selon le rfc5321 # page-63, il n’existe aucune restriction quant à l’envoi d’un "nom" par courrier électronique commençant par un chiffre. gmail créera tous les noms d'utilisateur numériques. (l'obtenir maintenant, ils vont vite).
Donc, si un code rejette un nom d'utilisateur commençant par [0-9], il a probablement été créé plus tard avec un programmeur se demandant "pourquoi voudriez-vous avoir un numéro comme nom?". Encore une fois, je dois dire qu'il peut très bien exister un code historique Unix qui a rejeté un nom d'utilisateur commençant par un nombre. Je ne l'ai juste pas vu. Les premiers tableaux de mots de passe ont été modifiés à la main, je me souviens certainement de le faire fréquemment, même au début des années 90.
Pour ce qui est de la persistance, je citerai stroustrup, C ++ 11FAQ, Quand les nouvelles bibliothèques standard seront-elles disponibles?
Pour rendre le problème plus difficile, rappelez-vous qu’il n’est pas faisable d’éliminer les anciennes fonctionnalités, même si le comité convient qu’elles sont mauvaises: l’expérience montre que les utilisateurs forcent chaque développeur à continuer à fournir des fonctionnalités obsolètes et interdites sous des commutateurs de compatibilité (ou par défaut). depuis des décennies.