← Toutes les règles
SOCLE-CLD-IAM-010// Accounts (home dirs)moyenneétat d’inventaire

Les répertoires personnels de tous les utilisateurs interactifs doivent exister

Garantit que chaque compte interactif (UID ≥ 1000, hors nobody) possède réellement sur le disque le répertoire personnel déclaré dans /etc/passwd.

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 1 norme

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

Si un utilisateur interactif a un répertoire personnel défini mais inexistant, sa session démarre avec le répertoire / comme dossier de travail. Cela peut provoquer un déni de service (ses fichiers d'initialisation et de configuration sont illisibles) et exposer des fichiers système qu'il ne devrait pas voir, tandis que ses fichiers de configuration sont créés à des emplacements imprévus.

Ce que vérifie Pavois

Pavois interroge la base de comptes réelle avec awk sur /etc/passwd, sélectionne les véritables utilisateurs interactifs (UID ≥ 1000, hors 65534, home ≠ /), puis teste chaque home déclaré avec [ -d "$h" ]. Il signale le premier répertoire manquant. Cela reflète l'état effectif (entrées passwd plus réalité sur disque) plutôt que de présumer l'agencement de /home depuis un modèle.

describe command('awk -F: \'($3>=1000 && $3!=65534 && $6!="/"){print $3":"$4":"$6}\' /etc/passwd | while IFS=: read u g h; do [ -d "$h" ] || echo "$h"; done | head -1') do
  its('stdout.strip') { should eq '' }
end

Comment vérifier qu’elle est appliquée

Exécutez awk -F: '($3>=1000 && $3!=65534 && $6!="/"){print $1, $6}' /etc/passwd puis vérifiez que chaque chemin listé existe (ls -ld <home>). Attendu : le répertoire personnel de chaque utilisateur interactif correspond à un répertoire existant.

Inspecter et investiguer

Listez les comptes fautifs avec awk -F: '($3>=1000 && $3!=65534){print $1, $6}' /etc/passwd et vérifiez getent passwd <user>. Les échecs à la connexion apparaissent dans /var/log/auth.log (Debian/Ubuntu) ou via journalctl -u systemd-logind / les messages PAM signalant l'absence du home.

Remédiation

Aucune remédiation automatique n'est fournie (remediation est vide) : appliquez manuellement. Pour chaque utilisateur signalé, créez le répertoire et corrigez propriétaire/permissions, par ex. mkdir -p /home/<user> && chown <user>:<group> /home/<user> && chmod 0750 /home/<user>, puis garnissez-le depuis /etc/skel si besoin. Décidez délibérément, pour les comptes de type service, s'ils doivent vraiment être interactifs.

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

command# Find interactive users whose home directory is missing, then create it deliberately: awk -F: '($3>=1000 && $7!~/(nologin|false)/){print $1" "$6}' /etc/passwd # mkdir -p <home>; chown <user>:<group> <home>; chmod 750 <home>
reasoncreating/relocating a user's home is per-user and may need data migration
resourcemanual
pavois harden plan local

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

Impact & précautions

Une mauvaise configuration provoque des échecs de connexion ou des sessions ancrées en / et peut révéler des fichiers système. Précautions avant application : vérifiez que chaque compte signalé est un véritable utilisateur humain/interactif avant de créer un home, un compte de service sans home peut être intentionnel ; envisagez plutôt de changer son shell en nologin. À la création, posez immédiatement propriétaire et 0750 pour ne pas créer un home lisible par tous.

Mapping des normes

NormeRéférenceTypeVersionConfiance
CIS7.2.9, 7.2.8directper OS, see the benchmark tablehaute

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