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 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 '' }
endComment 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> |
|---|---|
| reason | creating/relocating a user's home is per-user and may need data migration |
| resource | manual |
pavois harden plan localoù 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
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 7.2.9, 7.2.8 | direct | per OS, see the benchmark table | haute |
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.