Dlaczego getfattr nie wyświetla niczego dla pliku z ustawionym bitem atrybutu rozszerzonego?

10

Mam instalację Nagios XI uruchomioną na CentOS 6.2 i chcę zmodyfikować skrypt kopii zapasowej. Zauważyłem, że bit skryptu rozszerzonego jest ustawiony dla tego skryptu powłoki, więc chcę mieć pewność, że nic nie zepsuję, gdy wprowadzę zmiany. Eksperymentowałem i odkryłem, że „cp -p” nie zachowuje tego ustawienia (zobacz komentarz do aktualizacji na ten temat). Nie znam się na rozszerzonych atrybutach w systemie Linux i odkryłem, że istnieje polecenie „getfattr”, które ma wyświetlać rozszerzone atrybuty, ale nie wyświetla niczego dla tego pliku.

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

Ostatecznie moim celem jest zmodyfikowanie pliku przy jednoczesnym zachowaniu atrybutów ustawionych podczas instalacji oryginalnego produktu. Czy istnieje powód, dla którego ustawiony jest rozszerzony bit atrybutu, mimo że według getfattr żadne właściwości nie są najwyraźniej obecne?

Alan
źródło
1
Rozwiązałem jedną zagadkę: domyślnie „cp -p” to „cp --preserve = tryb, własność, znaczniki czasu”. Użycie „cp --preserve = all backup_xi.sh backup_xi.sh.ORIG” działa i zachowuje bit rozszerzonego atrybutu.
Alan

Odpowiedzi:

10

security.selinuxRozszerzony atrybut nie jest wyświetlany domyślnie po getfattr; musisz tego wyraźnie zażądać.

$ getfattr -d Work
$ getfattr -n security.selinux Work
# file: Work
security.selinux="unconfined_u:object_r:user_home_t:s0"
Ignacio Vazquez-Abrams
źródło
5
Dziękuję Ci. Strona man getfattr jest bardzo myląca: „-d: Zrzuca wartości wszystkich rozszerzonych atrybutów powiązanych z nazwą ścieżki”. Najwyraźniej „wszystko” nie oznacza „WSZYSTKO”. Łał. Odkryłem, że opcja „-m” ze wzorem „-” wyświetla atrybuty „wszystkie”. Używając polecenia „getfattr -m - backup_xi.sh”, widzę „security.selinux” jako jedyny atrybut.
Alan,
Rzeczywiście, strona podręcznika ukrywa: „Domyślną wartością wzorca jest„ ^ użytkownik \\. ”, Która obejmuje wszystkie atrybuty w przestrzeni nazw użytkownika. Podaj„ - ”, aby uwzględnić wszystkie atrybuty.” Dobrze wiedzieć.
Ashe
1
Aby wyświetlić listę wszystkich rozszerzonych atrybutów:getfattr -d -m ".*" <filename>
elig