Dlaczego getfacl usuwa wiodące / z absolutnych ścieżek?

10

Jestem w trakcie nauki o ACL dla CentOS / Red Hat 6; kiedy uruchamiam getfaclprzy użyciu ścieżki bezwzględnej, dostaję się do wyniku:

getfacl: Usuwanie wiodących „/” z bezwzględnych nazw ścieżek

Dlaczego to robi? W jakich sytuacjach musiałbyś użyć przełącznika -plub --absolute-names?

Moje książki Wale Soyinki i Michaela Janga nie wspominają o tym ani słowem, nie widzę żadnych wskazówek na stronie podręcznika i nie mogę znaleźć stron, które bezpośrednio dotyczą tego ostrzeżenia.

Seananigans
źródło
1
Tak było od zarania ACL w Linuksie . Nie wiem dlaczego.
Gilles 'SO - przestań być zły'
Dzięki za pomoc w zapoznaniu się z tym i link. Moje umiejętności programistyczne są w tej chwili trochę szczątkowe, ale zapisałem plik, kiedy zacząłem zajmować się C / C ++ za pomocą mojej książki Gaddis.
Seananigans

Odpowiedzi:

6

Ze strony podręcznika użytkownika getfacl:

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

Komunikat ostrzegawczy jest emitowany, gdy podasz ścieżkę bezwzględną bez użycia -pprzełącznika.

Wyjścia są różne, gdy do getfaclpolecenia podana jest ścieżka bezwzględna .

Bez -pprzełącznika:

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

Uwaga: wiodący ukośnik w ścieżce pliku pokazuje się tylko wtedy, gdy -pużywany jest przełącznik.

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

-p przydaje się zachować początkowy ukośnik podczas przesyłania danych wyjściowych do dalszego przetwarzania.

Dane wyjściowe są takie same, gdy do getfaclpolecenia podana jest ścieżka względna .

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

Bez zmian:

$ getfacl -p bar
# file: bar
[Output truncated...]
Ivan Chau
źródło
Wybaczcie, ponieważ jestem stosunkowo nowy w Linuksie, ale wydaje się to dość zbędnym przełącznikiem, ponieważ jeśli przesyłasz dane wyjściowe do innego programu, musisz i tak edytować strumień, aby pobrać tę sekcję wyniku w pierwszym miejsce, czy mam rację? Jaki byłby przykładowy przypadek, w którym przydatne byłoby usunięcie początkowego ukośnika? Ponieważ jest to ścieżka bezwzględna, wydaje się, że głupota jest trochę głupia.
Seananigans
2
W innych dystrybucjach (np. FreeBSD) ten przełącznik nie istnieje. Patrząc na źródło pakietu acl RHEL, wydaje się, że --absolute-nameszajmuje się tylko ciągiem wyjściowym - „# file:”, ale nie logiką z tyłu. Na początku myślę, że może to być funkcja bezpieczeństwa. Niemniej jednak przełącznik nie istnieje w setfacl. Moje ostatnie założenie jest takie, że autor chciałby zasymulować tarzachowanie, chociaż -pużycie przełącznika getfaclmoże być bezużyteczne.
Ivan Chau
9
Nie odpowiada to jednak dlaczego. Dlaczego wiodące ukośniki są domyślnie usuwane, jak to w ogóle pomaga?
Segfault