🎯 Ce que tu sauras à la fin
Comptes
Lire /etc/passwd, créer des utilisateurs et des groupes.
root et sudo
Utiliser les droits d'administrateur à bon escient.
Permissions
Décoder rwxr-xr-x et le modifier avec chmod.
Cas spéciaux
umask, SUID, sticky bit et ACL.
Utilisateurs et groupes
Pour le noyau, un utilisateur n'est pas un nom mais un numéro : l'UID (User ID). De même, chaque groupe a
un GID. Les noms ne sont qu'une traduction pour les humains, stockée dans des fichiers texte de /etc.
user@ubuntu:~$ whoami user user@ubuntu:~$ id uid=1000(user) gid=1000(user) groupes=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),114(lpadmin)
Le premier compte créé à l'installation reçoit l'UID 1000 et appartient au groupe sudo : c'est ce qui lui donne le droit d'administrer.
| UID | Qui ? |
|---|---|
0 | root, l'administrateur. Tous les droits, sans exception. |
1 à 999 | Comptes système : services qui tournent en arrière-plan (www-data pour le serveur web, syslog…). Personne ne s'y connecte. |
1000 et plus | Les humains : toi et les autres utilisateurs. |
Le fichier /etc/passwd
Malgré son nom, il ne contient plus de mot de passe depuis longtemps : juste la liste des comptes, un par ligne, en 7 champs séparés par :.
useridentifiantxmot de passedans /etc/shadow1000UID1000GIDgroupe principaluser,,,description/home/userdossier perso/bin/bashshell| Fichier | Contenu | Lisible par |
|---|---|---|
/etc/passwd | Les comptes | Tout le monde |
/etc/shadow | Les mots de passe hachés (jamais en clair) et leur date d'expiration | root uniquement |
/etc/group | Les groupes et leurs membres | Tout le monde |
Regarde les dernières colonnes de /etc/passwd : beaucoup de comptes ont pour shell /usr/sbin/nologin. Impossible de s'y connecter :
ils existent seulement pour qu'un service tourne avec ses propres droits, isolé du reste.
root, sudo et le moindre privilège
root peut tout faire, y compris détruire le système en une commande. D'où le principe du moindre privilège : on travaille
avec un compte normal, et on n'emprunte les droits de root que pour une commande précise, avec sudo.
user@ubuntu:~$ cat /etc/shadow cat: /etc/shadow: Permission non accordée user@ubuntu:~$ sudo head -n 2 /etc/shadow [sudo] Mot de passe de user : root:*:19800:0:99999:7::: daemon:*:19800:0:99999:7:::
| Commande | Effet |
|---|---|
sudo commande | Exécute une commande en tant que root. Demande ton mot de passe, mémorisé 15 minutes. |
sudo -u alice commande | Exécute une commande en tant qu'un autre utilisateur |
sudo -i | Ouvre un shell root complet (invite #). À utiliser avec parcimonie, et à quitter avec exit. |
sudo -l | Liste ce que tu as le droit de faire avec sudo |
su - alice | Devient alice (demande le mot de passe d'alice) |
Sur Ubuntu, les membres du groupe sudo. Les règles complètes sont dans /etc/sudoers, qu'on ne modifie jamais
directement mais avec sudo visudo : il vérifie la syntaxe avant d'enregistrer. Une erreur dans ce fichier peut te priver de sudo.
Chaque utilisation de sudo est journalisée dans /var/log/auth.log.
« Permission denied » est une protection, pas un obstacle à contourner. Avant d'ajouter sudo, demande-toi si l'action est normale.
Et ne colle jamais une commande trouvée sur Internet qui commence par sudo sans la comprendre.
Créer et gérer des comptes
user@ubuntu:~$ sudo adduser alice # création interactive (mot de passe, nom complet…) user@ubuntu:~$ sudo addgroup projet # créer un groupe user@ubuntu:~$ sudo usermod -aG projet alice # ajouter alice au groupe projet user@ubuntu:~$ groups alice alice : alice projet user@ubuntu:~$ su - alice # se connecter en tant qu'alice alice@ubuntu:~$ exit user@ubuntu:~$ sudo passwd alice # changer son mot de passe user@ubuntu:~$ sudo deluser --remove-home alice # supprimer le compte et son dossier
usermod -G
Sans le -a (append), usermod -G projet user remplace tous les groupes secondaires par projet…
y compris sudo. Résultat : plus de droits d'administration. Retiens le duo : -aG, toujours.
Après avoir ajouté un utilisateur à un groupe, il doit se déconnecter et se reconnecter pour que le changement s'applique à sa session.
id affiche les groupes de la session en cours.
adduser et addgroup sont les outils conviviaux de Debian et Ubuntu. Sur d'autres distributions, on utilise les commandes de bas niveau
useradd et groupadd, qui demandent plus d'options (useradd -m -s /bin/bash alice).
Les permissions : rwx décodé
user@ubuntu:~$ ls -l script.sh -rwxr-xr-- 1 user projet 220 oct. 23 10:12 script.sh
-type- fichier, d dossierrwxpropriétaire (u)userr-xgroupe (g)projetr--autres (o)tout le mondeChaque trio se lit toujours dans le même ordre : r (read), w (write), x (execute). Un tiret signifie que le droit est absent. Linux applique le premier trio qui te concerne : si tu es le propriétaire, seuls les droits du propriétaire comptent.
| Droit | Sur un fichier | Sur un dossier |
|---|---|---|
r — 4 | Lire le contenu | Lister les noms qu'il contient (ls) |
w — 2 | Modifier le contenu | Créer, renommer, supprimer des fichiers dedans |
x — 1 | L'exécuter comme un programme | Y entrer (cd) et accéder à ses fichiers |
Pouvoir supprimer un fichier ne dépend pas de ses propres droits, mais du droit w sur le dossier qui le contient. Un fichier en
lecture seule dans ton dossier personnel peut donc être supprimé (rm te demande simplement confirmation).
Modifier avec chmod : la notation symbolique
On combine qui (u propriétaire, g groupe, o autres, a tous), une action
(+ ajouter, - retirer, = fixer exactement) et des droits :
user@ubuntu:~$ chmod u+x script.sh # rendre exécutable pour soi user@ubuntu:~$ chmod o-r notes.txt # retirer la lecture aux autres user@ubuntu:~$ chmod g+w,o= partage.txt # groupe peut écrire, autres : plus rien user@ubuntu:~$ chmod -R a+rX public/ # -R : récursif ; X : x seulement sur les dossiers
La notation octale : les administrateurs parlent en chiffres
Chaque droit vaut un nombre : r = 4, w = 2, x = 1. On additionne pour chaque trio, et on obtient trois chiffres :
rwx4+2+1 = 7propriétairer-x4+0+1 = 5grouper-x4+0+1 = 5autres755chmod 755le résultat| Valeur | Droits | Usage typique |
|---|---|---|
755 | rwxr-xr-x | Scripts, programmes, dossiers partagés en lecture |
644 | rw-r--r-- | Documents, fichiers de configuration |
700 | rwx------ | Dossier privé |
600 | rw------- | Fichiers secrets : clés SSH, mots de passe |
777 | rwxrwxrwx | À éviter : tout le monde peut tout faire |
chmod 777
Face à une erreur de permission, beaucoup de tutoriels conseillent chmod 777. Ça « marche »… en ouvrant le fichier à n'importe qui,
y compris à un programme malveillant. Cherche plutôt qui doit accéder au fichier, et donne-lui le droit minimal nécessaire.
Changer le propriétaire : chown et chgrp
user@ubuntu:~$ sudo chown alice rapport.txt # nouveau propriétaire user@ubuntu:~$ sudo chown alice:projet rapport.txt # propriétaire et groupe user@ubuntu:~$ sudo chgrp -R projet /srv/projet # groupe, récursivement
Seul root peut donner un fichier à quelqu'un d'autre : d'où le sudo.
Les droits par défaut : umask
Quand tu crées un fichier, qui décide de ses droits ? Le umask, un masque qui retire des droits au maximum possible
(666 pour un fichier, 777 pour un dossier).
user@ubuntu:~$ umask 0002 user@ubuntu:~$ touch f.txt; mkdir d; ls -ld f.txt d drwxrwxr-x 2 user user 4096 oct. 23 10:30 d # 777 - 002 = 775 -rw-rw-r-- 1 user user 0 oct. 23 10:30 f.txt # 666 - 002 = 664
Un fichier n'est jamais exécutable à sa création : il faut le décider explicitement avec chmod +x. C'est une sécurité.
Droits spéciaux : SUID, SGID, sticky bit et ACL
SUID (s chez le propriétaire)
Le programme s'exécute avec les droits de son propriétaire. C'est ainsi que passwd peut écrire dans /etc/shadow.
SGID (s chez le groupe)
Sur un dossier, les fichiers créés dedans héritent de son groupe. Idéal pour un dossier d'équipe.
Sticky bit (t)
Dans un dossier ouvert à tous, chacun ne peut supprimer que ses fichiers. C'est le cas de /tmp.
ACL
Des droits sur mesure pour un utilisateur précis, au-delà du trio u/g/o. Un + apparaît à la fin des droits dans ls -l.
user@ubuntu:~$ ls -l /usr/bin/passwd; ls -ld /tmp -rwsr-xr-x 1 root root 64152 ... /usr/bin/passwd drwxrwxrwt 18 root root 4096 ... /tmp user@ubuntu:~$ setfacl -m u:alice:r notes.txt # paquet acl : sudo apt install acl user@ubuntu:~$ getfacl notes.txt user::rw- user:alice:r-- ...
En octal, ces bits forment un quatrième chiffre placé devant : 4 = SUID, 2 = SGID, 1 = sticky. Ainsi chmod 2775 dossier active le SGID.
Glossaire du module
- UID / GID
- Numéro d'utilisateur / de groupe. root a l'UID 0.
- root
- Le super-utilisateur, aux droits illimités.
- sudo
- Exécute une commande avec les droits de root (ou d'un autre utilisateur).
- Moindre privilège
- Principe : n'accorder que les droits strictement nécessaires.
- /etc/passwd
- La liste des comptes.
- /etc/shadow
- Les mots de passe hachés, lisibles par root seulement.
- Groupe principal / secondaire
- Le groupe par défaut des fichiers créés / les groupes supplémentaires.
- rwx
- Lire, écrire, exécuter (ou entrer, pour un dossier).
- u / g / o / a
- Propriétaire, groupe, autres, tous.
- Notation octale
- Droits en chiffres : r=4, w=2, x=1 (ex. 755).
- umask
- Masque qui fixe les droits par défaut des nouveaux fichiers.
- SUID / SGID / sticky
- Droits spéciaux : exécuter en tant que le propriétaire, hériter du groupe, protéger les fichiers d'autrui.
- ACL
- Liste de contrôle d'accès : droits fins par utilisateur.
🧠 Quiz : as-tu tout retenu ?
-rwxr-x---, que peuvent faire les « autres » ?--- : aucun droit.chmod 644 ?x ?x, impossible de faire cd dans le dossier ou d'ouvrir ses fichiers.-a, -G remplace tous les groupes secondaires, y compris sudo.sudo demande-t-il ?sudo vérifie que c'est bien toi, puis consulte ses règles. Sur Ubuntu, root n'a même pas de mot de passe par défaut.passwd peut-il modifier /etc/shadow, réservé à root ?-rwsr-xr-x : le s fait tourner le programme avec les droits de son propriétaire, root.0022, quels droits a un nouveau fichier ?x par défaut.🚀 Mission pratique
À faire dans la machine virtuelle
Coche chaque étape une fois faite : sa correction s'affiche juste en dessous.
- ✅ Correction
$ id uid=1000(user) gid=1000(user) groupes=1000(user),4(adm),27(sudo),... $ grep user /etc/passwd user:x:1000:1000:user,,,:/home/user:/bin/bash
grepfiltre les lignes contenant un mot : on le détaillera au module 05. - ✅ Correction
$ less /etc/passwd $ wc -l /etc/passwd 37 /etc/passwd
Presque toutes les lignes sauf root et user sont des comptes système, avec
/usr/sbin/nologinou/bin/falseen dernier champ. Le nombre exact dépend des paquets installés. - ✅ Correction
$ cat /etc/shadow cat: /etc/shadow: Permission non accordée $ sudo cat /etc/shadow root:*:... user:$y$j9T$...:20384:0:99999:7:::
Le long texte après
user:est le hachage du mot de passe, pas le mot de passe lui-même. Le*de root signifie : pas de mot de passe, connexion directe impossible. - ✅ Correction
$ sudo adduser alice $ sudo addgroup projet $ sudo usermod -aG projet alice $ sudo usermod -aG projet $USER $ groups alice alice : alice projet
Pour que ton appartenance au groupe soit active, déconnecte-toi puis reconnecte-toi (ou ouvre un shell avec
su - $USER). - ✅ Correction
$ su - alice alice$ whoami alice alice$ ls /home/user ls: impossible d'ouvrir le répertoire '/home/user': Permission non accordée alice$ exit
Sur Ubuntu 24.04, les dossiers personnels sont en
750(drwxr-x---) : les autres utilisateurs n'y entrent pas. - ✅ Correction
$ echo 'echo "Bonjour $USER"' > bonjour.sh $ ./bonjour.sh bash: ./bonjour.sh: Permission non accordée $ chmod u+x bonjour.sh $ ./bonjour.sh Bonjour user
- ✅ Correction
$ echo "code 1234" > secret.txt $ chmod 600 secret.txt $ ls -l secret.txt -rw------- 1 user user 10 ... secret.txt
Alice ne pourrait de toute façon pas atteindre ton dossier (étape 5). Pour tester sur un fichier qu'elle peut atteindre, place-le dans
/tmp. - ✅ Correction
$ sudo mkdir /srv/projet $ sudo chown root:projet /srv/projet $ sudo chmod 2775 /srv/projet $ ls -ld /srv/projet drwxrwsr-x 2 root projet 4096 ... /srv/projet $ touch /srv/projet/test && ls -l /srv/projet -rw-rw-r-- 1 user projet 0 ... test
Grâce au SGID (
s), le fichier créé hérite du groupeprojet. Il faut être dans le groupe (reconnecté) pour y écrire. - ✅ Correction
$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root ... /usr/bin/passwd $ ls -ld /tmp drwxrwxrwt ... /tmp $ umask 0002
- ✅ Correction
$ sudo apt install acl $ echo "pour alice" > /tmp/partage.txt && chmod 600 /tmp/partage.txt $ setfacl -m u:alice:r /tmp/partage.txt $ getfacl /tmp/partage.txt user::rw- user:alice:r-- $ sudo deluser --remove-home alice
ls -laffiche alors-rw-r-----+: le+signale une ACL.
💬 Questions fréquentes
Les questions qui reviennent le plus souvent sur ce module, avec leurs réponses.
Quel est le mot de passe de root sur Ubuntu ?
Il n'y en a pas : le compte root est verrouillé (le * dans /etc/shadow). On passe par sudo, avec son propre mot de passe.
C'est plus sûr : chaque action d'administration est attribuée à une personne et journalisée. (Exception : l'installation automatique de VirtualBox
définit parfois un mot de passe root, voir le module 00.)
J'ai ajouté mon compte à un groupe, mais id ne le montre pas
Les groupes sont lus à l'ouverture de session. Déconnecte-toi et reconnecte-toi. Pour tester sans fermer la session : su - $USER,
ou newgrp projet dans le terminal courant.
« sudo: unable to resolve host … »
Le nom de la machine (hostname) ne figure pas dans /etc/hosts, souvent après un changement de nom. Ajoute la ligne
127.0.1.1 nom-de-la-machine dans /etc/hosts avec sudo nano /etc/hosts. C'est un avertissement : la commande s'exécute quand même.