420-1Q1-AA Help

Utilisateurs et Groupes

Sous Linux, le concept d' utilisateur est essentiel pour la gestion de la sécurité, des permissions et de la gestion des ressources. Linux est un système multi-utilisateur, ce qui signifie qu'il peut gérer plusieurs utilisateurs simultanément sans interférence entre eux. Voici une explication sur les différents types d'utilisateurs, leur gestion et les commandes couramment utilisées pour gérer les utilisateurs sous Linux.

1. Types d'Utilisateurs

a. Superutilisateur (root)

  • L'utilisateur root est l'administrateur du système. Il possède tous les droits et peut effectuer n'importe quelle action sur le système, y compris la gestion des utilisateurs, des fichiers système, et des configurations sensibles.

  • L'utilisateur root est très puissant et peut facilement altérer ou endommager le système, c'est pourquoi son utilisation doit être restreinte autant que possible.

b. Utilisateurs Normaux

  • Les utilisateurs normaux ont un accès limité au système. Ils peuvent accéder à leurs propres fichiers et répertoires, exécuter des programmes et lire certains fichiers du système. Cependant, ils ne peuvent pas effectuer d'actions qui affectent d'autres utilisateurs ou le système sans permission.

  • Chaque utilisateur normal a un répertoire personnel (/home/nom_utilisateur) où il peut stocker ses fichiers personnels.

c. Utilisateurs Système

  • Les utilisateurs système sont créés par le système lors de l'installation des services ou des logiciels. Par exemple, les utilisateurs tels que www-data ou nobody sont des utilisateurs système.

  • Ces comptes sont utilisés pour exécuter des services spécifiques, comme un serveur web ou une base de données, et ne sont pas utilisés pour la connexion interactive.

2. Gestion des Utilisateurs et Groupes

Groupes en Linux

En Linux, les groupes sont des entités qui permettent de gérer les permissions pour plusieurs utilisateurs de manière organisée et efficace. Un groupe est essentiellement un ensemble d'utilisateurs qui partagent des privilèges similaires pour accéder à des fichiers, dossiers ou ressources.

Points Importants sur les Groupes

1. Gestion des Permissions

Les fichiers et dossiers sous Linux ont des permissions définies pour trois catégories : le propriétaire, le groupe, et les autres utilisateurs. En attribuant un fichier à un groupe, vous pouvez donner des droits spécifiques (lecture, écriture, exécution) à tous les membres de ce groupe.

2. Types de Groupes

  • Groupe Principal: Chaque utilisateur est associé à un groupe principal par défaut, qui est généralement créé en même temps que l'utilisateur.

  • Groupes Secondaires: Un utilisateur peut appartenir à plusieurs groupes secondaires, ce qui lui donne des permissions supplémentaires sur certains fichiers ou ressources.

3. Fichiers de Configuration

  • /etc/group: Ce fichier contient les informations sur tous les groupes définis sur le système, tels que le nom du groupe, l'ID du groupe (GID), et les utilisateurs appartenant au groupe.

  • /etc/passwd: Ce fichier associe chaque utilisateur à un groupe principal via l'ID de groupe.

4. Commandes Utiles

  • groupadd nom_du_groupe: Crée un nouveau groupe.

  • usermod -aG nom_du_groupe utilisateur: Ajoute un utilisateur à un groupe secondaire.

  • groups utilisateur: Liste les groupes auxquels appartient un utilisateur.

Les groupes sont utilisés pour simplifier la gestion des droits, surtout sur les systèmes partagés où de nombreux utilisateurs ont besoin d'accéder aux mêmes ressources. Par exemple, les membres d'une même équipe peuvent être regroupés dans un groupe afin qu'ils puissent travailler sur les mêmes fichiers sans que chaque utilisateur doive être géré individuellement.

a. Fichiers de Gestion des Utilisateurs

  • /etc/passwd: Ce fichier contient des informations sur les utilisateurs du système, telles que leur nom, leur identifiant (UID), et leur répertoire personnel.

  • /etc/shadow: Contient des informations sensibles sur les mots de passe des utilisateurs (généralement sous forme chiffrée). Seuls les utilisateurs avec des privilèges élevés peuvent lire ce fichier.

  • /etc/group: Ce fichier contient des informations sur les groupes du système, tels que les noms de groupe, les GID (identifiants de groupe), et la liste des utilisateurs qui font partie de chaque groupe.

3. Commandes pour Gérer les Utilisateurs et Groupes

a. Créer un Utilisateur

Pour ajouter un utilisateur, la commande useradd est utilisée :

sudo useradd -m nom_utilisateur
  • -m: Crée le répertoire personnel de l'utilisateur (/home/nom_utilisateur).

Pour définir un mot de passe pour cet utilisateur :

