Почему getfacl удаляет начальные / абсолютные пути?

10

Я нахожусь в процессе изучения ACL для CentOS / Red Hat 6; когда я бегу getfaclпо абсолютному пути, я получаю вывод:

getfacl: удаление начальных символов '/' из имен абсолютных путей

Зачем это нужно делать? В каких ситуациях вам нужно использовать переключатель -pили --absolute-names?

В моих книгах Уэйла Соинки и Майкла Джанга об этом даже не упоминается, я не вижу никаких подсказок на странице руководства, и я не могу найти ни одного сайта, который бы непосредственно касался этого предупреждения.

Seananigans
источник
1
Так было с момента появления ACL в Linux . Я не знаю почему.
Жиль "ТАК - перестать быть злым"
Спасибо, что помогли мне разобраться в этом и за ссылку. В данный момент мои навыки программирования немного зачаточны, но я сохранил файл, когда начну заниматься C / C ++ с моей книгой Гаддиса.
Seananigans

Ответы:

6

Из справочной страницы getfacl:

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

При указании абсолютного пути без использования -pпереключателя выдается предупреждающее сообщение .

Выходы различаются, когда getfaclкоманде дается абсолютный путь .

Без -pвыключателя:

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

Обратите внимание, что начальная косая черта в пути к файлу отображается только при использовании -pпереключателя.

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

-p полезно сохранить начальную косую черту, когда вы передаете выходные данные для дальнейшей обработки.

Выходы одинаковы, когда getfaclкоманде дан относительный путь .

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

Без изменений:

$ getfacl -p bar
# file: bar
[Output truncated...]
Иван Чау
источник
Простите, поскольку я относительно новичок в Linux, но это выглядит довольно избыточным переключателем, поскольку, если бы вы передавали выходные данные в другую программу, вам все равно пришлось бы редактировать поток, чтобы захватить этот раздел вывода в первом место, я прав? Каков пример, в котором было бы полезно удалить косую черту? Так как это абсолютный путь, кажется глупым лишать его.
Seananigans
2
В других дистрибутивах (например, FreeBSD) этот переключатель не существует. Просматривая исходный код пакета acl RHEL, кажется, что он имеет --absolute-namesдело только со строкой вывода - "# file:", но не с логикой. Сначала я думаю, что это может быть функция безопасности. Тем не менее, переключатель не существует в setfacl. Мое последнее предположение - автор хотел бы смоделировать tarповедение, хотя -pиспользование переключателя getfaclможет быть бесполезным.
Иван Чау
9
Это не отвечает, почему, хотя. Почему ведущие косые черты по умолчанию удаляются, как это помогает?
Segfault