04. Gestion des utilisateurs et des autorisations sur Ubuntu Server : guide complet

La gestion des utilisateurs, des groupes et des autorisations est l’une des tâches fondamentales pour les administrateurs d’Ubuntu Server. Que vous configuriez un environnement multi-utilisateur ou que vous sécurisiez votre serveur, il est essentiel de comprendre comment créer, modifier et gérer les comptes utilisateur, les groupes et les autorisations. Ce guide offre un aperçu approfondi de la gestion des utilisateurs et des autorisations, avec des exemples concrets, des sorties de commandes et des bonnes pratiques.


Article précédent:

01. Introduction à Ubuntu Server – SysOSX: AI & Cloud

02. Comment configurer votre premier serveur Ubuntu : guide du débutant – SysOSX: AI & Cloud

03. Maîtriser la ligne de commande Linux pour Ubuntu Server




Introduction

Ubuntu Server est une plateforme puissante pour héberger des applications, gérer des services et permettre des environnements multi-utilisateurs. En maîtrisant la gestion des utilisateurs et des autorisations, vous pouvez sécuriser votre serveur, contrôler efficacement l’accès et empêcher les actions non autorisées. Ce guide couvrira tout, de la création de base de comptes utilisateur aux paramètres d’autorisation avancés, avec des exemples détaillés.


Créer et gérer des comptes utilisateur

Créer un utilisateur

Pour créer un compte utilisateur sur Ubuntu Server, utilisez la commande adduser. Cette commande est interactive et vous demande des informations supplémentaires sur l’utilisateur.

Exemple de commande :

sudo adduser john

Exemple de sortie :

Adding user `john' ...
Adding new group `john' (1001) ...
Adding new user `john' (1001) with group `john' ...
Creating home directory `/home/john' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for john
Enter the new value, or press ENTER for the default
        Full Name []: John Doe
        Room Number []: 101
        Work Phone []: 555-1234
        Home Phone []: 555-5678
        Other []:
Is the information correct? [Y/n] Y

Cela crée un utilisateur nommé john avec un répertoire personnel à l’adresse /home/john et lui attribue un ID utilisateur (UID) unique.


Modifier un utilisateur

La commande usermod vous permet de modifier les comptes utilisateur. Par exemple, vous pouvez modifier le répertoire personnel, le shell ou les appartenances aux groupes d’un utilisateur.

Changer le répertoire personnel :

sudo usermod -d /home/new_john john
sudo mv /home/john /home/new_john

Verrouiller ou déverrouiller un compte utilisateur :

  • Verrouiller le compte : sudo passwd -l john
  • Déverrouiller le compte : sudo passwd -u john

Exemple de sortie (verrouillage du compte) :

passwd: password expiry information changed.


Supprimer un utilisateur

Pour supprimer un utilisateur, utilisez la commande deluser. Vous pouvez également supprimer son répertoire personnel et les fichiers associés.

Exemple de commande :

sudo deluser --remove-home john

Exemple de sortie :

Looking for files to backup/remove ...
Removing files ...
Removing user `john' ...
Warning: group `john' has no more members.
Done.


Gérer les groupes

Les groupes permettent d’organiser les utilisateurs et d’attribuer des autorisations collectives. Chaque utilisateur peut appartenir à plusieurs groupes.

Créer et gérer les groupes

Pour créer un groupe, utilisez la commande addgroup.

Exemple de commande :

sudo addgroup developers

Exemple de sortie :

Adding group `developers' (GID 1002) ...
Done.

Pour supprimer un groupe :

sudo delgroup developers

Ajouter des utilisateurs à des groupes

Pour ajouter un utilisateur à un groupe, utilisez la commande usermod avec l’option -aG.

Exemple de commande :

sudo usermod -aG developers john

Vérifier l’appartenance à un groupe :

groups john

Exemple de sortie :

john : john developers

Cela montre que john appartient aux groupes john et developers.


Comprendre les autorisations des fichiers et des répertoires

