# 4.4 - Gérer les utilisateurs et les groupes

La gestion des comptes varie légèrement selon la distribution. Les commandes ci-dessous couvrent les systèmes Linux courants.

## Consulter les comptes

```bash
id alex
getent passwd alex
getent group informatique
cut -d: -f1 /etc/passwd
```

`getent` est préférable à la lecture directe des fichiers lorsque les comptes peuvent provenir de LDAP, Active Directory ou d'un autre annuaire.

## Créer un utilisateur

Sur Debian et Ubuntu, `adduser` guide la création :

```bash
sudo adduser alex
```

Commande plus générique :

```bash
sudo useradd -m -s /bin/bash alex
sudo passwd alex
```

## Gérer les groupes

```bash
sudo groupadd informatique
sudo usermod -aG informatique alex
id alex
```

L'option `-aG` signifie **ajouter aux groupes supplémentaires**. Oublier `-a` avec `usermod -G` peut retirer l'utilisateur de ses autres groupes secondaires.

La nouvelle appartenance s'applique à la prochaine ouverture de session. Pour un test ponctuel :

```bash
newgrp informatique
```

## Verrouiller ou déverrouiller un compte

```bash
sudo passwd -l alex
sudo passwd -u alex
sudo chage -l alex
```

Verrouiller le mot de passe ne termine pas forcément les sessions existantes et n'interdit pas toujours les autres méthodes d'authentification, comme une clé SSH. La procédure de départ d'un utilisateur doit donc inclure sessions, clés, jetons et tâches planifiées.

## Modifier un shell

```bash
chsh -s /bin/bash
getent passwd "$USER"
cat /etc/shells
```

## Supprimer un compte

Examiner d'abord les fichiers appartenant au compte :

```bash
sudo find /home /srv -xdev -user alex -print
```

Puis, selon la distribution :

```bash
sudo userdel alex          # conserver le dossier personnel
sudo userdel -r alex       # supprimer aussi le dossier personnel
```

`userdel -r` est destructif. Sauvegarder ou transférer les données avant de l'utiliser.

## Fichiers importants

| Fichier | Rôle |
|---|---|
| `/etc/passwd` | comptes et shells, sans mots de passe en clair |
| `/etc/shadow` | empreintes des mots de passe et expiration |
| `/etc/group` | groupes locaux |
| `/etc/sudoers` | règles sudo, à modifier avec `visudo` |

Ne jamais éditer `/etc/shadow` manuellement. Utiliser les commandes prévues afin de préserver la cohérence et les permissions.