← Toutes les règles
SOCLE-CLD-IAM-012// Accounts (home dirs)moyenneétat du système de fichiers

Les fichiers d'initialisation utilisateur doivent appartenir à l'utilisateur primaire

Garantit que les fichiers cachés (par ex. .bashrc, .profile) à la racine du home de chaque utilisateur interactif appartiennent à cet utilisateur.

Vérifié sur les métadonnées d’un chemin, mode, propriétaire, groupe, SUID/SGID.

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 2 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

Les fichiers d'initialisation locaux configurent l'environnement shell à la connexion. Si un fichier caché appartient à un autre utilisateur, celui-ci peut le réécrire et faire exécuter du code arbitraire dans la session de la victime au prochain logon. Une appartenance étrangère de ces fichiers est aussi un signe classique de compromission.

Ce que vérifie Pavois

Pavois déduit l'UID et le home de chaque utilisateur interactif depuis le /etc/passwd réel, puis exécute find -maxdepth 1 -type f -name '.[^.]*' ! -uid "$u" sur le home existant. En comparant à l'UID effectif du propriétaire du compte, il détecte tout fichier caché appartenant à autrui, exactement ce qu'un attaquant déposerait, sans se fier à une hypothèse de paquet ou de squelette.

describe command('awk -F: \'($3>=1000 && $3!=65534 && $6!="/"){print $3":"$4":"$6}\' /etc/passwd | while IFS=: read u g h; do [ -d "$h" ] && timeout 60 find -P "$h" -maxdepth 1 -type f -name \'.[^.]*\' ! -uid "$u" -print 2>/dev/null; done | head -1') do
  its('exit_status') { should_not cmp 124 }  # timeout killed the scan: no evidence, not a pass
  its('stdout.strip') { should eq '' }
end

Comment vérifier qu’elle est appliquée

Pour un utilisateur, exécutez find ~user -maxdepth 1 -type f -name '.[^.]*' ! -uid $(id -u user) -printf '%p %u\n'. Attendu : aucune sortie (chaque fichier caché appartient à l'utilisateur).

Inspecter et investiguer

L'appartenance est inspectée directement, non journalisée. Auditez avec ls -la ~user | grep '^\.' ou stat -c '%U %n' ~user/.*. Avec l'audit d'intégrité des fichiers activé, les opérations chown sur ces chemins apparaissent dans /var/log/audit/audit.log sous la clé de surveillance concernée.

Remédiation

Aucune remédiation automatique n'est fournie (remediation est vide) : appliquez manuellement. Pour chaque utilisateur signalé, reprenez la propriété de ses fichiers cachés de premier niveau, par ex. find ~user -maxdepth 1 -type f -name '.[^.]*' ! -uid $(id -u user) -exec chown $(id -un user) {} +. Cherchez pourquoi un UID étranger les possédait, cela peut révéler une compromission plutôt qu'une simple erreur.

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

command# Dot-files in a home must be owned by that user. List offenders, then chown deliberately. for d in $(awk -F: '($3>=1000){print $6}' /etc/passwd); do find "$d" -maxdepth 1 -name '.*' ! -user "$(stat -c %U "$d")" 2>/dev/null; done
reasonfixing dot-file ownership is per-user, verify before chowning a user's files
resourcemanual
pavois harden plan local

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

Impact & précautions

Des fichiers d'initialisation appartenant à autrui permettent un détournement de session au logon et peuvent masquer une intrusion. Précautions avant application : avant d'exécuter chown, relevez le propriétaire actuel (stat -c '%U %n') pour l'investigation, et confirmez que le home appartient bien au compte listé, une collision d'UID après migration peut faire passer des fichiers légitimes pour étrangers. Évitez de récurser au-delà du premier niveau pour limiter l'impact.

Mapping des normes

NormeRéférenceTypeVersionConfiance
ANSSI BP-028R50direct2.0haute
CIS7.2.10, 7.2.9directper 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