Les autorisations de fichiers Linux sont essentielles pour contrôler l’accès aux fichiers et aux répertoires. Les autorisations sont définies pour trois catégories : Propriétaire, Groupe, et Autres.

Types d’autorisations

Chaque catégorie comporte trois types d’autorisations :

  • Lecture (r) : permet de visualiser le contenu des fichiers ou de lister le contenu des répertoires.
  • Écriture (w) : permet de modifier le contenu des fichiers ou de créer/supprimer des fichiers dans un répertoire.
  • Exécution (x) : permet d’exécuter des fichiers exécutables ou d’accéder aux répertoires.

Exemple :

Utilisez ls -l pour afficher les autorisations de fichier :

ls -l /home/john

Exemple de sortie :

-rw-r--r-- 1 john john 4096 Mar 21 14:00 file.txt

  • rw- : le propriétaire (john) dispose des autorisations de lecture et d’écriture.
  • r-- : le groupe (john) dispose d’autorisations en lecture seule.
  • r-- : les autres disposent d’autorisations en lecture seule.

Modifier les autorisations

Utilisez la commande chmod pour modifier les autorisations.

Exemples de commandes :

  • Accorder l’autorisation d’exécution au propriétaire : chmod u+x file.txt
  • Supprimer l’autorisation d’écriture pour les autres : chmod o-w file.txt

Utiliser des valeurs numériques :

Les autorisations peuvent également être définies à l’aide de valeurs numériques :

chmod 755 file.txt : autorisations complètes pour le propriétaire, lecture/exécution pour le groupe et les autres.


Comprendre les autorisations numériques (755, 777, 744)

Les autorisations Linux peuvent être représentées numériquement, chaque chiffre correspondant à un niveau d’autorisation spécifique :

Structure des autorisations numériques :

Chaque autorisation numérique se compose de trois chiffres :

  • Premier chiffre : autorisations pour le propriétaire.
  • Deuxième chiffre : autorisations pour le groupe.
  • Troisième chiffre : autorisations pour les autres.

Chaque chiffre est calculé à partir des valeurs suivantes :

  • 4 : lecture (r)
  • 2 : écriture (w)
  • 1 : exécution (x)

La somme de ces valeurs détermine le niveau d’autorisation pour chaque catégorie.

Autorisations numériques courantes :

  1. 777 : autorisations complètes pour tous (lecture, écriture, exécution).
    • Propriétaire : rwx
    • Groupe : rwx
    • Autres : rwx
    • Cas d’usage : rarement utilisé pour des raisons de sécurité, mais peut s’appliquer aux répertoires temporaires comme /tmp.
  2. 755 : autorisations complètes pour le propriétaire, autorisations de lecture et d’exécution pour le groupe et les autres.
    • Propriétaire : rwx
    • Groupe : r-x
    • Autres : r-x
    • Cas d’usage : courant pour les fichiers exécutables ou les répertoires.
  3. 744 : autorisations complètes pour le propriétaire, lecture seule pour le groupe et les autres.
    • Propriétaire : rwx
    • Groupe : r--
    • Autres : r--
    • Cas d’usage : courant pour les fichiers privés.

Exemple :

Pour définir les autorisations d’un script sur 755 :

chmod 755 script.sh

Exemple de sortie :

-rwxr-xr-x 1 john john 4096 Mar 21 14:00 script.sh

Gestion de la propriété

Modifiez la propriété à l’aide de la commande chown.

Exemple de commande :

sudo chown john:developers file.txt

Cela définit le propriétaire sur john et le groupe sur developers.

Exemple de sortie :

-rw-r--r-- 1 john developers 4096 Mar 21 14:00 file.txt


Utiliser Sudo pour l’élévation de privilèges

La commande sudo permet aux utilisateurs d’exécuter des commandes avec des privilèges élevés. Pour accorder à un utilisateur l’accès sudo, ajoutez-le au groupe sudo.

Exemple de commande :

sudo usermod -aG sudo john

