propre compte utilisateur, et il existe un ensemble de règles qui disent qui a le droit de faire quoi.
En installant Ubuntu, on a demande le nom du compte utilisateur à créer. C'est un compte avec des
droits limités.
C'est une sécurité.
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" appelé root, aussi appelé super-utilisateur. Il a tous les droits sur la machine.
Voici une représentation schématique :
Au départ, 2 utilisateurs sont créés : root et alain.
On ne se connecte en root que très rarement,
lorsque c'est nécessaire. Certaines commandes de Linux ne sont accessibles qu'à root.
Tout le reste du temps, on utilise le compte "limité" qu'on a créé.
Cette simple protection permet de largement limiter les dégâts en cas de fausse manipulation, de virus sur le PC, etc. En effet, un virus ne peut rien faire de plus que nous quand on est connecté avec des droits limités. En revanche, si on est en root il pourra tout faire, même détruire l'ordinateur.
 |
Exception : Ubuntu est une des rares distributions à ne pas autoriser de se connecter (logger) en root. Le compte root existe mais on n'y a pas accès directement. Ce n'est pas un problème comme on va le voir, car on peut y accéder indirectement.
Ce choix est justifié par le fait qu'il est dangereux de laisser le compte root entre les mains d'un débutant. |
sudo : devenir root un instant
Par défaut, on est connecté sous son compte limité.
Il est impossible sous Ubuntu de se connecter directement en root au démarrage de l'ordinateur.
On peut devenir root
temporairement à l'aide de la commande
sudo
.
Cette commande signifie "Faire en tant que super-utilisateur" :
Super
User
DO.
Cela donne :
Code : Console
sudo commande
On demande normalement le mot de passe (au moins la première fois) pour exécuter la commande. Ce mot de passe est le même que celui du compte utilisateur limité.
Par exemple, on peut exécuter un simple ls avec les droits root :
Code : Console
alain@alain-pc01:/home$ sudo ls
[sudo] password for alain:
autredossier | Desktop | Examples | Images | Modèles/ | Musique | tutos |
autresanimaux | Documents | images | log | mondossier | Public | Vidéos |
Comme on le voit, on demande d'abord le mot de passe par sécurité.
sudo su : devenir root et le rester
Si on tape sudo su (tout court), on passe root indéfiniment.
Code : Console
alain@alain-pc01:/home$ sudo su
[sudo] password for alain:
root@alain-pc01:/home#
Le symbole # à la fin de l'invite de commandes indique que l'on est devenu super-utilisateur.
Pour quitter le "mode root", taper exit (ou faire la combinaison Ctrl + D).
Code : Console
root@alain-pc01:/home/alain# exit
exit
alain@alain-pc01:~$
 |
Sous les autres distributions qu'Ubuntu, écrire "su" suffit à passer root.
Il est néanmoins recommandé dans ce cas d'ajouter un tiret en paramètre, c'est-à-dire d'écrire "su -". L'ajout du tiret a pour effet de rendre accessibles certains programmes destinés seulement à root. Par ailleurs, cela nous place directement dans le dossier personnel de root (/root). |
adduser : ajouter un utilisateur
adduser et deluser sont des commandes réservées à root.
Si on veut essayer de les appeler en utilisateur normal, on nous dira qu'on n'a 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. On doit au minimum fournir un paramètre : le nom de l'utilisateur à créer.
Par exemple, pour créer un compte pour simone :
Code : Console
root@alain-pc01:/home# adduser simone
Ajout de l'utilisateur « simone »…
Ajout du nouveau groupe « simone » (1001)…
Ajout du nouvel utilisateur « simone » (1001) avec le groupe « simone »…
Création du répertoire personnel « /home/simone »…
Copie des fichiers depuis « /etc/skel »…
Penser à rajouter un sudo devant la commande si on n'est pas déjà root, c'est-à-dire tapez
sudo adduser simone
.
Le répertoire personnel de simone est automatiquement créé (/home/simone) et son compte est préconfiguré.
On nous demande ensuite de taper son mot de passe :
Code : Console
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
Taper le mot de passe de simone, puis faites Entrée. Retaper le mot de passe pour valider.
On ne voit pas d'étoiles * quand on tape le mot de passe sous linux par sécurité.
On propose ensuite de rentrer quelques informations personnelles sur simone, comme son nom, son numéro de téléphone… Ce n'est pas obligatoir. On peut taper Entrée sans rien écrire.
Code : Console
Modification des informations relatives à l'utilisateur simone
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
On demande à la fin de confirmer par un "o" (oui) que tout est bon. Taper Entrée, et ça y est, simone est créé.
passwd : changer le mot de passe
S'il est nécessaire de changer le mot de passe de simone par la suite, utiliser la commande passwd en indiquant en paramètre le nom du compte à modifier.
Code : Console
root@alain-pc01:/home# passwd simone
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
 |
