Aller au contenu principal

Gérer les comptes utilisateurs sous Linux

adduser, passwd, groupes et privilèges

Petite vérification​

Avant de commencer, vérifiez si vous savez encore répondre à ces 3 questions très simples, sur la séance précédente consacrée aux permissions Linux :

  1. que signifie le chiffre 6 dans la notation octale (chmod 644, par exemple) ?
  2. pourquoi un fichier contenant un mot de passe devrait-il presque toujours avoir les permissions 600 ?
  3. pourquoi chown root:root fichier.txt, lancé par un utilisateur normal, échoue-t-il sans sudo ?
📌 Réponse attendue

TP pour réfléchir et résoudre des problèmes​

Votre défi pour aujourd'hui consiste à créer un compte pour un nouvel arrivant, et à lui donner accès à un dossier partagé, sans rien donner de plus

info

Ce TP nécessite les droits sudo sur votre serveur Linux, comme pour toute création de compte ou de groupe. Si vous ne les avez pas, demandez-les avant de commencer.

Pour aller plus loin

Le manuel Cybersécurité BTS SIO 1re année (Delagrave) consacre tout son chapitre 5 (« Sécuriser l'accès aux ressources et vérifier l'efficacité », p. 57) à un cas très proche de celui d'aujourd'hui (comptes, groupes, privilèges, sous Windows/Active Directory plutôt que sous Linux), avec un piège classique à connaître : un dossier partagé qui reste accessible à un groupe par défaut bien trop large (vu à l'étape 5 ci-dessous).

Étape 1 — Créer un compte utilisateur​

Une nouvelle personne rejoint votre équipe. Créez-lui un compte :

sudo adduser camille

adduser crée aussi, automatiquement, son dossier personnel. Vérifiez que le compte existe bien :

id camille
cat /etc/passwd | grep camille

Que contient la ligne retournée par cat /etc/passwd | grep camille ?

📌 Réponse attendue

Méthode alternative : useradd

adduser est une commande conviviale, propre aux distributions de la famille Debian/Ubuntu, qui s'appuie en réalité sur une commande plus bas niveau et présente sur toutes les distributions Linux : useradd. Elle nécessite d'indiquer explicitement l'option de création du dossier personnel :

sudo useradd -m camille

Les 2 commandes créent un compte équivalent. adduser est utilisée dans ce cours car plus simple à retenir, et parce qu'elle pose aussi, par défaut, quelques questions interactives (mot de passe, nom complet...).

Étape 2 — Définir un mot de passe initial​

Un compte fraîchement créé n'a pas de mot de passe utilisable. Définissez-en un :

sudo passwd camille

Pourquoi est-il important que ce mot de passe initial soit changé par Camille elle-même dès sa première connexion, plutôt que d'être conservé tel quel ?

📌 Réponse attendue

Étape 3 — Créer un groupe partagé​

Camille doit avoir accès aux mêmes fichiers que le reste de l'équipe technique, sans pour autant avoir tous les droits d'un administrateur. Créez un groupe dédié, et ajoutez-y Camille :

sudo groupadd equipe-tech
sudo adduser camille equipe-tech
groups camille

Vérifiez, avec le résultat de groups camille, que Camille appartient bien à la fois à son groupe principal et au nouveau groupe equipe-tech. Pourquoi est-il important qu'elle conserve son groupe principal, plutôt que d'en changer ?

📌 Réponse attendue

Méthode alternative : usermod

Sur une distribution qui ne propose pas adduser (ou en dehors de Debian/Ubuntu), la commande équivalente est usermod, avec l'option -aG (append, pour ajouter sans rien retirer) :

sudo usermod -aG equipe-tech camille

Attention : oublier le -a (et n'écrire que -G) remplace la totalité des groupes secondaires de l'utilisateur par celui indiqué, retirant Camille de tout groupe auquel elle appartenait déjà. C'est une erreur fréquente et dangereuse : adduser nom groupe évite complètement ce piège, puisqu'elle n'a qu'un seul comportement possible, celui d'ajouter.

Étape 4 — Vérifier l'accès au dossier partagé du groupe​

L'équipe technique partage un dossier /srv/equipe-tech. Donnez-y accès au groupe, sans donner accès à qui que ce soit d'autre :

sudo mkdir -p /srv/equipe-tech
sudo chown root:equipe-tech /srv/equipe-tech
sudo chmod 770 /srv/equipe-tech
ls -ld /srv/equipe-tech

Expliquez ce que permet, et interdit, la permission 770 appliquée à ce dossier.

Intérêt de l'argument d dans la commande ls

Par défaut, ls -l appliqué à un dossier affiche la liste de son contenu (les fichiers et sous-dossiers qu'il contient), pas une ligne décrivant le dossier lui-même. C'est ce qui explique pourquoi ls -ld /srv/equipe-tech utilise l'option d (directory) : elle demande à ls d'afficher les informations du dossier /srv/equipe-tech lui-même (ses permissions, son propriétaire, son groupe), et non celles des fichiers qu'il contient.

Sans le d, ls -l /srv/equipe-tech (juste après sa création, encore vide) n'afficherait qu'une ligne total 0, sans aucune information utile sur le dossier lui-même.

On pourrait objecter qu'ls -la /srv/equipe-tech affiche lui aussi une ligne . correspondant au dossier lui-même, au milieu de son contenu. Mais ls -ld reste préférable, pour 2 raisons :

  • Permission : ls -la doit pouvoir lire le contenu du dossier (droit r) pour en lister les entrées, y compris .. ls -ld n'a besoin que de pouvoir atteindre le dossier (droit x sur les dossiers parents) : il interroge seulement les métadonnées du dossier lui-même, sans l'ouvrir. Sur un dossier sans droit de lecture pour vous (comme /srv/equipe-tech si vous n'appartenez pas au groupe equipe-tech), ls -la échoue avec Permission denied, alors que ls -ld fonctionne toujours.
  • Lisibilité : ls -ld donne une seule ligne, utile pour relire rapidement un résultat ou l'exploiter dans un script, plutôt que de la chercher au milieu de tout le contenu du dossier.

Étape 5 — Repérer un accès trop large (pour aller plus loin)​

Un collègue a créé, un peu vite, un second dossier partagé pour l'équipe technique. Voici le résultat de ls -ld sur ce dossier :

drwxrwxrwx 2 root equipe-tech 4096 oct. 10 09:00 /srv/equipe-tech-bis
  • Qu'est-ce qui ne va pas avec ces permissions, même si le propriétaire et le groupe sont corrects ?

  • Corrigez-les.

📌 Réponse attendue

Restitution orale​

Un étudiant (ou un binôme) vient présenter au tableau sa démarche de création de compte et d'accès au dossier partagé.

  • Durée : 5 minutes de présentation + 2 à 3 minutes de questions.
  • Qui passe : un(e) étudiant(e) (ou un binôme) désigné(e) par l'enseignant.
  • Support : le travail réalisé pendant le TP, aucune préparation supplémentaire n'est nécessaire.
  • Ce qui est attendu :
    1. présenter les commandes utilisées pour créer le compte et le groupe (étapes 1 et 3) ;
    2. expliquer la permission 770 appliquée au dossier partagé (étape 4) ;
    3. répondre aux questions de la classe.
astuce

Cet exercice entraîne à l'oral technique court exigé par plusieurs épreuves du BTS (notamment E5 et E6) : clarté, structure, capacité à répondre à l'improviste.

📌 Une solution

Notions théoriques​

Un compte, 3 fichiers système​

Chaque compte utilisateur Linux est décrit dans plusieurs fichiers système :

FichierContenu
/etc/passwdLa liste des comptes (nom, UID, GID, dossier personnel, shell)
/etc/shadowLes mots de passe, sous forme chiffrée, lisibles uniquement par root
/etc/groupLa liste des groupes et de leurs membres
info

Le x que vous avez observé à l'étape 1 dans /etc/passwd, à la place du mot de passe, signale justement que le vrai mot de passe (chiffré) se trouve dans /etc/shadow, bien plus protégé.

adduser, passwd : les commandes de base pour gérer un compte​

CommandeRôle
adduser nomCrée le compte et son dossier personnel
passwd nomDéfinit ou change le mot de passe du compte
adduser nom groupeAjoute le compte existant à un groupe existant, sans toucher aux autres

Ces commandes nécessitent presque toujours sudo : créer un compte, fixer un mot de passe ou modifier l'appartenance à un groupe sont des actions d'administration, au même titre que chown vu lors de la séance précédente.

info

adduser s'appuie, en coulisses, sur des commandes plus bas niveau communes à toutes les distributions Linux : useradd (créer un compte) et usermod -aG (ajouter à un groupe), détaillées dans les encadrés « Méthode alternative » du TP.

Groupe principal, groupes secondaires​

Chaque utilisateur a un groupe principal (créé automatiquement avec son compte, souvent du même nom que lui) et peut appartenir à zéro, un ou plusieurs groupes secondaires, comme equipe-tech à l'étape 3 du TP.

astuce

Donner un droit à un groupe plutôt qu'à chaque utilisateur un par un est une bonne pratique : le jour où Camille quitte l'équipe, il suffit de la retirer du groupe, sans toucher aux permissions du dossier lui-même.

Groupes et permissions : le lien avec la séance précédente​

La permission 770 appliquée à l'étape 4 réutilise directement la notation octale vue lors de la séance précédente : 7 (lecture, écriture, exécution) pour le propriétaire et pour le groupe, 0 (aucun droit) pour les autres. C'est en combinant un groupe bien choisi et des permissions précises qu'on applique concrètement le principe du moindre privilège : donner exactement l'accès nécessaire, ni plus, ni moins.


Test de mémorisation/compréhension​


Que fait la commande `adduser camille` ?


Dans une ligne de `/etc/passwd`, pourquoi le champ du mot de passe affiche-t-il seulement un `x` ?


Pourquoi les commandes `adduser` et `passwd` nécessitent-elles presque toujours `sudo` ?


D'après le TP, pourquoi `adduser camille equipe-tech` est-elle plus sûre que la méthode alternative `usermod -G equipe-tech camille` (sans le `-a`) ?


D'après le TP, à quoi correspond la permission `770` appliquée au dossier `/srv/equipe-tech` ?


Pourquoi est-il recommandé de donner un droit d'accès à un groupe plutôt qu'à chaque utilisateur un par un ?


Qu'est-ce que le groupe principal d'un utilisateur, par opposition à ses groupes secondaires ?


D'après le TP, pourquoi Camille doit-elle changer son mot de passe initial dès sa première connexion ?