ls -l /etc/passwd
donne
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd
Ainsi, un utilisateur ordinaire peut lire le fichier. Est-ce un trou de sécurité?
ls -l /etc/passwd
donne
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 1862 2011-06-15 21:59 /etc/passwd
Ainsi, un utilisateur ordinaire peut lire le fichier. Est-ce un trou de sécurité?
Réponses:
Les hachages de mot de passe réels sont stockés dans /etc/shadow
, ce qui n'est pas lisible par les utilisateurs réguliers. /etc/passwd
contient d'autres informations sur les ID utilisateur et les shells qui doivent être lisibles par tous les utilisateurs pour que le système fonctionne.
/etc/shadow
. Les BSD utilisent /etc/master.passwd
. Solaris utilise /etc/security/passwd
. HP-UX utilise /.secure/etc/passwd
et la liste continue ...
En règle générale, les mots de passe hachés sont stockés dans la /etc/shadow
plupart des systèmes Linux:
-rw-r----- 1 root shadow 1349 2011-07-03 03:54 /etc/shadow
(Ils sont stockés dans /etc/master.passwd
le système BSD .)
Les programmes qui doivent effectuer l'authentification doivent toujours s'exécuter avec des root
privilèges:
-rwsr-xr-x 1 root root 42792 2011-02-14 14:13 /usr/bin/passwd
Si vous n'aimez pas les setuid root
programmes et un seul fichier contenant tous les mots de passe hachés sur votre système, vous pouvez le remplacer par le module Openwall TCB PAM . Cela fournit à chaque utilisateur son propre fichier pour stocker son mot de passe haché - en conséquence, le nombre de setuid root
programmes sur le système peut être considérablement réduit.
Les mots de passe n'ont pas été stockés /etc/passwd
depuis des années maintenant; le nom est hérité, la fonction d'être la base de données d'utilisateurs locale demeure et elle doit être lisible par tous à cette fin.
Dans une certaine mesure, c'est le cas, car vous pouvez identifier les utilisateurs. Dans le passé, vous pouviez également récupérer leurs mots de passe. Cependant, le seul ID utilisateur qui mérite vraiment d'être craqué root
est bien connu sans le fichier de mot de passe.
L'utilité d'avoir un monde de fichiers de mots de passe lisible dépasse généralement de loin le risque. Même si elle n'était pas lisible dans le monde entier, une getent passwd
commande fonctionnelle annulerait le gain de sécurité.
La possibilité pour les utilisateurs non root d'identifier les fichiers appartenant à d'autres disparaîtrait. Pouvoir identifier les fichiers possédés (utilisateur dans le fichier passwd) et non possédés (utilisateur non dans le fichier passwd) peut être utile pour examiner le contenu d'un système de fichiers. Bien qu'il soit possible de résoudre ce problème avec des setuid
programmes appropriés , cela ajouterait un énorme vecteur d'attaque via ces programmes.
En fin de compte, c'est une question d'équilibre, et dans ce cas, je dirais que l'équilibre repose fermement sur la lisibilité du monde des mots de passe.