← Toutes les règles
SOCLE-CLD-IAM-005// Accountsfaibleétat d’inventaire

Tous les GID référencés dans /etc/passwd doivent exister dans /etc/group

Garantit que chaque GID principal référencé dans /etc/passwd est réellement défini dans /etc/group.

Vérifié sur ce qui est installé ou enregistré, paquets présents/absents, bases de comptes.

Un PASS prouve✓ actif maintenant✓ sur disque✓ survit au rebootle verdict qualifié →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0Ubuntu 22.04CIS 3.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
Un seul check, mappé sur 3 normes

Un mapping est une référence croisée vers l’endroit où chaque norme situe cette exigence, ancrée et recoupée, pas une affirmation d’équivalence. Un check réussi est une preuve vers ces références, comment le lire.

Pourquoi cette règle

Chaque GID principal attribué à un utilisateur dans /etc/passwd doit correspondre à un groupe existant dans /etc/group. Un GID orphelin est une fuite de privilèges latente : si un administrateur crée plus tard un groupe portant ce même GID, l'utilisateur obtient silencieusement l'accès à tous ses fichiers et ressources sans aucune attribution explicite.

Ce que vérifie Pavois

Pavois extrait chaque GID principal distinct de /etc/passwd puis, pour chacun, interroge la base de groupes résolue avec getent group ; tout GID sans groupe correspondant est signalé. Le contrôle réussit uniquement si aucun n'est orphelin. L'utilisation de getent consulte la résolution de groupes effective (y compris SSSD/LDAP), et pas seulement le fichier /etc/group.

describe command('awk -F: \'{print $4}\' /etc/passwd | sort -u | while read g; do getent group "$g" >/dev/null || echo "$g"; done') do
  its('stdout.strip') { should eq '' }
end

Comment vérifier qu’elle est appliquée

Exécutez awk -F: '{print $4}' /etc/passwd | sort -u | while read g; do getent group "$g" >/dev/null || echo "$g"; done. Sortie attendue : rien. Tout GID affiché est référencé par un utilisateur mais non défini comme groupe.

Inspecter et investiguer

  • Trouver les utilisateurs référençant un GID orphelin : awk -F: -v g=<gid> '$4==g{print $1}' /etc/passwd.
  • Inspecter les définitions de groupes : getent group ou cat /etc/group.
  • Contrôle d'intégrité : grpck et pwck.

Remédiation

Aucune remédiation automatique n'est fournie. Corrigez manuellement : soit créez le groupe manquant (groupadd -g <gid> <nom>), soit réaffectez les utilisateurs concernés à un groupe valide (usermod -g <gid_valide> <utilisateur>), puis relancez le scan.

Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :

commandawk -F: '{print $4}' /etc/passwd | sort -u | while read g; do getent group "$g" >/dev/null || echo "missing group gid=$g"; done # groupadd -g <gid> <name> for each, or reassign the user's primary group
reasona user's primary GID must exist in /etc/group, create the missing group deliberately
resourcemanual
pavois harden plan local

où la cible est local, un alias SSH user@hôte, ou un conteneur , Docs

Impact & précautions

La mauvaise configuration est de faible gravité aujourd'hui mais devient une fuite de privilèges le jour où un groupe est créé avec un GID jusque-là orphelin. Avant de corriger, identifiez les utilisateurs portant le GID orphelin et décidez délibérément si le groupe doit exister ou si les utilisateurs doivent changer ; réaffecter le groupe principal d'un utilisateur modifie l'appartenance par défaut des fichiers qu'il créera ensuite.

Mapping des normes

NormeRéférenceTypeVersionConfiance
CIS7.2.3, 8.2.2directper OS, see the benchmark tablehaute
NISTCM-6(a), IA-2support800-53 Rev 5 · 800-171 Rev 2 (pinned)moyenne
PCI DSS8.2.2support4.0.1moyenne

Chaque référence est une référence croisée ancrée dans le benchmark amont et recoupée avec le SCAP Security Guide et ansible-lockdown, pas une affirmation d’équivalence. Direct = une exigence prescriptive au niveau de la ligne ; support = une famille de contrôle abstraite (NIST) vers laquelle le check apporte une preuve. Comment lire un mapping.

Sources & références