Attention ! Si on appelle passwd sans préciser de compte en paramètre, c'est le mot de passe de root qu'on va changer ! |
deluser : supprimer un compte
Pour supprimer un compte, on utilise deluser. Par exemple, pour supprimer le compte de Julien :
Code : Console
deluser julien
Aucune confirmation n'est demandée.
 |
Surtout, ne pas supprimer son compte utilisateur !
En effet, si je le fais, il n'y aura plus que root sur la machine... et Ubuntu interdit de se logger en root. Par conséquent, au prochain démarrage de la machine on ne pourra pas se connecter… et on sera complètement coincé ! |
Toutefois, cette commande seule ne supprime pas le répertoire personnel de Julien. Si on veut supprimer aussi son home et tous ses fichiers personnels, utiliser le paramètre
--remove-home
:
Code : Console
deluser --remove-home julien
 |
adduser et deluser sont des commandes qui n'existent que dans Debian et tous ses descendants, dont Ubuntu.
Partout ailleurs, on doit utiliser useradd et userdel qui sont les commandes Unix traditionnelles qui marchent partout. Elles font en gros la même chose mais de manière beaucoup plus basique : si on n'appelle pas passwd nous-même, le compte ne sera pas activé et n'aura pas de mot de passe. |
addgroup : ajouter un groupe
Chaque utilisateur appartient à un groupe.
Si on ne définit rien, un groupe du même nom que l'utilisateur sera automatiquement créé. Ainsi, alain appartient au groupe alain, et nicolas au groupe nicolas.
Dans ce cas, on peut le vérifier en regardant à qui appartiennent les dossiers dans /home via un ls -l :
Code : Console
root@alain-pc01:~# cd /home
root@alain-pc01:/home# ls -l
total 24
drwx------ | 2 | root | root | 16384 | 2007-09-19 | 18:22 | lost+found |
drwxr-xr-x | 65 | alain | alain | 4096 | 2007-11-15 | 22:40 | alain |
drwxr-xr-x | 2 | nicolas | nicolas | 4096 | 2007-11-15 | 23:00 | nicolas |
La 3ème colonne indique le propriétaire du fichier ou dossier, et la 4ème indique le groupe qui possède ce fichier ou dossier.
Ainsi, le dossier alain appartient à l'utilisateur alain et au groupe alain.
De même pour nicolas.
On constate par ailleurs que lost+found appartient à root, et qu'il y a un groupe root (root fait donc partie du groupe root).
On peut très bien avoir ce type de fonctionnement (un utilisateur = un groupe). Mais si par exemple, il y a beaucoup d'utilisateurs, mieux vaudra créer des groupes.
addgroup : créer un groupe
La commande addgroup crée un nouveau groupe. On a juste besoin de spécifier le nom du groupe en paramètre :
Code : Console
root@alain-pc01:~# cd /home
root@alain-pc01:/home# addgroup amis
Ajout du groupe « amis » (identifiant 1002)…
Terminé.
Reste à y rattacher un ou des utilisateurs.
usermod : modifier un utilisateur
La commande usermod permet d'éditer un utilisateur. Elle possède plusieurs paramètres, on va en retenir 2 :
- -l : renomme l'utilisateur (le nom de son répertoire personnel ne sera pas changé par contre)
- -g : change de groupe
Pour mettre nicolas dans le groupe amis, je fais comme ceci :
Code : Console
usermod -g amis nicolas
Et pour remettre nicolas dans le groupe nicolas :
Code : Console
usermod -g nicolas nicolas
 |
