getfaclが先頭の/を絶対パス名から削除するのはなぜですか?


10

私はCentOS / Red Hat 6のACLについて学んでいる最中です。getfacl絶対パスを使用して実行すると、次のような出力が得られます。

getfacl:絶対パス名から先頭の「/」を削除する

なぜこれが必要なのですか?-pまたは--absolute-namesスイッチを使用する必要があるのはどのような場合ですか?

Wale SoyinkaとMichael Jangによる私の本は、これについてはあまり言及していません。manページには手掛かりがなく、この警告に直接対処しているサイトを見つけることができません。


1
LinuxでのACLの黎明以来このようになっています。理由はわかりません。
Gilles「SO-邪悪なことをやめなさい」

私がそれを調べ、リンクを助けてくれてありがとう。現在のところ、プログラミングスキルは少し初歩的なものですが、Gaddisの本でC / C ++に取り組み始めたときのためにファイルを保存しました。
Seananigans 2013年

回答:


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 2013年

2
他のディストリビューション(FreeBSDなど)では、このスイッチは存在しません。RHEL aclパッケージのソースを表示する--absolute-namesと、出力文字列「#file:」のみを処理し、背後のロジックは処理していないようです。最初はセキュリティ機能かもしれないと思います。それにもかかわらず、スイッチはには存在しませんsetfacl。私の最後の仮定は、作成者がスイッチの使用が役に立たない可能性があるが、tar動作をシミュレートしたいということです。-pgetfacl
Ivan Chau

9
しかし、これは理由には答えません。デフォルトで先頭のスラッシュが削除されるのはなぜですか、それはどのように役立ちますか?
Segfault
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.