Utilisateurs
Linux : Gestion des utilisateurs et groupes
Utilisateur
Un utilisateur Linux est défini par un couple login-mdp, un dossier personnel, l'appartenance à des groupes, et des droits en écriture/lecture/exécution spécifiques. Il existe différents types d'utilisateurs:
- Les utilisateurs limités
- Root
Groupes
Un groupe est un ensemble d'utilisateurs partageant des fichiers et des répertoires. Il en existe deux types:
- Primaires (initiaux): Groupe par défaut d'un utilisateur, qui porte son nom; créé en même temps que son login. On peut en changer mais pas être orphelin.
- Secondaires : groupes supplémentaires.
Pour ajouter un utilisateur au groupe des sudoers:
sudo adduser login sudo #Ou login est le nom de l'utilisateur
Les trois fichiers de configuration importants par rapport aux utilisateurs sont:
-/etc/passwd : chaque ligne contient des informations détaillées sur un utilisateur (login, UID, home...)
-/etc/shadow : contient les mots de passe hashés
-/etc/group : contient la liste des groupes avec leur membres
Fichier passwd
Un examen de ce fichier me donne:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
[...]
justine:x:1000:1000:Justine,,,:/home/justine:/bin/bash
La dernière ligne me donne le nom de mon utilisateur, avec des champs séparés par ":"; voici chaque champ:
- login
- mots de passe, avec un x car ils sont dans shadow
- UID, ici 1000
- GID du groupe de l'utilisateur, ici 1000 aussi
- Nom complet GECOS
- Home
- Interpréteur de commandes
Les utilisateurs de services ont moins d'éléments, mais le schéma reste le même.
Le fichier Shadow
root:!:17808:0:99999:7:::
daemon:*:17737:0:99999:7:::
bin:*:17737:0:99999:7:::
sys:*:17737:0:99999:7:::
sync:*:17737:0:99999:7:::
games:*:17737:0:99999:7:::
man:*:17737:0:99999:7:::
lp:*:17737:0:99999:7:::
mail:*:17737:0:99999:7:::
[[[1]]]:::
uucp:*:17737:0:99999:7:::
[...]
justine:$6$hKjtbqIS$8vlyqhW977ds6d8bK/Bkuat8OfVbet1uGY8DgoRDqcUZCAZ.ED9pUQHb/ZaUcOyQxGy3tl6nBubtS/wwifcRZ1:17808:0:99999:7:::
- Login
- Hash du mot de passe
- Nombre de jours depuis le changement de mots de passe en temps UNIX (1er janvier 1970)
- Nombre de jours avant de pouvoir le changer
- Nombre de jours avant de devoir changer de mdp (99999)
- Nombre de jours avant la fin de validité du mot de passe
Création d'utilisateurs
Permet de créer l'utilisteur Alice (il existe aussi useradd, plus adapté pour les scripts car pas interactif).
Suppression d'utilisateurs
Sans option, cette commande laisse des traces. On peut ajouter par exemple --remove-home
Changer les groupes, les login
sudo usermod -aG groupe1, groupe2 Alice #Ajoute Alice dans ces groupes sans l'enlever de son groupe de base
sudo usermod -l Alice-Nouveau-Login Alice #Transforme Alice en Alice-Nouveau-Login
NB : Pour que les changements de groupes soient effectifs, il faut se déco/reco
Gérer les groupes
Les groupes sont gérés par le fichier /etc/group:
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,justine
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
[...]
- Nom du groupe
- Mot de passe du groupe, inscrit avec un x car dans shadow
- GID
- Liste des utilisateurs présents dans le groupe
Créer / supprimer des groupes
sudo delgroup MonGroupe #Supprime un groupe, group del existe aussi
Lister les groupes
justine@Justine-pc:~$ id
uid=1000(justine) gid=1000(justine) groups=1000(justine),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
Cette commande est assez explicite, elle me donne les groupes auxquels j'appartient. On a aussi:
justine : justine adm cdrom sudo dip plugdev lpadmin sambashare