Il est aussi possible qu'un utilisateur appartienne à plusieurs groupes. Pour cela, utiliser le paramètre -G (majuscule).
Exemple : usermod -G amis,bordeaux,collegues nicolas
Séparer les noms des groupes par une virgule, sans espace entre chaque nom de groupe. |
 |
Faire très attention en utilisant usermod ! Lorsqu'on utilise -G, l'utilisateur change de groupe peu importe les groupes auxquels il appartenait auparavant.
Si on veut ajouter des groupes à un utilisateur (sans perdre les groupes auxquels il appartenait auparavant), utiliser -a :
usermod -aG amis patrick |
delgroup : supprimer un groupe
Pour supprimer un groupe :
Code : Console
delgroup amis
 |
addgroup et delgroup n'existent pas ailleurs que sous Debian et ses dérivés (même remarque que pour adduser et deluser).
Les commandes "traditionnelles" qui marchent partout sont groupadd et groupdel, mais elles offrent moins d'options. |
chown : changer le propriétaire d'un fichier
Seul root peut changer le propriétaire d'un fichier.
Par exemple, alain possède dans son répertoire personnel un fichier appelé "rapport.txt". Si on fait ls -l pour ce fichier :
Code : Console
alain@alain-pc01:~$ ls -l rapport.txt
-rw-r--r-- 1 alain alain 0 2007-11-15 23:14 rapport.txt
 |
