Linux est un système multi-utilisateurs. Cela signifie que plusieurs personnes peuvent travailler simultanément sur le même OS, en s'y connectant à distance notamment.
Puisque plusieurs utilisateurs peuvent être connectés à Linux en même temps, celui-ci doit avoir une excellente organisation dès le départ. Ainsi chaque personne a son propre compte utilisateur, et il existe un ensemble de règles qui disent qui a le droit de faire quoi.
Je vous propose de découvrir tous ces mécanismes dans ce chapitre.
sudo: exécuter une commande en root
Lorsque vous avez installé Ubuntu, on vous a demandé le nom du compte utilisateur que vous vouliez créer. Par exemple dans mon cas j'ai créé l'utilisateur « mateo21 ».
Dans la plupart des distributions Linux on vous proposera de créer un compte utilisateur avec des droits limités, comme c'est le cas pour mon compte « mateo21 ».
Attends, c'est nous qui avons installé Linux mais on n'a pas le droit de faire tout ce que l’on veut dessus ?
Oui, et c'est une sécurité. Bien sûr, comme vous êtes aux commandes, vous pouvez à tout moment dire : « Bon allez on passe en mode chef-qui-peut-tout-faire ». Mais c'est une sécurité de ne pas avoir le droit de tout faire par défaut, car certaines commandes peuvent être dangereuses pour la stabilité et la sécurité de votre ordinateur. Avoir des droits limités, cela signifie aussi qu'on s'empêche par exemple d'exécuter la « commande de la mort qui tue » qu'on a vue dans le chapitre précédent (rm -rf /*
).
Nous allons d'abord commencer par voir comment sont organisés les utilisateurs sous Linux, puis nous verrons comment devenir le « chef ».
Plus loin dans le chapitre, nous apprendrons à créer et supprimer des utilisateurs en ligne de commande.
L'organisation des utilisateurs sous Linux
On peut créer autant d'utilisateurs que l'on veut, eux-mêmes répartis dans des groupes.
Il y a un utilisateur « spécial », root, aussi appelé superutilisateur. Celui-ci a tous les droits sur la machine.
Vous pouvez voir ce que ça donne sur la figure suivante.

Au départ, chez moi, deux utilisateurs sont créés : root et mateo21.
On ne se connecte en root que très rarement, lorsque c'est nécessaire. Certaines commandes de Linux que nous allons voir dans ce chapitre ne sont accessibles qu'à root.
Le reste du temps, on utilise le compte « limité » que l'on a créé (mateo21 dans mon cas).
Cette simple protection permet de largement limiter les dégâts en cas de fausse manipulation, de virus sur votre PC, etc. En effet, un virus ne peut rien faire de plus que vous quand vous êtes connectés avec des droits limités. En revanche, si vous êtes en root il pourra tout faire, même détruire votre ordinateur.
Sous Windows, vous êtes toujours connectés en administrateur par défaut (équivalent de root), ce qui explique pourquoi les virus y sont si dangereux.
sudo
: devenir root un instant
Par défaut, vous êtes connectés sous votre compte limité (mateo21 pour ma part).
Il est impossible sous Ubuntu de se connecter directement en root au démarrage de l'ordinateur. Comment faire alors pour exécuter des commandes que seul root a le droit d'exécuter ?
On peut devenir root temporairement à l'aide de la commande sudo
.
Cette commande signifie « Faire en se substituant à l'utilisateur » : Substitute User DO.
Écrivez donc sudo
suivi de la commande que vous voulez exécuter, comme ceci :
sudo commande
On vous demandera normalement votre mot de passe (au moins la première fois) pour exécuter la commande. Ce mot de passe est le même que celui de votre compte utilisateur limité.
Par exemple, vous pouvez exécuter un simple ls
avec les droits root (vous ne risquez rien, rassurez-vous) :
mateo21@mateo21-desktop:/home$ sudo ls [sudo] password for mateo21: autredossier Desktop Examples Images Modèles Musique tutos autresanimaux Documents images log mondossier Public Vidéos
Comme vous le voyez, on vous demande d'abord le mot de passe, par sécurité.
Faire un ls
en tant que root n'apporte rien de bien spécial, c'était simplement pour avoir un exemple « sûr » avec lequel vous ne risquez pas d'endommager votre ordinateur.
sudo su
: devenir root et le rester
Si vous tapez sudo su
(tout court), vous passerez root indéfiniment.
mateo21@mateo21-desktop:/home$ sudo su [sudo] password for mateo21: root@mateo21-desktop:/home#
Le symbole #
à la fin de l'invite de commandes vous indique que vous êtes devenus superutilisateur.
Vous pouvez alors exécuter autant de commandes en root que vous le voulez.
Pour quitter le « mode root », tapez exit
(ou faites la combinaison Ctrl + D
).
root@mateo21-desktop:/home/mateo21# exit exit mateo21@mateo21-desktop:~$
Et vous voilà redevenus simples mortels.
adduser : gestion des utilisateurs
Maintenant que vous savez passer root (temporairement ou indéfiniment), nous allons pouvoir découvrir des commandes qui sont réservées à root.adduser
et deluser
sont de celles-là. Si vous essayez de les appeler avec votre utilisateur normal, on vous dira que vous n'avez pas le droit de les utiliser. Seul root peut gérer les utilisateurs.
adduser
: ajouter un utilisateur
La commande adduser
permet d'ajouter un utilisateur. Vous devez au minimum fournir un paramètre : le nom de l'utilisateur à créer.
Par exemple, pour créer un compte pour Patrick :
root@mateo21-desktop:/home# adduser patrick Ajout de l'utilisateur « patrick »... Ajout du nouveau groupe « patrick » (1001)... Ajout du nouvel utilisateur « patrick » (1001) avec le groupe « patrick »... Création du répertoire personnel « /home/patrick »... Copie des fichiers depuis « /etc/skel »...
Pensez à rajouter un sudo
devant la commande si vous n'êtes pas déjà root ; pour cela, tapez sudo adduser patrick
. Moi je n'ai pas eu à le faire car j'ai choisi de rester root indéfiniment en tapant sudo su
auparavant.
Si vous tentez d'exécuter la commande avec votre compte limité, vous aurez une erreur de ce genre : « adduser
: Seul le superutilisateur peut ajouter un utilisateur ou un groupe sur le système ».
Le répertoire personnel de patrick est automatiquement créé (/home/patrick
) et son compte est préconfiguré.
On vous demande ensuite de taper son mot de passe :
Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd : le mot de passe a été mis à jour avec succès
Tapez le mot de passe de patrick puis faites Entrée
. Retapez-le pour valider.
Encore une fois, si vous ne voyez pas d'étoiles *
quand vous tapez le mot de passe, c'est normal ; c'est une sécurité pour qu'on ne puisse pas compter le nombre de caractères derrière votre épaule.
On vous propose ensuite de rentrer quelques informations personnelles sur patrick, comme son nom, son numéro de téléphone… Si vous voulez le faire, faites-le, mais sinon sachez que vous pouvez taper Entrée
sans rien écrire ; on ne vous embêtera pas.
Modification des informations relatives à l'utilisateur patrick Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée Nom complet []: N° de bureau []: Téléphone professionnel []: Téléphone personnel []: Autre []: Ces informations sont-elles correctes ? [o/N] o
À la fin, on vous demande de confirmer par un « o
» (oui) que tout est bon. Tapez Entrée
et ça y est, le compte de patrick est créé !
passwd
: changer le mot de passe
S'il était nécessaire de changer le mot de passe de patrick par la suite, utilisez la commande passwd
en indiquant en paramètre le nom du compte à modifier.
root@mateo21-desktop:/home# passwd patrick Entrez le nouveau mot de passe UNIX : Retapez le nouveau mot de passe UNIX : passwd : le mot de passe a été mis à jour avec succès
deluser
: supprimer un compte
patrick vous ennuie ? patrick est parti ? Si son compte n'est plus nécessaire (ou que vous voulez vous venger) vous pouvez le supprimer avec deluser
.
deluser patrick
Aucune confirmation ne vous sera demandée !
Toutefois, cette commande seule ne supprime pas le répertoire personnel de patrick. Si vous voulez supprimer aussi son home
et tous ses fichiers personnels, utilisez le paramètre --remove-home
:
deluser --remove-home patrick
addgroup : gestion des groupes
Je vous l'ai dit au début : chaque utilisateur appartient à un groupe.
Oui mais dans ce cas, à quel groupe appartiennent les utilisateurs mateo21 et patrick ? On n'a rien défini, nous !
En effet, si vous ne définissez rien, un groupe du même nom que l'utilisateur sera automatiquement créé : ainsi, mateo21 appartient au groupe mateo21 et patrick au groupe patrick.
On peut le vérifier en regardant à qui appartiennent les dossiers dans /home
via un ls -l
:
root@mateo21-desktop:~# cd /home root@mateo21-desktop:/home# ls -l total 24 drwx------ 2 root root 16384 2007-09-19 18:22 lost+found drwxr-xr-x 65 mateo21 mateo21 4096 2007-11-15 22:40 mateo21 drwxr-xr-x 2 patrick patrick 4096 2007-11-15 23:00 patrick
Souvenez-vous : la 3ème colonne indique le propriétaire du fichier ou dossier ; la 4ème indique le groupe qui possède ce fichier ou dossier.
Ainsi, le dossier mateo21 appartient à l'utilisateur mateo21 et au groupe mateo21.
Même chose pour patrick.
On constatera par ailleurs que lost+found
appartient à root et qu'il y a un groupe root (root fait donc partie du groupe root).
Bon, mais quel intérêt y a-t-il à ce que tout le monde soit dans son propre groupe, me direz-vous ?
Vous pourriez très bien vous contenter de ce fonctionnement (un utilisateur = un groupe), mais au cas où vous auriez beaucoup d'utilisateurs, je vais quand même vous montrer comment créer des groupes.
addgroup
: créer un groupe
La commande addgroup
crée un nouveau groupe. Vous avez juste besoin de spécifier le nom de celui-ci en paramètre :
root@mateo21-desktop:/home# addgroup amis Ajout du groupe « amis » (identifiant 1002)... Terminé.
Super, mais personne ne fait encore partie de ce groupe. :-(
usermod
: modifier un utilisateur
La commande usermod
permet d'éditer un utilisateur. Elle possède plusieurs paramètres ; nous allons en retenir deux :
-l : renomme l'utilisateur (le nom de son répertoire personnel ne sera pas changé par contre) ;
-g : change de groupe.
Si je veux mettre patrick dans le groupe amis
, je ferai donc comme ceci :
usermod -g amis patrick
Et pour remettre patrick dans le groupe patrick comme il l'était avant :
usermod -g patrick patrick
delgroup
: supprimer un groupe
Si vous voulez supprimer un groupe, c'est tout simple :
delgroup amis
chown : : gestion des propriétaires d'un fichier
Seul l'utilisateur root peut changer le propriétaire d'un fichier.
Supposons par exemple que mateo21 possède dans son répertoire personnel un fichier appelé rapport.txt
.
Voici le résultat d'un ls -l
pour ce fichier :
mateo21@mateo21-desktop:~$ ls -l rapport.txt -rw-r--r-- 1 mateo21 mateo21 0 2007-11-15 23:14 rapport.txt
Ce fichier, je souhaite le « donner » à patrick. C'est là qu'intervient la commande chown
.
chown
: changer le propriétaire d'un fichier
La commande chown
, qui doit être utilisée en tant que root, attend deux paramètres au moins :
le nom du nouveau propriétaire ;
le nom du fichier à modifier.
Cela donne donc :
chown patrick rapport.txt
On peut voir ensuite que patrick est bien le nouveau propriétaire du fichier :
root@mateo21-desktop:/home/mateo21# ls -l rapport.txt -rw-r--r-- 1 patrick mateo21 0 2007-11-15 23:14 rapport.txt
Seulement… il appartient toujours au groupe mateo21 !
chgrp
: changer le groupe propriétaire d'un fichier
chgrp
s'utilise exactement de la même manière que chown
à la différence près qu'il affecte cette fois le groupe propriétaire d'un fichier.
chgrp amis rapport.txt
Cette commande affectera le fichier rapport.txt
au groupe amis
.
Un petit ls -l
nous confirmera que rapport.txt
appartient désormais à patrick et au groupe amis
:
root@mateo21-desktop:/home/mateo21# ls -l rapport.txt -rw-r--r-- 1 patrick amis 0 2007-11-15 23:14 rapport.txt
chown
peut aussi changer le groupe propriétaire d'un fichier !
Eh oui ! C'est d'ailleurs l'astuce que j'utilise le plus souvent :
chown patrick:amis rapport.txt
Cela affectera le fichier à l'utilisateur patrick et au groupe amis
.
Il suffit de séparer par un symbole deux points (« : ») le nom du nouvel utilisateur (à gauche) et le nom du nouveau groupe (à droite).
-R
: affecter récursivement les sous-dossiers
Très utile aussi, l'option -R
de chown
. Elle modifie tous les sous-dossiers et fichiers contenus dans un dossier pour y affecter un nouvel utilisateur (et un nouveau groupe si on utilise la technique du deux points que l'on vient de voir).
Par exemple, si je suis sadique et que je veux donner tout le contenu du dossier personnel de patrick à mateo21 (et au groupe mateo21), c'est très simple :
chown -R mateo21:mateo21 /home/patrick/
Résultat :
root@mateo21-desktop:/home# ls -l total 24 drwx------ 2 root root 16384 2007-09-19 18:22 lost+found drwxr-xr-x 62 mateo21 mateo21 4096 2007-11-15 23:19 mateo21 drwxr-xr-x 2 mateo21 mateo21 4096 2007-11-15 23:00 patrick
Désormais tous les fichiers à l'intérieur du dossier de patrick appartiennent à mateo21 (je sais, je suis vraiment trop diabolique).
chmod : modifier les droits d'accès
On attaque maintenant la partie la plus « coton » du chapitre si je puis dire : les droits d'accès.
Le fonctionnement des droits
Chaque fichier et chaque dossier possède une liste de droits. C'est une liste qui indique qui a le droit de voir le fichier, de le modifier et de l'exécuter.
Vous avez déjà vu des listes de droits, oui oui ! Lorsque vous faites un ls -l
, il s’agit de la première colonne :
mateo21@mateo21-desktop:~$ ls -l total 40 drwxr-xr-x 2 mateo21 mateo21 4096 2007-11-13 21:53 Desktop drwxr-xr-x 2 mateo21 mateo21 4096 2007-11-13 13:46 Documents lrwxrwxrwx 1 mateo21 mateo21 26 2007-09-19 18:31 Examples -> /usr/share/example-content drwxr-xr-x 2 mateo21 mateo21 4096 2007-09-25 20:28 images drwxr-xr-x 2 mateo21 mateo21 4096 2007-10-19 01:21 Images drwxr-xr-x 3 mateo21 mateo21 4096 2007-09-25 11:11 log drwxr-xr-x 2 mateo21 mateo21 4096 2007-10-19 01:21 Modèles drwxr-xr-x 2 mateo21 mateo21 4096 2007-10-19 01:21 Musique drwxr-xr-x 2 mateo21 mateo21 4096 2007-10-19 01:21 Public -rw-r--r-- 1 mateo21 mateo21 0 2007-11-15 23:14 rapport.txt drwxr-xr-x 3 mateo21 mateo21 4096 2007-09-19 19:51 tutos drwxr-xr-x 2 mateo21 mateo21 4096 2007-10-19 01:21 Vidéos
Vous voyez tous ces d
, r
, w
et x
au début ? Ce sont ce qu'on appelle les droits d'accès du fichier ou dossier.
On peut voir cinq lettres différentes. Voici leur signification :
d (Directory) : indique si l'élément est un dossier ;
l (Link) : indique si l'élément est un lien (raccourci) ;
r (Read) : indique si on peut lire l'élément ;
w (Write) : indique si on peut modifier l'élément ;
x (eXecute) : si c'est un fichier, «
x
» indique qu'on peut l'exécuter. Ce n'est utile que pour les fichiers exécutables (programmes et scripts).
Si c'est un dossier, « x
» indique qu'on peut le « traverser », c'est-à-dire qu'on peut voir les sous-dossiers qu'il contient si on a le droit de lecture dessus.
Si la lettre apparaît, c'est que le droit existe. S'il y a un tiret à la place, c'est qu'il n'y a aucun droit.
Pourquoi est-ce qu'on voit parfois r
, w
et x
à plusieurs reprises ?
Les droits sont découpés en fonction des utilisateurs (figure suivante).

Le premier élément d
mis à part, on constate que r
, w
et x
sont répétés trois fois en fonction des utilisateurs :
le premier triplet
rwx
indique les droits que possède le propriétaire du fichier sur ce dernier ;le second triplet
rwx
indique les droits que possèdent les autres membres du groupe sur ce fichier ;enfin, le dernier triplet
rwx
indique les droits que possèdent tous les autres utilisateurs de la machine sur le fichier.
Prenons un cas concret, le fichier rapport.txt
:
mateo21@mateo21-desktop:~$ ls -l rapport.txt -rw-r--r-- 1 mateo21 mateo21 0 2007-11-15 23:14 rapport.txt
Ses droits sont : -rw-r--r--
- : le premier tiret indique qu'il ne s'agit pas d'un dossier. S'il y avait eu un
d
à la place, cela aurait indiqué qu'il s'agissait d'un dossier.rw- : indique que le propriétaire du fichier, mateo21 en l'occurrence, peut lire et modifier (et donc supprimer) le fichier. En revanche, il ne peut pas l'exécuter car il n'a pas de
x
à la fin. Je rappelle que quiconque peut modifier un fichier a aussi le droit de le supprimer.r-- : tous les utilisateurs qui font partie du groupe mateo21 mais qui ne sont pas mateo21 peuvent seulement lire le fichier. Ils ne peuvent ni le modifier, ni l'exécuter. Je reconnais qu'avoir un nom de groupe identique au nom d'utilisateur peut embrouiller : si vous êtes aussi bien organisés que sur mon premier schéma, on parlera plutôt du groupe famille.
r-- : tous les autres (ceux qui ne font pas partie du groupe mateo21) peuvent seulement lire le fichier.
En résumé, ces droits nous apprennent que l'élément est un fichier, que mateo21 peut le lire et le modifier et que tous les autres utilisateurs peuvent seulement le lire.
Et root ?
Il a quels droits ?
Souvenez-vous d'une chose : root a TOUS les droits. Il peut tout faire : lire, modifier, exécuter n'importe quel fichier.
chmod
: modifier les droits d'accès
Maintenant que nous savons voir et comprendre les droits d'accès d'un fichier, nous allons apprendre à les modifier à l'aide de la commande chmod
.
Une précision importante pour commencer : contrairement aux commandes précédentes, vous n'avez pas besoin d'être root pour utiliser chmod
. Vous devez juste être propriétaires du fichier dont vous voulez modifier les droits d'accès.
chmod
est un petit peu délicat à utiliser. En effet, on peut attribuer les droits sur un fichier / dossier via plusieurs méthodes différentes, la plus courante étant celle des chiffres.
Attribuer des droits avec des chiffres (chmod
absolu)
J'espère que vous êtes prêts pour effectuer quelques additions !
Il va falloir faire un petit peu de calcul mental. En effet, on attribue un chiffre à chaque droit :
Droit | Chiffre |
---|---|
r | 4 |
w | 2 |
x | 1 |
Si vous voulez combiner ces droits, il va falloir additionner les chiffres correspondants.
Ainsi, pour attribuer le droit de lecture et de modification, il faut additionner $4+2$, ce qui donne 6. Le chiffre 6 signifie donc « Droit de lecture et d'écriture ».
Voici la liste des droits possibles et la valeur correspondante :
Droits | Chiffre | Calcul |
---|---|---|
--- | 0 | 0 + 0 + 0 |
r-- | 4 | 4 + 0 + 0 |
-w- | 2 | 0 + 2 + 0 |
--x | 1 | 0 + 0 + 1 |
rw- | 6 | 4 + 2 + 0 |
-wx | 3 | 0 + 2 + 1 |
r-x | 5 | 4 + 0 + 1 |
rwx | 7 | 4 + 2 + 1 |
C'est compris ?
Avec ça, on peut calculer la valeur d'un triplet de droits. Il faut faire le même calcul pour les droits que l'on veut attribuer au propriétaire, au groupe et aux autres.
Par exemple, « 640 » indique les droits du propriétaire, du groupe et des autres (dans l'ordre).
6 : droit de lecture et d'écriture pour le propriétaire.
4 : droit de lecture pour le groupe.
0 : aucun droit pour les autres.
Le droit maximal que l'on puisse donner à tout le monde est 777 : droit de lecture, d'écriture et d'exécution pour le propriétaire, pour son groupe et pour tous les autres. Bref, avec un tel droit tout le monde peut tout faire sur ce fichier.
Au contraire, avec un droit de 000, personne ne peut rien faire… à part root, bien sûr.
Pour changer les droits sur le fichier rapport.txt
, et être le seul autorisé à le lire et l'éditer, je dois exécuter cette commande :
chmod 600 rapport.txt
Un petit ls -l
pour voir le résultat :
mateo21@mateo21-desktop:~$ ls -l rapport.txt -rw------- 1 mateo21 mateo21 0 2007-11-15 23:14 rapport.txt
Bingo !
On a bien confirmation que seul le propriétaire du fichier, c'est-à-dire moi, peut le lire et le modifier !
Attribuer des droits avec des lettres (chmod
relatif)
Il existe un autre moyen de modifier les droits d'un fichier. Il revient un peu au même mais permet parfois de paramétrer plus finement, droit par droit.
Dans ce mode, il faut savoir que :
u = user (propriétaire) ;
g = group (groupe) ;
o = other (autres).
… et que :
+ signifie : « Ajouter le droit » ;
- signifie : « Supprimer le droit » ;
= signifie : « Affecter le droit ».
Maintenant que vous savez cela, vous pouvez écrire :
chmod g+w rapport.txt
Signification : « Ajouter le droit d'écriture au groupe ».
chmod o-r rapport.txt
Signification : « Enlever le droit de lecture aux autres ».
chmod u+rx rapport.txt
Signification : « Ajouter les droits de lecture et d'exécution au propriétaire ».
chmod g+w,o-w rapport.txt
Signification : « Ajouter le droit d'écriture au groupe et l'enlever aux autres ».
chmod go-r rapport.txt
Signification : « Enlever le droit de lecture au groupe et aux autres ».
chmod +x rapport.txt
Signification : « Ajouter le droit d'exécution à tout le monde ».
chmod u=rwx,g=r,o=- rapport.txt
Signification : « Affecter tous les droits au propriétaire, juste la lecture au groupe, rien aux autres ».
Voilà, ouf ! J'ai préféré vous expliquer le fonctionnement à travers des exemples concrets plutôt que de faire un cours théorique sur la syntaxe d'une des utilisations possibles de chmod
.
Normalement si vous suivez mes exemples vous devriez être capables de tout faire !
Et toujours… -R
pour affecter récursivement
Le paramètre -R
existe aussi pour chmod
. Si vous affectez des droits sur un dossier avec -R
, tous ses fichiers et sous-dossiers récupèreront le même droit.
Si je veux être le seul à pouvoir lire, éditer et exécuter les fichiers de mon répertoire personnel et de tous ses fichiers, j'ai juste besoin d'écrire :
chmod -R 700 /home/mateo21
C'est tout !
En résumé
Chaque personne qui utilise une machine Linux possède un compte utilisateur.
Les utilisateurs sont classés par groupes.
Il existe un superutilisateur qui a tous les droits : root. C'est l'administrateur de la machine, le seul à être autorisé à installer des programmes ou effectuer certaines modifications sur le système.
Certaines commandes ne fonctionnent que lorsqu'on est root et nécessitent donc de se transformer en root à l'aide de
sudo
. C'est le cas de la commande d'ajout d’utilisateur (adduser
), de suppression d'utilisateur (deluser
) ou encore de changement de propriétaire d'un fichier (chown
).On peut modifier les droits d'accès à un fichier avec
chmod
. Il existe trois types de droits :r
(droit de lecture),w
(droit d'écriture) etx
(droit d'exécution).