sudo passwd nom_utilisateur

b. Supprimer un Utilisateur

Pour supprimer un utilisateur et éventuellement son répertoire personnel :

sudo userdel -r nom_utilisateur
  • -r: Supprime également le répertoire personnel de l'utilisateur.

c. Modifier un Utilisateur

Pour modifier les informations d'un utilisateur, la commande usermod est utilisée. Par exemple, pour ajouter un utilisateur à un groupe spécifique :

sudo usermod -aG nom_groupe nom_utilisateur
  • -aG: Ajoute l'utilisateur au groupe sans supprimer ses autres appartenances.

d. Créer un Groupe

Pour créer un nouveau groupe :

sudo groupadd nom_groupe

e. Supprimer un Groupe

Pour supprimer un groupe :

sudo groupdel nom_groupe

f. Changer de Groupe d'un Fichier

Pour changer le groupe propriétaire d'un fichier ou d'un répertoire, utilisez la commande chgrp:

sudo chgrp nom_groupe fichier.txt

g. Changer le Shell d’un Utilisateur en Linux

Pour changer le shell d’un utilisateur en Linux, vous pouvez utiliser la commande chsh ou éditer directement le fichier /etc/passwd. Voici les deux méthodes en détail :

Méthode 1 : Utiliser la commande chsh

La commande chsh (change shell) permet de changer facilement le shell d’un utilisateur.

  1. Pour un utilisateur spécifique, exécutez la commande suivante en tant que root (ou avec sudo) :

    sudo chsh -s /chemin/du/nouveau/shell utilisateur

    Par exemple, pour changer le shell de bash à zsh pour un utilisateur nommé john, vous pouvez utiliser :

    sudo chsh -s /bin/zsh john
  2. Si vous ne spécifiez pas d’utilisateur, la commande changera le shell de l’utilisateur actuel :

    chsh -s /bin/zsh
  3. Vous pouvez vérifier le chemin du shell avec la commande cat /etc/shells, qui liste tous les shells valides sur votre système.

Méthode 2 : Modifier directement le fichier /etc/passwd

Vous pouvez également modifier manuellement le fichier /etc/passwd pour changer le shell par défaut de l’utilisateur.

  1. Ouvrez le fichier /etc/passwd dans un éditeur de texte, comme nano ou vim:

    sudo nano /etc/passwd
  2. Recherchez la ligne correspondant à l’utilisateur dont vous souhaitez changer le shell. Elle ressemble généralement à ceci :

    john:x:1001:1001:John Doe,,,:/home/john:/bin/bash
  3. Modifiez le chemin du shell à la fin de la ligne, en remplaçant /bin/bash par le chemin du nouveau shell, par exemple /bin/zsh:

    john:x:1001:1001:John Doe,,,:/home/john:/bin/zsh
  4. Enregistrez et fermez le fichier.

Remarque : Soyez prudent lors de la modification du fichier /etc/passwd, car une erreur pourrait rendre le compte utilisateur inutilisable.

4. Identifiants d'Utilisateurs et de Groupes (UID et GID)

  • UID (User ID): Chaque utilisateur a un UID unique qui l'identifie. Par défaut, les utilisateurs système ont des UID bas (entre 0 et 999), tandis que les utilisateurs normaux ont des UID à partir de 1000.

    • root a toujours l'UID 0.

  • GID (Group ID): Chaque groupe a un GID unique qui l'identifie. Les utilisateurs peuvent appartenir à plusieurs groupes, mais un seul est défini comme groupe principal.

5. Les Permissions et Groupes Spéciaux

  • Groupe Principal: Le groupe principal est celui qui est défini par défaut pour tous les fichiers créés par l'utilisateur.

  • Groupes Secondaires: Un utilisateur peut appartenir à d'autres groupes, ce qui lui permet d'avoir des permissions supplémentaires.

6. Utilisation de su et sudo

Pour effectuer des actions nécessitant des privilèges élevés, les utilisateurs peuvent utiliser les commandes su et sudo.

a. su (Switch User)

La commande su est utilisée pour changer d'utilisateur. Par exemple, pour passer en tant qu'utilisateur root :

su -

Cela vous demandera le mot de passe de l'utilisateur root. Vous êtes ensuite connecté en tant que root et pouvez exécuter n'importe quelle commande.

b. sudo (Super User Do)

La commande sudo est utilisée pour exécuter une commande avec les privilèges de l'utilisateur root, sans changer d'utilisateur.

sudo commande
  • Exemple:

    sudo apt update
  • Permissions avec sudo: Les utilisateurs doivent être ajoutés au groupe sudo ou un groupe similaire pour pouvoir utiliser sudo. Le fichier /etc/sudoers contrôle qui peut utiliser sudo.

