---
title: "Gestion des utilisateurs Linux"
domain: sysadmin
subdomain: linux
type: snippet
tags: [linux, users, sudo, permissions, useradd]
difficulty: beginner
status: stable
updated: "2025-05-10"
---
## Créer un utilisateur

```bash
# Avec répertoire home et shell par défaut
useradd -m -s /bin/bash {{USER}}

# Avec commentaire (nom complet) et groupe primaire
useradd -m -s /bin/bash -c "John Doe" -g users {{USER}}

# Définir le mot de passe
passwd {{USER}}

# Créer + mot de passe en une ligne
useradd -m -s /bin/bash {{USER}} && echo "{{USER}}:{{PASSWORD}}" | chpasswd
```

## Modifier un utilisateur

```bash
# Changer le shell
usermod -s /bin/zsh {{USER}}

# Ajouter à un groupe supplémentaire (sans retirer des autres)
usermod -aG sudo {{USER}}
usermod -aG docker,{{USER}} {{USER}}

# Renommer
usermod -l nouveau_nom ancien_nom

# Verrouiller / déverrouiller le compte
usermod -L {{USER}}   # lock
usermod -U {{USER}}   # unlock

# Changer le répertoire home
usermod -d /new/home -m {{USER}}
```

## Supprimer un utilisateur

```bash
# Sans supprimer le home
userdel {{USER}}

# Avec suppression du home et du mailspool
userdel -r {{USER}}
```

## Gestion des groupes

```bash
# Créer un groupe
groupadd {{GROUP}}

# Lister les membres d'un groupe
getent group {{GROUP}}

# Retirer un utilisateur d'un groupe
gpasswd -d {{USER}} {{GROUP}}

# Voir tous les groupes d'un utilisateur
groups {{USER}}
id {{USER}}
```

## Sudo

```bash
# Ajouter au groupe sudo (Debian/Ubuntu)
usermod -aG sudo {{USER}}

# Ajouter au groupe wheel (RHEL/CentOS)
usermod -aG wheel {{USER}}

# Editer sudoers (toujours via visudo !)
visudo

# Autoriser un user sans mot de passe
{{USER}} ALL=(ALL) NOPASSWD: ALL

# Autoriser seulement certaines commandes
{{USER}} ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx

# Vérifier les droits sudo d'un utilisateur
sudo -l -U {{USER}}
```

## Comptes système et service

```bash
# Créer un compte service (sans home, sans login)
useradd -r -s /usr/sbin/nologin {{SERVICE}}

# Vérifier les comptes sans mot de passe
awk -F: '($2 == "") {print $1}' /etc/shadow

# Comptes avec UID 0 (root-like)
awk -F: '($3 == 0) {print $1}' /etc/passwd

# Expiration de mot de passe
chage -l {{USER}}              # voir la politique
chage -M 90 {{USER}}           # expire dans 90 jours
chage -E 2025-12-31 {{USER}}   # expire à une date
```

## Fichiers clés

```bash
/etc/passwd    # Liste des comptes (pas les mots de passe)
/etc/shadow    # Hash des mots de passe (lecture root seulement)
/etc/group     # Groupes et membres
/etc/sudoers   # Règles sudo (toujours éditer via visudo)
/etc/sudoers.d/  # Fichiers de règles additionnels
```

<Tip>
Ne jamais éditer `/etc/sudoers` directement — toujours utiliser `visudo` qui valide la syntaxe avant de sauvegarder. Une erreur de syntaxe peut bloquer tous les accès sudo.
</Tip>
