Почему getfattr не отображает ничего для файла с установленным битом расширенного атрибута?

10

Я установил Nagios XI на CentOS 6.2 и хочу изменить скрипт резервного копирования. Я заметил, что для этого сценария оболочки установлен бит расширенного атрибута, поэтому я хочу быть уверенным, что ничего не испортится, когда я внесу в него изменения. Я экспериментировал и обнаружил, что «cp -p» не сохраняет эту настройку (см. Комментарий для обновления). Я новичок в расширенных атрибутах в Linux и обнаружил, что есть команда 'getfattr', которая должна отображать расширенные атрибуты, однако она ничего не отображает для этого файла.

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

В конечном счете, моя цель - изменить файл, сохранив те атрибуты, которые были установлены при первоначальной установке продукта. Есть ли причина, по которой установлен бит расширенного атрибута, даже если в соответствии с getfattr явно отсутствуют какие-либо свойства?

Алан
источник
1
Ну, я решил одну загадку: "cp -p" по умолчанию равен "cp --preserve = mode, owner, timestamps". Использование «cp --preserve = all backup_xi.sh backup_xi.sh.ORIG» работает и сохраняет бит расширенного атрибута.
Алан

Ответы:

10

security.selinuxРасширенный атрибут по умолчанию не отображается по getfattr; Вы должны явно запросить это.

$ getfattr -d Work
$ getfattr -n security.selinux Work
# file: Work
security.selinux="unconfined_u:object_r:user_home_t:s0"
Игнасио Васкес-Абрамс
источник
5
Спасибо. Страница man getfattr очень вводит в заблуждение: «-d: сбросить значения всех расширенных атрибутов, связанных с путем». Очевидно, «все» не означает «ВСЕ». Вау. Я обнаружил, что опция "-m" с шаблоном "-" перечисляет "все" атрибуты. Используя команду «getfattr -m - backup_xi.sh», я вижу «security.selinux» в качестве единственного атрибута.
Алан
Действительно, справочная страница скрывает: «Значением по умолчанию для pattern является« ^ user \\. », Которое включает в себя все атрибуты в пространстве имен пользователя. Укажите« - »для включения всех атрибутов». Хорошо знать.
Эш
1
Чтобы перечислить все расширенные атрибуты:getfattr -d -m ".*" <filename>
elig