dernière modification : 2025

Privilèges

Sous Unix, le super-utilisateur s’appelle root. Son uid est 0, et son groupe principal est root (de gid 0).

1. su

La commande su permet de changer d’identité, donc en particulier de prendre l’identité de root.

$ whoami
jaclin

$ su              # changement d'identité : jaclin va devenir root
Mot de passe :   # jaclin doit donner ici le mot de passe de root

# whoami
root

# id
uid=0(root) gid=0(root) groupes=0(root)

# ^D   # retour à l'identité première

$ whoami
jaclin

su permet donc à un utilisateur connaissant le mot de passe root d’acquérir les privilèges du super-utilisateur. En réalité, su permet d’endosser l’identité de n’importe qui (cf man su).

2. sudo

S’il y est autorisé, un utilisateur peut exécuter une commande particulière en tant que root via la commande sudo :

$ whoami
jaclin

$ sudo whoami
root

$ id
uid=1000(jaclin) gid=1000(jaclin) groupes=1000(jaclin),10(wheel)

$ sudo id
uid=0(root) gid=0(root) groupes=0(root)

En réalité, à l’instar de su, sudo permet d’endosser l’identité de n’importe qui.

su est une commande historique, sudo ne l’est pas (elle est apparue dans les années 1980). Elle est néanmoins omniprésente sur Linux.

3. su vs sudo

sudo offre plus de possibilités que su, en permettant un réglage fin des privilèges accordés aux utilisateurs. Son paramètrage est défini dans le fichier /etc/sudoers et expliqué via man sudoers.

Lorsque sudo demande un mot de passe, l’utilisateur doit donner son propre mot de passe (la connaissance du mot de passe root n’est donc pas nécessaire pour devenir root via sudo). Alors que lorsque su demande un mot de passe, l’utilisateur doit donner le mot de passe du compte cible (il faut donc connaitre le mot de passe root pour devenir root via su).

Cette différence est importante : sudo permet d’autoriser un utilisateur à exécuter toutes ou certaines commandes en tant que root sans qu’il connaisse le mot de passe de root. C’est judicieux lorsque le système est géré par une équipe tournante d’administrateurs système, car cela évite de changer le mot de passe root à chaque départ de l’un d’entre eux. Mais en contre-partie, si un utilisateur habilité par sudo se fait pirater son compte, alors l’intru pourra lui aussi exécuter des commandes en tant que root.

avantages inconvénients

su

la compromission du compte personnel d’un administrateur ne donne pas accès au compte root

tous les administrateurs connaissent le mot de passe de root

sudo

le passe de root peut rester secret, il n’est pas nécessaire aux administrateurs

si on usurpe l’identité d’un administrateur, alors rien n’empêche l’usurpateur de devenir root

sudo -i permet de lancer un shell en tant que root (comme le fait su).

4. Exemples de tâches d’administration

4.1. Sur le système de fichiers

Chaque entrée du système de fichiers possède un propriétaire, qui est le compte qui l’a créé. Mais root, et lui seul, peut le modifier avec la commande chown (change owner) :

$ whoami
jaclin

$ touch /tmp/un_fichier  # création d'un fichier vide

$ ll /tmp/un_fichier
-rw-r--r--  1 jaclin jaclin 0 20 nov.  20:31 /tmp/un_fichier

$ chown root /tmp/un_fichier
chown: modification du propriétaire de '/tmp/un_fichier': Opération non permise

$ sudo chown root /tmp/un_fichier

$ ll /tmp/un_fichier
-rw-r--r--  1 root jaclin 0 20 nov.  20:31 /tmp/un_fichier

4.2. Les logs

Surveiller l’activité du système est une tâche essentielle de l’administrateur. Cela lui permet de traquer des anomalies de fonctionnement et donc d’anticiper les problèmes (partition pleine, agonie d’un disque, etc.).

Les logs (journaux) consignent les évènements qui se produisent sur le système.

Unix traditionnel

Historiquement, les logs d’Unix sont pris en charge par le service syslog, qui produit des journaux (de simples fichiers texte) dans le répertoire /var/log. On les consulte comme on consulte un fichier texte :

$ tail -f /var/log/messages
Linux avec systemd

Pour les distributions ayant adopté systemd, les logs sont gérés par journald, un module de systemd. On parcourt alors les logs avec la commande journalctl :

## consulter chronologiquement le journal
$ sudo journalctl

## consulter anti-chronologiquement le journal
$ sudo journalctl -r

## suivre l'évolution du journal
$ sudo journalctl -f

Résumé
  • su et sudo permettent à un compte d’acquérir les super privilèges

  • journalctl visualise les journaux du système (si systemd est opérant)