Les utilisateurs et les groupes
Objectifs
Comprendre ce qu'est un utilisateur Linux
Comprendre ce qu'est un groupe
Savoir interpréter des UID/GID
Les utilisateurs, au cœur du système
Sous Linux, tout les fichiers et dossiers appartiennent à un utilisateur, et tout les programmes qui s’exécutent sont exécutés par un utilisateur donné. En fait, plus ou moins tout est lié à un ou plusieurs utilisateurs. On ne parle pas forcément d'utilisateurs humains, mais d'utilisateurs au sens informatique. Beaucoup de logiciels en arrière-plan s'exécute avec un utilisateur défini uniquement pour cet usage. Pour illustrer ça, on peut afficher le fichier /etc/passwd
qui contient de nombreuses informations, en particulier les utilisateurs qui existent. Par exemple sur ma machine j'ai ceci :
$ cat /etc/passwd
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
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:103:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:104:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:105:systemd Resolver,,,:/run/systemd/resolve:/bin/false
messagebus:x:104:111::/var/run/dbus:/bin/false
avahi:x:105:112:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
uuidd:x:106:114::/run/uuidd:/bin/false
Debian-exim:x:107:115::/var/spool/exim4:/bin/false
statd:x:108:65534::/var/lib/nfs:/bin/false
avahi-autoipd:x:109:118:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
colord:x:110:120:colord colour management daemon,,,:/var/lib/colord:/bin/false
dnsmasq:x:111:65534:dnsmasq,,,:/var/lib/misc:/bin/false
sshd:x:113:65534::/var/run/sshd:/usr/sbin/nologin
pulse:x:114:122:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:115:124:RealtimeKit,,,:/proc:/bin/false
saned:x:116:125::/var/lib/saned:/bin/false
usbmux:x:117:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
hplip:x:119:7:HPLIP system user,,,:/var/run/hplip:/bin/false
kyane:x:1000:1000:Kyâne,,,:/home/kyane:/usr/bin/zsh
geoclue:x:120:127::/var/lib/geoclue:/bin/false
_apt:x:121:65534::/nonexistent:/bin/false
Debian-minetest:x:122:60:Minetest dedicated server,,,:/var/games/minetest-server:/bin/false
vde2-net:x:123:132::/var/run/vde2:/bin/false
radvd:x:124:65534::/var/run/radvd:/bin/false
snort:x:125:135:Snort IDS:/var/log/snort:/bin/false
ntp:x:103:106::/nonexistent:/usr/sbin/nologin
systemd-coredump:x:997:997:systemd Core Dumper:/:/sbin/nologin
debian-tor:x:126:137::/var/lib/tor:/bin/false
_rpc:x:127:65534::/run/rpcbind:/usr/sbin/nologin
tcpdump:x:112:126::/nonexistent:/usr/sbin/nologin
Il n'est pas nécessaire de tout comprendre pour le moment, il faut simplement savoir que le texte indiqué en début de chaque ligne, avant les ":
", est le nom d'un utilisateur. On voit qu'il y en a vraiment beaucoup, et en réalité il n'y en a qu'une seul qui correspond à un être humain, c'est kyane
, ligne 37. Tout le reste sont des utilisateurs dits "système", dans le sens où ils servent plus au système d'exploitation qu'a un utilisateur. Par exemple le dernier, tcpdump
, est utilisé par le programme tcpdump
(un outil de capture du flux réseau) pour réaliser les opérations qu'il a besoin de faire.
Les groupes
On peut créer autant d'utilisateurs que l'on veut sur Linux, et les répartir dans des groupes. Un groupe est, comme son nom l'indique, un regroupement de plusieurs utilisateurs, ce qui permettra ensuite d'appliquer des règles à tout les utilisateurs d'un même groupe d'un coup. Par défaut chaque utilisateur se trouve dans un groupe qui porte le même nom (l'utilisateur kyane
est par défaut dans le groupe kyane
), c'est ce que l'on appelle le groupe primaire. Mais un utilisateur peut-être ajouté à plusieurs autres groupes par la suite, par exemple le même utilisateur kyane
se trouve aussi dans un groupe bluetooth
, qui me permet d'utiliser le Bluetooth de mon ordinateur.
Définition : UID et GID
Les UID et GID sont les identifiants des utilisateurs et groupes. En effet le système d'exploitation ne manipule pas directement des noms textuels, mais des identifiants numériques. L'UID, pour User ID, est l'identifiant qui correspond à un utilisateur donné. Dans l'exemple de l'utilisateur kyane
plus haut, sont UID est 1000. Le GID pour Group ID
est la même chose mais pour un groupe.
Méthode : La commande id
La commande id
permet d'obtenir très simplement une information sur l'utilisateur avec lequel on est connecté, ainsi que les groupes associés.
$ id
uid=1000(kyane) gid=1000(kyane) groupes=1000(kyane),4(adm),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(netdev),110(lpadmin),113(scanner),119(bluetooth),134(wireshark),999(docker)
Ici on voit en premier que mon UID est 1000, c'est à dire l'utilisateur kyane
, et mon GID est aussi 1000, avec un groupe du même nom (mon groupe primaire). Ensuite on voit la liste des groupes (nom et GID) auquel appartient l'utilisateur.
À retenir
Les utilisateurs et les groupes sont au cœur du fonctionnement de Linux. Ceux-ci possèdent des identifiants numériques, mais on peut manipuler une traduction sous la forme d'un nom textuel, pour les humains.