Gestion des utilisateurs et groupes Linux : UID, GID et contrôle des comptes
Le noyau Linux fonctionne avec des identifiants numériques — les UID et GID. Un nom d'utilisateur n'est qu'un alias lisible par l'humain stocké dans /etc/passwd. Les processus et fichiers sont liés à ces nombres, aussi changer un nom d'utilisateur sans préserver le UID d'origine entraînera la perte d'accès aux ressources.
Vérifiez l'utilisateur actuel :
id
# uid=1001(deployer) gid=1001(deployer) groups=1001(deployer),27(sudo),998(docker)
id -u # Seulement le UID
whoami # Seulement le nom d'utilisateur
getent passwd deployer
getent interroge les modules NSS — y compris LDAP — contrairement à une lecture directe du fichier.
Modèle d'accès et propriété
Chaque inode stocke un propriétaire (UID) et un groupe (GID). Le noyau vérifie les permissions dans cet ordre : UID/GID du processus → propriétaire ? → groupe ? → autres. La première correspondance détermine l'accès.
Exemple :
ls -la /var/log/nginx/
# -rw-r----- 1 www-data adm 187234 Mar 26 10:41 access.log
Le propriétaire est www-data, le groupe est adm. Un processus exécuté en tant que www-data obtient un accès de niveau propriétaire, ignorant sa participation au groupe.
Plages de UID :
- 0 : root
- 1–999 : comptes système (démons, pas de connexion)
- 1000+ : utilisateurs réguliers
- 65534 : nobody
Configuré dans /etc/login.defs.
Les comptes système utilisent /usr/sbin/nologin ou /bin/false pour empêcher la connexion :
awk -F: '$3 < 1000 && $3 > 0 {print $1, $3, $7}' /etc/passwd
Groupes : accès partagé
Le groupe principal (GID dans /etc/passwd) s'applique aux nouveaux fichiers. Les groupes supplémentaires sont listés dans /etc/group.
Vérifiez l'appartenance :
groups # Groupes actuels
getent group docker # Membres
docker:x:998:deployer,ci
Les groupes simplifient le contrôle d'accès : ajoutez un utilisateur au groupe docker pour lui donner accès au socket sans sudo.
Fichiers de configuration
/etc/passwd (lisible par tous) :
deployer:x:1001:1001:Deploy Bot,,:/home/deployer:/bin/bash
Champs : nom d'utilisateur | espace réservé mot de passe (x) | UID | GID | GECOS | répertoire personnel | shell.
/etc/shadow (accès uniquement root) : contient les hachages SHA-512 ou yescrypt, ainsi que les paramètres d'expiration du mot de passe.
deployer:$6$rounds=5000$xPwF...$kE9...hash...:19800:0:99999:7:::
/etc/group :
docker:x:998:deployer,ci-bot
Commandes sûres pour éditer :
vipw # Éditer passwd avec verrouillage
vigr # Éditer group
pwck # Valider la configuration
Création et configuration des utilisateurs
Utilisez useradd avec les options clés :
| Option | Description |
|--------|-------------|
| -m | Créer le répertoire personnel |
| -s | Définir le shell par défaut |
| -G | Ajouter des groupes supplémentaires |
| -r | Compte système |
| -u | Spécifier le UID |
Exemples :
useradd -m -s /bin/bash -G sudo,docker ivan
useradd -r -s /usr/sbin/nologin ci-bot
passwd ivan # Définir le mot de passe
chpasswd <<< 'ivan:secret'
passwd -e ivan # Forcer le changement de mot de passe au prochain login
useradd -m copie depuis /etc/skel et attribue les droits sur le répertoire personnel.
umask soustrait à 0666 (fichiers) ou 0777 (répertoires). Valeur par défaut : 0022.
Environnement et modèles
/etc/skel contient les modèles pour les nouveaux répertoires personnels : .bashrc, .profile.
Paramètres globaux :
/etc/default/useradd: valeurs par défaut pouruseradd/etc/profile.d/*.sh: scripts d'environnement pour les connexions/etc/login.defs: umask, plages de UID
Points clés :
- Le UID contrôle l'accès, pas le nom d'utilisateur.
- Utilisez
getentplutôt quecat /etc/passwdpour des recherches compatibles NSS. - Les groupes sont le mécanisme principal pour déléguer des privilèges.
- Éditez toujours les fichiers de configuration via
vipwouvigr. - Les comptes système doivent avoir
/usr/sbin/nologinou/bin/falseet un UID inférieur à 1000.
— Editorial Team
Aucun commentaire pour le moment.