Prérequis
- Un serveur Linux (Ubuntu, Debian, AlmaLinux 9, Rocky Linux 9)
- Accès root ou sudo
La gestion des utilisateurs et des permissions est fondamentale pour la sécurité de votre serveur Linux. Ce guide couvre la création d'utilisateurs, les groupes, sudo et les permissions de fichiers. Ces commandes sont identiques sur Ubuntu, Debian, AlmaLinux et Rocky Linux.
1. Créer un utilisateur
# Créer un utilisateur avec répertoire home
adduser nom_utilisateur
# Ou version non-interactive
useradd -m -s /bin/bash nom_utilisateur
passwd nom_utilisateur
# Créer un utilisateur système (sans home, sans login)
useradd -r -s /usr/sbin/nologin nom_service2. Supprimer un utilisateur
# Supprimer l'utilisateur (garde le home)
userdel nom_utilisateur
# Supprimer l'utilisateur ET son répertoire home
userdel -r nom_utilisateur3. Modifier un utilisateur
# Changer le mot de passe
passwd nom_utilisateur
# Changer le shell
usermod -s /bin/zsh nom_utilisateur
# Changer le répertoire home
usermod -d /nouveau/home -m nom_utilisateur
# Renommer un utilisateur
usermod -l nouveau_nom ancien_nom
# Verrouiller un compte
usermod -L nom_utilisateur
# Déverrouiller un compte
usermod -U nom_utilisateur
# Définir une date d'expiration
usermod -e 2025-12-31 nom_utilisateur4. Gestion des groupes
# Créer un groupe
groupadd nom_groupe
# Supprimer un groupe
groupdel nom_groupe
# Ajouter un utilisateur à un groupe
usermod -aG nom_groupe nom_utilisateur
# Ajouter à plusieurs groupes
usermod -aG groupe1,groupe2,groupe3 nom_utilisateur
# Voir les groupes d'un utilisateur
groups nom_utilisateur
# Voir les membres d'un groupe
getent group nom_groupeImportant : -aG
Utilisez toujours -aG (append) pour ajouter à un groupe. Sans le 'a', l'utilisateur sera retiré de tous ses autres groupes !
5. Configurer sudo
# Ajouter au groupe sudo (Debian/Ubuntu)
usermod -aG sudo nom_utilisateur
# Ou au groupe wheel (AlmaLinux/Rocky Linux/CentOS/RHEL)
usermod -aG wheel nom_utilisateur
# Éditer sudoers (toujours avec visudo !)
visudo# Tous les droits sans mot de passe
nom_utilisateur ALL=(ALL) NOPASSWD: ALL
# Commandes spécifiques seulement
nom_utilisateur ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl restart php*
# Groupe avec tous les droits
%admin ALL=(ALL) ALL6. Permissions de fichiers
# Voir les permissions
ls -la
# Exemple de sortie :
# drwxr-xr-x 2 user group 4096 Jan 1 00:00 dossier
# -rw-r--r-- 1 user group 1234 Jan 1 00:00 fichier
# Signification :
# d = dossier (- = fichier)
# rwx = droits propriétaire (read, write, execute)
# r-x = droits groupe
# r-x = droits autresModifier les permissions (chmod)
# Notation symbolique
chmod u+x fichier # Ajouter exécution pour propriétaire
chmod g+w fichier # Ajouter écriture pour groupe
chmod o-r fichier # Retirer lecture pour autres
chmod a+r fichier # Ajouter lecture pour tous
# Notation octale
chmod 755 fichier # rwxr-xr-x
chmod 644 fichier # rw-r--r--
chmod 700 fichier # rwx------
chmod 600 fichier # rw-------
# Récursif
chmod -R 755 dossier/
# Valeurs courantes :
# 755 = Dossiers, scripts exécutables
# 644 = Fichiers normaux
# 600 = Fichiers sensibles (clés SSH, configs)
# 700 = Dossiers privésModifier le propriétaire (chown)
# Changer le propriétaire
chown utilisateur fichier
# Changer propriétaire et groupe
chown utilisateur:groupe fichier
# Changer seulement le groupe
chown :groupe fichier
# Ou
chgrp groupe fichier
# Récursif
chown -R utilisateur:groupe dossier/7. Permissions spéciales
# SUID (4) - Exécuter en tant que propriétaire
chmod u+s fichier
chmod 4755 fichier
# SGID (2) - Exécuter en tant que groupe / hériter du groupe
chmod g+s dossier
chmod 2755 dossier
# Sticky bit (1) - Seul le propriétaire peut supprimer
chmod +t dossier
chmod 1777 dossier # Comme /tmp8. Lister les utilisateurs
# Lister tous les utilisateurs
cat /etc/passwd
# Utilisateurs avec shell de connexion
grep -v '/nologin\|/false' /etc/passwd
# Lister les groupes
cat /etc/group
# Informations sur un utilisateur
id nom_utilisateur
# Qui est connecté
who
w
# Dernières connexions
last
last nom_utilisateur9. Bonnes pratiques de sécurité
- Ne jamais utiliser root directement - utilisez sudo
- Créez des utilisateurs distincts pour chaque service
- Utilisez des mots de passe forts ou des clés SSH
- Limitez les droits sudo aux commandes nécessaires
- Auditez régulièrement les utilisateurs et groupes
- Supprimez les comptes inutilisés
- Les fichiers sensibles doivent être en 600/640
- Les clés SSH en 600, dossier .ssh en 700
10. Exemple complet : créer un utilisateur web
# Créer l'utilisateur
adduser webuser
# Ajouter au groupe www-data (pour accès aux fichiers web)
usermod -aG www-data webuser
# Créer le dossier du site
mkdir -p /var/www/monsite
# Définir les permissions
chown -R webuser:www-data /var/www/monsite
chmod -R 755 /var/www/monsite
# Permettre au groupe d'écrire dans certains dossiers
chmod -R 775 /var/www/monsite/uploads
# Donner sudo limité
echo 'webuser ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx' | sudo tee /etc/sudoers.d/webuserNote AlmaLinux/Rocky Linux
Sur AlmaLinux et Rocky Linux, le groupe web par défaut est 'nginx' ou 'apache' au lieu de 'www-data'. Adaptez les commandes en conséquence (ex: usermod -aG nginx webuser).
Utilisateurs configurés !
Vous savez maintenant gérer les utilisateurs, groupes et permissions sur votre serveur Linux.