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 :

1
$ cat /etc/passwd
2
root:x:0:0:root:/root:/bin/bash
3
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
4
bin:x:2:2:bin:/bin:/usr/sbin/nologin
5
sys:x:3:3:sys:/dev:/usr/sbin/nologin
6
sync:x:4:65534:sync:/bin:/bin/sync
7
games:x:5:60:games:/usr/games:/usr/sbin/nologin
8
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
9
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
10
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
11
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
12
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
13
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
14
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
15
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
16
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
17
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
18
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
19
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
20
systemd-timesync:x:100:103:systemd Time Synchronization,,,:/run/systemd:/bin/false
21
systemd-network:x:101:104:systemd Network Management,,,:/run/systemd/netif:/bin/false
22
systemd-resolve:x:102:105:systemd Resolver,,,:/run/systemd/resolve:/bin/false
23
messagebus:x:104:111::/var/run/dbus:/bin/false
24
avahi:x:105:112:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
25
uuidd:x:106:114::/run/uuidd:/bin/false
26
Debian-exim:x:107:115::/var/spool/exim4:/bin/false
27
statd:x:108:65534::/var/lib/nfs:/bin/false
28
avahi-autoipd:x:109:118:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
29
colord:x:110:120:colord colour management daemon,,,:/var/lib/colord:/bin/false
30
dnsmasq:x:111:65534:dnsmasq,,,:/var/lib/misc:/bin/false
31
sshd:x:113:65534::/var/run/sshd:/usr/sbin/nologin
32
pulse:x:114:122:PulseAudio daemon,,,:/var/run/pulse:/bin/false
33
rtkit:x:115:124:RealtimeKit,,,:/proc:/bin/false
34
saned:x:116:125::/var/lib/saned:/bin/false
35
usbmux:x:117:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
36
hplip:x:119:7:HPLIP system user,,,:/var/run/hplip:/bin/false
37
kyane:x:1000:1000:Kyâne,,,:/home/kyane:/usr/bin/zsh
38
geoclue:x:120:127::/var/lib/geoclue:/bin/false
39
_apt:x:121:65534::/nonexistent:/bin/false
40
Debian-minetest:x:122:60:Minetest dedicated server,,,:/var/games/minetest-server:/bin/false
41
vde2-net:x:123:132::/var/run/vde2:/bin/false
42
radvd:x:124:65534::/var/run/radvd:/bin/false
43
snort:x:125:135:Snort IDS:/var/log/snort:/bin/false
44
ntp:x:103:106::/nonexistent:/usr/sbin/nologin
45
systemd-coredump:x:997:997:systemd Core Dumper:/:/sbin/nologin
46
debian-tor:x:126:137::/var/lib/tor:/bin/false
47
_rpc:x:127:65534::/run/rpcbind:/usr/sbin/nologin
48
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éfinitionUID 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éthodeLa 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.

1
$ id                 
2
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.