D'origine, les systèmes Linux sont multi-utilisateurs. Ainsi, pour pouvoir utiliser une machine, il est nécessaire de s'identifier au moyen d'un nom d'utilisateur et d'un mot de passe. Chacun aura donc son propre compte et son propre environnement. Les possibilités de personnalisation de ce dernier sont assez poussées.
Nous verrons dans un chapitre suivant comment Linux gère les droits d'accès au niveau du système de fichier et des ressources.
Les utilisateurs doivent faire partie de groupes. Et c'est l'appartenance à ces groupes qui permettent de recevoir plus ou moins de droits.
À l'origine, Linux était très strict quant à l'autorisation des accès aux ressources. Cette manière de faire est particulièrement bien adapté pour un usage en entreprise où les utilisateurs ne peuvent pas faire n'importe quoi. Aujourd'hui, les règles sont un peu plus souples, ce qui est mieux adapté à l'usage d'ordinateurs familiaux. Cela a fortement inspiré d'autres systèmes d'exploitation plus populaires.
Il existe un utilisateur spécial appelé "super-utilisateur". Généralement son nom d'utilisateur est root. Cet utilisateur possède tous les droits et a accès à toutes les ressources de la machine.
Il est fortement déconseillé d'utiliser ce compte pour l'utilisation journalière de votre machine. Il s'agit d'un compte qui ne devrait être utilisé que pour la gestion de la machine. Certaines distributions modernes "cachent" d'ailleurs cet utilisateur. Il n'est pas possible de s'identifier avec ce compte, mais il peut être utilisé pour des tâches d'administration.
Un attention particulière doit être portée à la sécurité de cet utilisateur. En effet, si une personne malveillante arrive à craquer ce compte, il peut faire ce qu'il veut de votre machine.
Comme pour la plupart des applications sous Linux, la liste des utilisateurs et des groupes sont dans des fichiers texte.
La liste des utilisateurs se trouve dans le fichier /etc/passwd. Chaque ligne de ce fichier correspond à un utilisateur. Pour chaque utilisateur le fichier contient toute une série d'informations séparée par un :. Voici la structure de chaque ligne :
username:password:userid:groupid:full_name:home:shell
Nom d'utilisateur utilisé pour s'identifier.
Mot de passe crypté. À l'origine, le mot de passe se trouvait dans ce fichier. Comme ce dernier peut être lu par tous les utilisateurs du système, il était la cible de tous les pirates. Un mot de passe vide signifiait un compte sans mot de passe. De plus, les mots de passe pouvaient faire l'objet d'une tentative de décryptage. Aujourd'hui, le mot de passe est très souvent x. Cela signifie qu'il faut aller le lire dans le fichier /etc/shadow.
Nombre servant à identifier l'utilisateur par le système.
Nombre correspondant à l'identifiant du groupe principal de l'utilisateur.
Nom complet de l'utilisateur.
Répertoire personnel de l'utilisateur.
Interpréteur de commande qui sera utilisé lorsque l'utilisateur se connectera en mode console.
Voici un exemple de fichier /etc/passwd.
Comme nous l'avons vu précédemment, les mots de passes sont maintenant conservés le plus souvent dans le fichier /etc/shadow uniquement lisible par le super-utilisateur. Pour chaque entrée dans le fichier /etc/passwd dont le mot de passe est x, il faut une entrée correspondante dans ce fichier. La structure de ce fichier est la suivante :
Nom d'utilisateur correspondant au fichier /etc/passwd.
Mot de passe crypté. S'il s'agit d'un ! ou un *, ce compte ne pourra pas être utilisé pour s'identifier.
Date du dernier changement de mot de passe exprimée en jours depuis le 1er janvier 1970.
Nombre de jours minimum avant de pouvoir changer de mot de passe.
Nombre de jours maximum avant de devoir changer de mot de passe.
Nombre de jours avant l'expiration du mot de passe où l'utilisateur sera averti qu'il doit changer de mot de passe. Si ce champ est vide ou égal à 0, l'utilisateur ne sera pas averti.
Nombre de jours après l'expiration du mot de passe où ce dernier est toujours accepté. Pendant cette période, l'utilisateur sera obligé de changer son mot de passe. Si ce champ est vide ou égal à 0, l'utilisateur ne pourra plus se connecter après l'expiration de son mot de passe.
Date à partir de laquelle le compte sera désactivé exprimée en jours depuis le 1er janvier 1970. Si ce champ est vide ou égal à 0, le compte n'expire jamais.
Champ réservé à un usage ultérieur.
Voici un exemple de fichier /etc/shadow.
La liste des groupes se trouve dans le fichier /etc/group. Chaque ligne de ce fichier correspond à un groupe. Pour chaque groupe le fichier contient toute une série d'informations séparée par un :. Voici la structure de chaque ligne :
Nom du groupe.
Mot de passe crypté. Ce mot de passe est utilisé pour permettre à un utilisateur de faire partie temporairement de ce groupe. Aujourd'hui, le mot de passe est très souvent x. Cela signifie qu'il faut aller le lire dans le fichier /etc/gshadow sur le même principe que pour les utilisateurs.
Nombre correspondant à l'identifiant du groupe.
Liste des utilisateurs faisant partie du groupe séparés par une virgule.