Pourquoi getfattr n'affiche rien pour un fichier dont le bit d'attribut étendu est défini?

10

J'ai une installation de Nagios XI en cours d'exécution sur CentOS 6.2 et je souhaite modifier le script de sauvegarde. J'ai remarqué que le bit d'attribut étendu est défini pour ce script shell, donc je veux être sûr de ne rien gâcher lorsque j'y apporte des modifications. J'ai expérimenté et trouvé que "cp -p" ne conserve pas ce paramètre (voir le commentaire pour la mise à jour à ce sujet). Je suis nouveau dans les attributs étendus sous Linux, et j'ai découvert qu'il existe une commande 'getfattr' qui est censée afficher les attributs étendus, mais elle n'affiche rien pour ce fichier.

cd /usr/local/nagiosxi/scripts
ll backup_xi.sh
-rwxr-x---.  1 nagios nagios   2757 Jul  3 10:03 backup_xi.sh*

# nothing is displayed by 'getfattr':
getfattr -d backup_xi.sh

# and nothing special seems to be present according to 'getfacl':
getfacl backup_xi.sh
# file: backup_xi.sh
# owner: nagios
# group: nagios
user::rwx
group::r-x
other::---

En fin de compte, mon objectif est de modifier le fichier tout en préservant les attributs définis lors de l'installation du produit d'origine. Y a-t-il une raison pour laquelle le bit d'attribut étendu est défini, même si aucune propriété n'est apparemment présente selon getfattr?

Alan
la source
1
Eh bien, j'ai résolu une énigme: "cp -p" est par défaut "cp --preserve = mode, propriété, horodatages". L'utilisation de "cp --preserve = all backup_xi.sh backup_xi.sh.ORIG" fonctionne et préserve le bit d'attribut étendu.
Alan

Réponses:

10

L' security.selinuxattribut étendu n'est pas affiché par défaut par getfattr; vous devez le demander explicitement.

$ getfattr -d Work
$ getfattr -n security.selinux Work
# file: Work
security.selinux="unconfined_u:object_r:user_home_t:s0"
Ignacio Vazquez-Abrams
la source
5
Je vous remercie. La page de manuel getfattr est très trompeuse: "-d: vide les valeurs de tous les attributs étendus associés au chemin d'accès." Apparemment, "tous" ne signifie pas "TOUS". Sensationnel. J'ai trouvé que l'option "-m" avec le motif "-" répertorie "tous" les attributs. En utilisant la commande "getfattr -m - backup_xi.sh", je vois "security.selinux" comme seul attribut.
Alan
En effet, la page de manuel cache: "La valeur par défaut pour le modèle est" ^ utilisateur \\. ", Qui inclut tous les attributs dans l'espace de nom de l'utilisateur. Spécifiez" - "pour inclure tous les attributs." Bon à savoir.
Ashe
1
Pour répertorier tous les attributs étendus:getfattr -d -m ".*" <filename>
elig