Mengapa getfattr tidak menampilkan apa pun untuk file yang memiliki set bit atribut diperluas?

10

Saya sudah menginstal Nagios XI yang berjalan pada CentOS 6.2, dan ingin memodifikasi skrip cadangan. Saya perhatikan bahwa bit atribut diperluas diatur untuk skrip shell ini, jadi saya ingin memastikan untuk tidak mengacaukan apa pun ketika saya melakukan perubahan padanya. Saya bereksperimen dan menemukan bahwa "cp -p" tidak mempertahankan pengaturan ini (lihat komentar untuk pembaruan tentang ini). Saya baru mengenal atribut diperluas di Linux, dan menemukan bahwa ada perintah 'getfattr' yang seharusnya menampilkan atribut diperluas, namun tidak menampilkan apa pun untuk file ini.

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

Pada akhirnya, tujuan saya adalah memodifikasi file sambil mempertahankan atribut apa pun yang ditetapkan selama instalasi produk asli. Apakah ada alasan mengapa bit atribut diperluas diatur, meskipun tidak ada properti yang tampaknya sesuai dengan getfattr?

Alan
sumber
1
Yah, saya memecahkan satu teka-teki: "cp -p" default ke "cp --preserve = mode, kepemilikan, cap waktu". Menggunakan "cp --preserve = all backup_xi.sh backup_xi.sh.ORIG" berfungsi dan mempertahankan bit atribut yang diperluas.
Alan

Jawaban:

10

The security.selinuxatribut diperpanjang tidak ditampilkan secara default oleh getfattr; Anda harus secara eksplisit memintanya.

$ getfattr -d Work
$ getfattr -n security.selinux Work
# file: Work
security.selinux="unconfined_u:object_r:user_home_t:s0"
Ignacio Vazquez-Abrams
sumber
5
Terima kasih. Halaman manual getfattr sangat menyesatkan: "-d: Dump nilai semua atribut diperluas yang terkait dengan pathname." Rupanya "semua" tidak berarti "SEMUA". Wow. Saya menemukan bahwa opsi "-m" dengan pola "-" daftar "semua" atribut. Menggunakan perintah "getfattr -m - backup_xi.sh", saya melihat "security.selinux" sebagai satu-satunya atribut.
Alan
Memang, halaman manual menyembunyikan: "Nilai default untuk pola adalah" ^ user \\. ", Yang mencakup semua atribut di namespace pengguna. Tentukan" - "untuk menyertakan semua atribut." Senang mendengarnya.
Ashe
1
Untuk daftar semua atribut yang diperluas:getfattr -d -m ".*" <filename>
syarat