7. Fichiers de Configuration des Utilisateurs

Les utilisateurs peuvent personnaliser leur environnement à l'aide de fichiers de configuration dans leur répertoire personnel, par exemple :

  • .bashrc: Fichier de configuration pour le shell Bash. Les alias, les variables d'environnement, et d'autres configurations spécifiques à l'utilisateur peuvent y être définis.

  • .profile ou .bash_profile: Utilisé pour la configuration de l'environnement, les variables, etc. Il est lu au moment de la connexion.

8. Sécurité et Utilisateurs

  • Les utilisateurs normaux n'ont pas de permissions administratives pour éviter des erreurs accidentelles ou des actions malveillantes.

  • L'utilisateur root doit être utilisé avec précaution, car il peut tout faire, y compris des actions susceptibles d'endommager le système.

  • L'utilisation de sudo est encouragée par rapport à su car elle limite l'accès aux commandes spécifiques et offre une piste d'audit pour savoir qui a exécuté quelles commandes.

9. Changer le mot de passe d'un utilisateur

La commande passwd sous Linux est utilisée pour changer le mot de passe d'un utilisateur.

Lorsque vous tapez passwd, le système vous demande d'entrer votre mot de passe actuel, puis de saisir un nouveau mot de passe deux fois (pour vérification).

Un administrateur (root) peut aussi utiliser cette commande pour changer le mot de passe d'un autre utilisateur, en précisant son nom, par exemple : passwd nom_utilisateur.

La commande chage sous Linux est utilisée pour modifier et consulter les paramètres de durée de vie des mots de passe des comptes utilisateurs. Cela permet de contrôler quand un utilisateur doit changer son mot de passe, contribuant ainsi à la sécurité des systèmes.

Syntaxe

chage [options] nom_utilisateur

Options courantes

  • -l: Afficher les informations de durée de vie du mot de passe de l'utilisateur. Par exemple :

    chage -l nom_utilisateur

    Cette commande affiche des informations comme la dernière date de modification du mot de passe, la durée avant l'expiration, la période de grâce, etc.

  • -M: Spécifier la durée maximale en jours avant que l'utilisateur doive changer son mot de passe. Par exemple, pour exiger un changement de mot de passe tous les 90 jours :

    chage -M 90 nom_utilisateur
  • -m: Spécifier le nombre minimal de jours avant que l'utilisateur puisse changer son mot de passe après la dernière modification. Par exemple, pour définir une période minimale de 7 jours :

    chage -m 7 nom_utilisateur
  • -W: Définir le nombre de jours avant l'expiration du mot de passe où l'utilisateur sera averti qu'il doit le changer. Par exemple :

    chage -W 10 nom_utilisateur

    Cela signifie que l'utilisateur recevra un avertissement 10 jours avant l'expiration du mot de passe.

  • -I: Spécifier le nombre de jours après l'expiration du mot de passe où le compte sera désactivé si le mot de passe n'est pas changé. Par exemple :

    chage -I 30 nom_utilisateur

    Cela désactivera le compte 30 jours après l'expiration du mot de passe.

  • -E: Définir la date d'expiration du compte. Par exemple, pour désactiver un compte le 1er janvier 2025 :

    chage -E 2025-01-01 nom_utilisateur

    Cela définit la date à laquelle l'utilisateur ne pourra plus se connecter.

Exemple complet

Supposons que vous vouliez configurer les paramètres d'un utilisateur appelé "john" comme suit :

  • Le mot de passe doit être changé tous les 60 jours.

  • L'utilisateur est averti 7 jours avant l'expiration du mot de passe.

  • L'utilisateur doit attendre au moins 5 jours avant de pouvoir changer son mot de passe après une modification.

La commande serait la suivante :

chage -M 60 -W 7 -m 5 john

Utilisation typique

La commande chage est souvent utilisée par les administrateurs système pour s'assurer que les utilisateurs respectent les bonnes pratiques en matière de sécurité des mots de passe, comme le changement régulier des mots de passe et la réduction de la période de vulnérabilité en cas de compromission.

N'oubliez pas que l'utilisation de chage nécessite des privilèges administratifs, vous devrez donc souvent exécuter la commande avec sudo.

Conclusion

Linux est conçu pour être un système multi-utilisateur robuste, avec des mécanismes efficaces pour gérer la sécurité et l'accès aux ressources. La gestion des utilisateurs et des groupes permet un contrôle granulaire sur les permissions et garantit que les actions des utilisateurs n'interfèrent pas avec celles des autres. En comprenant comment créer, modifier et supprimer des utilisateurs et des groupes, et en maîtrisant les commandes su et sudo, vous pouvez gérer efficacement les utilisateurs sur un système Linux et maintenir un environnement sécurisé.

Last modified: 11 November 2024