Tại sao getfattr không hiển thị bất cứ điều gì cho một tệp có tập bit thuộc tính mở rộng?


10

Tôi đã có bản cài đặt Nagios XI chạy trên CentOS 6.2 và muốn sửa đổi tập lệnh sao lưu. Tôi nhận thấy rằng bit thuộc tính mở rộng được đặt cho tập lệnh shell này, vì vậy tôi muốn chắc chắn không làm hỏng bất cứ điều gì khi tôi thay đổi nó. Tôi đã thử nghiệm và thấy rằng "cp -p" không duy trì cài đặt này (xem bình luận để cập nhật về điều này). Tôi mới sử dụng các thuộc tính mở rộng trên Linux và nhận thấy rằng có một lệnh 'getfattr' được cho là hiển thị các thuộc tính mở rộng, tuy nhiên nó không hiển thị bất cứ điều gì cho tệp này.

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

Cuối cùng, mục tiêu của tôi là sửa đổi tệp trong khi bảo tồn bất kỳ thuộc tính nào được đặt trong quá trình cài đặt sản phẩm gốc. Có một lý do tại sao bit thuộc tính mở rộng được thiết lập, mặc dù không có thuộc tính rõ ràng nào hiện diện theo getfattr?


1
Chà, tôi đã giải được một câu đố: "cp -p" mặc định là "cp --preserve = chế độ, quyền sở hữu, dấu thời gian". Sử dụng "cp --preserve = all backup_xi.sh backup_xi.sh.ORIG" hoạt động và bảo tồn bit thuộc tính mở rộng.
Alan

Câu trả lời:


10

Các security.selinuxthuộc tính mở rộng không được hiển thị theo mặc định bởi getfattr; bạn phải yêu cầu nó một cách rõ ràng

$ getfattr -d Work
$ getfattr -n security.selinux Work
# file: Work
security.selinux="unconfined_u:object_r:user_home_t:s0"

5
Cảm ơn bạn. Trang man getfattr rất dễ gây hiểu lầm: "-d: Kết xuất các giá trị của tất cả các thuộc tính mở rộng được liên kết với tên đường dẫn." Rõ ràng "tất cả" không có nghĩa là "TẤT CẢ". Ồ Tôi thấy rằng tùy chọn "-m" với các thuộc tính "-" liệt kê "tất cả". Sử dụng lệnh "getfattr -m - backup_xi.sh", tôi thấy "security.selinux" là thuộc tính duy nhất.
Alan

Thật vậy, trang man ẩn: "Giá trị mặc định cho mẫu là" ^ user \\. ", Bao gồm tất cả các thuộc tính trong không gian tên người dùng. Chỉ định" - "để bao gồm tất cả các thuộc tính." Tốt để biết.
Ashe

1
Để liệt kê tất cả các thuộc tính mở rộng:getfattr -d -m ".*" <filename>
elig
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.