Tại sao getfacl loại bỏ hàng đầu / khỏi tên đường dẫn tuyệt đối?


10

Tôi đang tìm hiểu về ACL cho CentOS / Red Hat 6; Khi tôi chạy getfaclbằng một đường dẫn tuyệt đối, tôi nhận được trong số đầu ra:

getfacl: Xóa hàng đầu '/' khỏi tên đường dẫn tuyệt đối

Tại sao nó cần phải làm điều này? Trong những tình huống bạn sẽ cần phải sử dụng -phoặc --absolute-nameschuyển đổi?

Những cuốn sách của tôi bởi Wale Soyinka và Michael Jang thậm chí không đề cập đến điều này, tôi không thấy bất kỳ manh mối nào trong trang người đàn ông và dường như tôi không thể tìm thấy bất kỳ trang web nào trực tiếp giải quyết cảnh báo này.


1
Nó đã như thế này kể từ buổi bình minh của ACL trong Linux . Tôi không biết tại sao.
Gilles 'SO- ngừng trở nên xấu xa'

Cảm ơn đã giúp tôi xem xét nó và cho các liên kết. Kỹ năng lập trình của tôi hiện tại hơi thô sơ, nhưng tôi đã lưu tệp khi tôi bắt đầu giải quyết C / C ++ bằng cuốn sách Gaddis của mình.
Seananigans

Câu trả lời:


6

Từ trang người đàn ông của getfacl:

-p, --absolute-names
       Do not strip leading slash characters (`/'). The  default  behavior
       is to strip leading slash characters.

Một thông báo cảnh báo được phát ra khi bạn cung cấp đường dẫn tuyệt đối mà không sử dụng -pchuyển đổi.

Đầu ra là khác nhau khi đường dẫn tuyệt đối được đưa ra cho getfacllệnh.

Không có -pcông tắc:

$ getfacl /path/foo/bar
getfacl: Removing leading '/' from absolute path names
# file: path/foo/bar
[Output truncated...]

Lưu ý dấu gạch chéo hàng đầu trong đường dẫn tệp chỉ hiển thị khi -psử dụng chuyển đổi.

$ getfacl -p /path/foo/bar
# file: /path/foo/bar
[Output truncated...]

-p là hữu ích để giữ dấu gạch chéo hàng đầu khi bạn dẫn đầu ra để xử lý tiếp.

Các đầu ra giống nhau khi đường dẫn tương đối được đưa ra cho getfacllệnh.

$ getfacl bar
# file: bar
[Output truncated...]

Không thay đổi:

$ getfacl -p bar
# file: bar
[Output truncated...]

Xin lỗi, vì tôi còn khá mới với Linux, nhưng đây có vẻ là một công cụ khá thừa thãi, vì nếu bạn đang chuyển đầu ra sang một chương trình khác, bạn sẽ phải chỉnh sửa luồng đầu tiên để lấy phần đầu ra đó trong phần đầu tiên chỗ nào, tôi có đúng không? Điều gì sẽ là một trường hợp ví dụ trong đó sẽ hữu ích để tước dấu gạch chéo hàng đầu? Vì nó là một con đường tuyệt đối, có vẻ hơi ngớ ngẩn khi lột nó ngay từ đầu.
Seananigans

2
Trong các bản phát hành khác (ví dụ FreeBSD), công tắc này không tồn tại. Bằng cách xem nguồn của gói acl RHEL, có vẻ như --absolute-nameschỉ xử lý chuỗi đầu ra - "# file:", nhưng không phải là logic phía sau. Lúc đầu tôi đoán nó có thể là một tính năng bảo mật. Tuy nhiên, việc chuyển đổi không tồn tại trong setfacl. Giả định cuối cùng của tôi là tác giả muốn mô phỏng tarhành vi mặc dù việc -psử dụng chuyển đổi trên getfaclcó thể là vô ích.
Ivan Châu

9
Điều này không trả lời tại sao mặc dù. Tại sao các dấu gạch chéo hàng đầu bị tước theo mặc định, làm thế nào để giúp ??
Segfault
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.