#Les attributs étendus, les contextes SELinux, et les ACL {{INLINETOC}} ##Introduction Cet article décrit la manière de conserver les ACL, les attributs étendus et les contextes SELinux sous le serveur CentOS/RHEL/Fedora Linux lors d'une sauvegarde avec tar et rsync. ##Les attributs Les deux commandes GNU / tar et rsync peuvent archiver les attributs étendus suivants lors de la sauvegarde: * Les attributs étendus : xattrs * Contexte Selinux * Acls ###Les attributs étendus : xattrs Au contraire des attributs réguliers, les attributs étendus ne sont pas interprétés par le système de fichiers, mais sont stockés et gérés séparément. Tout attribut étendu est identifié par une paire (nom:valeur) qui permet la manipulation des informations stockées. Les attributs étendus sont généralement limités en taille, mais ces limitations sont dépendantes du système de fichier utilisé et de sa configuration. Cela nécessite donc des systèmes de fichiers compatibles avec les attributs étendus. Sous Linux, les systèmes de fichiers ext2, ext3, ext4, JFS, ReiserFS, XFS, Btrfs et OCFS2 1.6 incluent le support pour les attributs étendus ###Contexte Selinux SELinux utilise les attributs étendus (Extended Attributes – EA) des fichiers pour les étiquettes. En plus de la notion de « droits de lecture, écriture, exécution » pour un usager donné, SELinux définit pour chaque fichier ou processus : * Un usager virtuel (ou collection de rôles) ; * Un rôle ; * Un contexte de sécurité. Les commandes « système » sont étendues pour pouvoir manipuler ces objets et définir des politiques (règles d'accès), et des statuts (niveau de confidentialité). ###Les ACLs Les ACL (Access Control Lists = Listes de Contrôle d'Accès) permettent de gérer les permissions caractérisant les autorisations d'accès à un fichier de façon beaucoup plus fine qu'avec les mécanismes Unix traditionnels. Les listes de contrôle d'accès sont des métadonnées stockées dans les inodes de fichier, tout comme les permissions traditionnelles, les dates, etc... #Archiver et conserver les attributs étendus, les contextes SELinux, et les ACL ##syntaxe de commande tar ###Sauvegarde La syntaxe est: ``` tar --selinux --acls --xattrs -cvf file.tar /var/www ``` Où, * **--selinux** - Sauvegarde le contexte SELinux dans l'archive appelée file.tar. * **--acls** - ASave les ACL à l'archive appelée file.tar. * **--xattrs** - Sauvegarde l'utilisateur / root xattrs dans l'archive appelée file.tar Merci de bien archiver tous les attributs étendus, y compris SELinux et les ACL. * **-c** - Crée une nouvelle archive appelée file.tar. * **-v** - Sortie verbeuse. * **-f file.tar** - Nom du fichier archive. * **/var/www** - Crée une archive appelée fichier.tar du répertoire / var / www ###Extraction ####Extraction AVEC les attributs Pour extraire des archives: ``` tar -xvf file.tar ``` ####Extraction SANS les attributs On peut ignorer les attributs en utilisant la syntaxe suivante pour la rétrocompatibilité avec les anciens systèmes basés sur Linux: ``` tar --no-acls --no-selinux --no-xattrs -xvf file.tar ``` Où, * **--no-acls** - N'extrayez pas les ACL de l'archive. * **--no-selinux** - Ne pas extraire le contexte SELinux de l'archive. * **--no-xattrs** - Ne pas extraire l'utilisateur / root xattrs de l'archive ##Syntaxe de la commande rsync ###Usage La syntaxe est: ``` rsync -av -A -X /source/chemin /dest/chemin rsync -az -A -X /source/chemin utilisateur1@serveur2:/dest/chemin ``` Où, * **-A:** Préserve l'ACL * **-X:** Conserve les attributs étendus / SELinux * **-a:** Mode d'archivage * **-z:** Compresser les données du fichier pendant le transfert ###Exemples Pour synchroniser /var/www sur node2, entrer: ``` rsync -aAX /var/www root@node2:/var/www/ ``` OU ``` rsync -e ssh -aAX /var/www root@node2:/var/www/ ``` ###Options supplémentaires Pour sauvegarder les liens durs (-H), voir la progression (-P) et la sortie verbose (-v): ``` rsync -e ssh -aAXHPv /var/www root@node2:/var/www/ ``` #Visualiser les attributs étendus, les contextes SELinux et les ACL ##Attributs étendus Pour voir les attributs étendus des objets du système de fichiers, taper la commande getfattr: ``` getfattr -d -m --R /chemin/vers/dir getfattr -d -m - /chemin/vers/fichier getfattr -d -m security.selinux -R /var/www ``` Pour visualiser les attributs de fichier sur système de fichiers ext2: ``` lsattr /chemin/vers/fichier ``` ##Contexte SElinux Pour voir le contexte SElinux taper la commande suivante: ``` ls -lZ ls -lZ /chemin/vers/fichier ``` OU ``` ls -Z ``` ##ACL Les deux commandes permettant de visualiser les droits ACL et de les modifier sont, sous UNIX : * **getfacl** : pour visualiser * **setfacl** : pour modifier