Vérifier l’accès Sudo :

sudo -l -U john

Exemple de sortie :

User john may run the following commands on this host:
    (ALL : ALL) ALL

Bonnes pratiques pour sécuriser les comptes utilisateur

  • Appliquer des politiques de mots de passe strictes:
    Utilisez passwd pour définir l’expiration du mot de passe : sudo passwd -e john
  • Limiter l’accès Sudo:
    Accordez les privilèges sudo uniquement aux utilisateurs de confiance.
  • Désactiver la connexion root:
    Modifiez le fichier de configuration SSH :
sudo nano /etc/ssh/sshd_config 

Définir :

PermitRootLogin no
  • Utiliser des clés SSH pour l’authentification:
    Remplacez la connexion par mot de passe par des clés SSH.
  • Surveiller l’activité des utilisateurs:
    Utilisez last ou who pour suivre l’activité de connexion :
last

Explication de la sortie

uadmin   pts/1   192.168.255.48   Fri Mar 21 13:55   still logged in
uadmin   pts/0   192.168.255.48   Fri Mar 21 13:54   still logged in
uadmin   pts/1   192.168.255.48   Fri Mar 21 01:49 - 08:19  (06:29)
uadmin   pts/0   192.168.255.48   Fri Mar 21 00:53 - 08:19  (07:26)
reboot   system boot   6.8.0-1021-azure   Fri Mar 21 00:22   still running


Analyse ligne par ligne

Connexion utilisateur : uadmin pts/1 192.168.255.48 Fri Mar 21 13:55 still logged in

  • uadmin : le nom d’utilisateur de l’utilisateur qui s’est connecté.
  • pts/1 : la session de pseudo-terminal utilisée pour la connexion. Les pseudo-terminaux (pts) sont des terminaux virtuels, généralement créés lorsque les utilisateurs se connectent via SSH.
  • 192.168.255.48 : l’adresse IP de la machine distante depuis laquelle l’utilisateur s’est connecté.
  • Fri Mar 21 13:55 : la date et l’heure auxquelles l’utilisateur s’est connecté.
  • still logged in : indique que l’utilisateur est actuellement connecté et actif.
ColonneSignification
Nom d’utilisateurNom de l’utilisateur ou de l’événement (uadmin, reboot).
TerminalSession de pseudo-terminal (pts/X) ou événement système (system boot).
Hôte distant/IPAdresse IP ou nom d’hôte de la machine distante qui initie la connexion.
Date/heure de connexionDate et heure du début de la connexion ou de l’événement.
Heure de déconnexionDate et heure de fin de la session (le cas échéant).
DuréeDurée totale de la session (le cas échéant).
Statut de la sessionStatut actuel de la session (still logged in, still running).

Commandes supplémentaires pour en savoir plus

  • Afficher les utilisateurs actuellement connectés: who
  • Exemple de sortie :
uadmin pts/1 2023-03-21 13:55 (192.168.255.48) 
uadmin pts/0 2023-03-21 13:54 (192.168.255.48)
  • Vérifier le temps de fonctionnement du système: uptime
  • Exemple de sortie :
14:15:32 up 13:53, 2 users, load average: 0.10, 0.12, 0.15

Conclusion

La gestion des utilisateurs, des groupes et des autorisations est une compétence fondamentale pour les administrateurs d’Ubuntu Server. En maîtrisant ces tâches, vous pouvez sécuriser votre serveur, empêcher tout accès non autorisé et améliorer l’efficacité opérationnelle.


Prochain tutoriel : Bases des réseaux pour Ubuntu Server

Dans le prochain tutoriel, nous aborderons  les bases des réseaux pour Ubuntu Server, notamment la configuration des interfaces réseau, la mise en place d’adresses IP statiques, le dépannage de la connectivité réseau et l’utilisation de netplan d’Ubuntu pour les tâches réseau. Restez à l’écoute pour des informations concrètes visant à optimiser la configuration réseau de votre serveur.