为什么getfacl从绝对路径名中删除前导/?


10

我正在学习有关CentOS / Red Hat 6的ACL。当我getfacl使用绝对路径运行时,得到以下输出:

getfacl:从绝对路径名中删除前导“ /”

为什么需要这样做?在什么情况下需要使用-p--absolute-names开关?

我的Wale Soyinka和Michael Jang的书甚至都没有提及这一点,在手册页中没有发现任何线索,而且似乎找不到直接解决此警告的网站。


1
自从Linux中的ACL诞生以来就是这样。我不知道为什么
吉尔(Gilles)'所以

感谢您帮助我进行调查并提供了链接。目前,我的编程技巧还很初级,但是当我开始用Gaddis书解决C / C ++时,我已经保存了该文件。
Seananigans

Answers:


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...]

请注意,仅当使用-pswitch 时,文件路径中的斜杠才显示。

$ 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)中,此开关不存在。通过查看RHEL acl包的源,似乎--absolute-names只处理输出字符串–“#file:”,而不处理后面的逻辑。起初我想这可能是一项安全功能。但是,该开关在中不存在setfacl。我的最后一个假设是作者想模拟这种tar行为,尽管-p开关的使用getfacl可能没有用。
Ivan Chau

9
尽管这不能回答为什么。为什么默认情况下会删除前导斜杠,这有什么帮助?
Segfault 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.