• [^] # Re: Catégorie d'utilisateur ?

    Posté par . En réponse au message Quel cryptage, quel format?. Évalué à 5.

    Excellent commentaire...
    A plusser. J'aime particulierement la comparaison du root avec Dieu...

    Sinon, je vais tenter de détailler un peu mieux le pourquoi du comment des fichiers passwd et shadow.

    Tout d'abord, sous Unix, chaque utilisateur à un UID (User Identifier). Comme dit dans le commentaire précédent, le 0 c'est le root.

    Il faut savoir que chaque utilisateur est référencé dans le fichier /etc/passwd. La principale fonction de ce fichier est de faire le mapping UID <=> Nom d'Utilisateur. Ce fichier contient aussi des informations telles que le Nom,Prénom qui ne servent à rien. Il contient aussi le répetoire de base de l'utilisateur et son shell par défaut.

    Le fichier /etc/passwd doit être lisible par tous les utilisateurs.Notamment pour faire le mapping UID <=>Utilisateur. En effet, cela permet par exemple de savoir à qui appartient un fichier qui n'est pas à toi. Par contre, il ne doit être modifiable que par root. En effet, un utilisateur ne doit pas pouvoir modifier les informations d'un autre utilisateur.
    par exemple (sur ma machine):
    $ ls -l /etc/passwd
    -rw-r--r-- 1 root root 810 2005年07月07日 01:24 /etc/passwd

    Mais alors, la question qui se pose est: comment un utilisateur peut il modifier ses propres informations. Il a quand même le droit, mince!!!!!! S'il tente de le faire manuellement, ca ne marchera pas car je le rapelle, le fichier /etc/passwd est en lecture seule pour les utilisateurs classiques. Il peut alors utiliser la commande /usr/bin/passwd. Cette commande à un attriut spécial le SUID-Bit:

    $ ls -l /usr/bin/passwd
    -rws--x--x 1 root bin 39348 2004年06月21日 21:20 /usr/bin/passwd

    Le SUID-Bit se reconnait au petit 's' à coté de rw. Cet attribut permet au programme /usr/bin/passwd d'être executé en root par n'importe quel utilisateur. C'est à dire que lorque lambda par exemple lancera /usr/bin/passwd, il s'executera comme si c'était root l'avait lancé. Le programme passwd peut alors modifier le fichier /etc/passwd. Mais c'est un programme sécurisé qui n'autorisera à l'utilisateur de modifier que la ligne qui le concerne.


    Maintenant, passons aux mots de passes. A la base, les mots de passe étaient simplement dans le fichier /etc/passwd. (d'où son nom). Mais le problème est que les informations de ce fichier doivent être lisibles par tous les utilisateurs. Pour cela les mots de passes ont d'abord été cryptés avec des algorithmes particuliers (dits de hachage) tels que MD5(voir l'explication du commentaire précédent). Bien que ces mots de passes ne soient pas directement lisibles, il était possible deles cracker en réalisant des attaques par force brute ou par dictionnaire. Crypter les mots de passe n'est pas suffisant!!! Il faut en plus les cacher aux utilisateurs. Pour cela, lesmots de passes on dû être séparés dans un autre fichier: /etc/shadow. Ce fichier à un format très proche de /etc/passwd mais ne contient que les mots de passe. Mais il ne doit pas être lisible par un utilisateur classique.

    ls -l /etc/shadow
    -rw-r----- 1 root shadow 593 2006年03月17日 11:56 /etc/shadow

    Mais cela ne pose aucun problème car le seul programme qui doit lire ce fichier est le gestionnaire de login (/bin/login, ou XDM,KDM,GDM......), qui de toute manière n'a pas d'autre choix, pour d'autres raisons, que de tourner en root. Enfin la modification de ce fichier pour qu'un utilisateur change son mot de passe se fait avec le programme /usr/bin/passwd en utilisant le même procédé que pour /etc/passwd.


    Ca y est, j'ai fini. J'espère que j'ai été assez clair et que j'ai répondu à la plupart de tes questions. En relisant le commentaires, je me dis que c'est quand même beau Unix.....