Petite astuce : comme on le voit, si on précise un nom de fichier en dernier paramètre de la commande ls, on ne verra que ce fichier dans les résultats.
Le joker * est là aussi utilisable : ls -l *.jpg afficherait uniquement les images JPEG contenues dans ce dossier. |
On veut "donner" ce fichier à nicolas. On va utiliser la commande chown.
chown : changer le propriétaire d'un fichier
La commande chown, qui doit être utilisée en tant que root, attend 2 paramètres au moins :
- Le nom du nouveau propriétaire
- Le nom du fichier à modifier
Code : Console
chown nicolas rapport.txt
On peut voir ensuite que nicolas est bien le nouveau propriétaire du fichier :
Code : Console
root@alain-pc01:/home/alain# ls -l rapport.txt
-rw-r--r-- 1 nicolas alain 0 2007-11-15 23:14 rapport.txt
Seulement, il appartient toujours au groupe alain !
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.
Code : Console
chgrp amis rapport.txt
… affectera le fichier rapport.txt au groupe "amis".
Vérifions avec ls -l que rapport.txt appartient désormais à nicolas et au groupe amis :
Code : Console
root@alain-pc01:/home/alain# ls -l rapport.txt
-rw-r--r-- 1 nicolas amis 0 2007-11-15 23:14 rapport.txt
chown peut aussi changer le groupe propriétaire d'un fichier !
Code : Console
chown nicolas:amis rapport.txt
… affectera le fichier à l'utilisateur nicolas 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 qu'on vient de voir).
Par exemple, si je veux donner tout le contenu du dossier personnel de nicolas à alain (et au groupe alain), c'est très simple :
Code : Console
chown -R alain:alain /home/nicolas/
Résultat :
Code : Console
root@alain-pc01:~# cd /home
root@alain-pc01:/home# ls -l
total 24
drwx------ | 2 | root | root | 16384 | 2007-09-19 | 18:22 | lost+found |
drwxr-xr-x | 62 | alain | alain | 4096 | 2007-11-15 | 22:40 | alain |
drwxr-xr-x | 2 | alain | alain | 4096 | 2007-11-15 | 23:00 | nicolas |
Tous les fichiers à l'intérieur du dossier de nicolas appartiennent maintenant aussi à alain.
chmod : modifier les droits d'accès
Le fonctionnement des droits
Chaque fichier et chaque dossier possèdent une liste de droits. C'est une liste qui dit qui a le droit de voir le fichier, de le modifier et de l'exécuter.
Quand on fait ls -l, la liste de droits, c'est la première colonne :
Code : Console
root@alain-pc01:~# cd /home
root@alain-pc01:~$ ls -l
total 40
drwxr-xr-x | 2 | alain | alain | 4096 | 2007-09-19 | 18:22 | Desktop |
drwxr-xr-x | 2 | alain | alain | 4096 | 2007-11-15 | 22:40 | Documents |
lrwxrwxrwx | 1 | alain | alain | 26 | 2007-11-15 | 23:00 | Examples -> /usr/share/example-content |
drwxr-xr-x | 2 | alain | alain | 4096 | 2007-11-15 | 23:00 | images |
…
On peut voir 5 lettres différentes. Voici leurs significations :
- 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 et supprimer 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 il y a une lettre, c'est que le droit existe. S'il y a un tiret à la place, c'est qu'il n'y a pas de droit.
Les droits sont découpés en fonction des utilisateurs :
Le premier élément ("d") mis à part, on constate que r, w et x sont répétés 3 fois en fonction des utilisateurs :
- Le premier triplet rwx indique les droits que possède le propriétaire du fichier sur ce fichier.
- 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 ce fichier.
Prenons un cas concret, le fichier rapport.txt :
Code : Console
root@alain-pc01:~$ ls -l rapport.txt
-rw-r--r-- 1 alain alain 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, 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. Rappel : quiconque peut modifier un fichier a aussi le droit de le supprimer.
- r-- : tous les gens qui font partie du groupe "alain" mais qui ne sont pas "alain" peuvent seulement lire le fichier. Ils ne peuvent ni le modifier, ni l'exécuter. Avoir un nom de groupe identique au nom d'utilisateur peut embrouiller : si on est aussi bien organisé que sur le premier schéma, on parlerait plutôt du groupe "famille".
- r-- : tous les autres (ceux qui ne font pas partie du groupe "alain") peuvent seulement lire le fichier.
En résumé, ces droits nous apprennent que l'élément est un fichier, que alain peut le lire et le modifier, et que tous les autres utilisateurs peuvent seulement le lire.
Nota. root a TOUS les droits. Il peut tout faire : lire, modifier, exécuter n'importe quel fichier.
chmod : modifier les droits d'accès
Modifier les droits d'accès avec la commande
chmod.
Important : contrairement aux commandes précédentes, pas besoin d'être root pour utiliser chmod. On doit juste être propriétaire du fichier dont on veut 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)
On attribue un chiffre à chaque droit :
Droit | Chiffre |
r | 4 |
w | 2 |
x | 1 |
Pour 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 :
Droit | 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 |
Avec ça, on peut calculer la valeur d'un triplet de droits. Il faut faire le même calcul pour les droits qu'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 qu'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.
Au contraire, avec un droit de 000, personne ne peut rien faire. A 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 :
Code : Console
chmod 600 rapport.txt
On peut vérifier avec ls -l :
Code : Console
alain@alain-pc01:~$ ls -l rapport.txt
-rw------- 1 alain alain 0 2007-11-15 23:14 rapport.txt
Attribuer des droits avec des lettres (chmod relatif)
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".
Avec ça :
Code : Console
chmod g+w rapport.txt
Signifie : "Ajouter le droit d'écriture au groupe".
Code : Console
chmod o-r rapport.txt
Signifie : "Enlever le droit de lecture aux autres".
Code : Console
chmod u+rx rapport.txt
Signifie : "Ajouter les droits de lecture et d'exécution au propriétaire".
Code : Console
chmod g+w,o-w rapport.txt
Signifie : "Ajouter le droit d'écriture au groupe et l'enlever aux autres".
Code : Console
chmod go-r rapport.txt
Signifie : "Enlever le droit de lecture au groupe et aux autres".
Code : Console
chmod +x rapport.txt
Signifie : "Ajouter le droit d'exécution à tout le monde".
Code : Console
chmod u=rwx,g=r,o=- rapport.txt
Signifie : "Affecter tous les droits au propriétaire, juste la lecture au groupe, rien aux autres".
Et toujours… -R pour affecter récursivement
Le paramètre -R existe aussi dans chmod. Si on affecte 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 :
Code : Console
chmod -R 700 /home/alain
Tout simplement.