Warum entfernt getfacl die führenden / aus absoluten Pfadnamen?

10

Ich bin gerade dabei, etwas über ACLs für CentOS / Red Hat 6 zu lernen. Wenn ich getfaclmit einem absoluten Pfad laufe , komme ich unter die Ausgabe:

getfacl: Entfernen des führenden '/' aus absoluten Pfadnamen

Warum muss es das tun? In welchen Situationen müssten Sie den Schalter -poder verwenden --absolute-names?

In meinen Büchern von Wale Soyinka und Michael Jang wird dies nicht einmal vorübergehend erwähnt, ich sehe keine Hinweise auf der Manpage und ich kann anscheinend keine Websites finden, die diese Warnung direkt ansprechen.

Seananigans
quelle
1
Es ist seit den Anfängen von ACL unter Linux so . Ich weiß nicht warum.
Gilles 'SO - hör auf böse zu sein'
Vielen Dank, dass Sie mir geholfen haben, mich damit zu befassen, und für den Link. Meine Programmierkenntnisse sind im Moment etwas rudimentär, aber ich habe die Datei für den Zeitpunkt gespeichert, an dem ich anfange, C / C ++ mit meinem Gaddis-Buch in Angriff zu nehmen.
Seananigans

Antworten:

6

Aus der Manpage von getfacl:

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

Eine Warnmeldung wird ausgegeben, wenn Sie den absoluten Pfad ohne Verwendung des -pSchalters angeben.

Die Ausgaben sind unterschiedlich, wenn dem getfaclBefehl ein absoluter Pfad zugewiesen wird .

Ohne -pSchalter:

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

Beachten Sie, dass der führende Schrägstrich im Dateipfad nur -pangezeigt wird, wenn der Schalter verwendet wird.

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

-p Dies ist nützlich, um den führenden Schrägstrich beizubehalten, wenn Sie die Ausgabe zur weiteren Verarbeitung weitergeleitet haben.

Die Ausgaben sind gleich, wenn der relative Pfad zum getfaclBefehl angegeben wird.

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

Keine Änderungen:

$ getfacl -p bar
# file: bar
[Output truncated...]
Ivan Chau
quelle
Verzeihen Sie mir, da ich relativ neu in Linux bin, aber dies scheint ein ziemlich überflüssiger Wechsel zu sein, denn wenn Sie die Ausgabe an ein anderes Programm weiterleiten würden, müssten Sie den Stream trotzdem bearbeiten, um diesen Abschnitt der Ausgabe im ersten zu erfassen Ort, bin ich richtig? Was wäre ein Beispielfall, in dem es nützlich wäre, den führenden Schrägstrich zu entfernen? Da es sich um einen absoluten Pfad handelt, erscheint es etwas albern, ihn überhaupt zu entfernen.
Seananigans
2
In anderen Distributionen (zB FreeBSD) existiert dieser Schalter nicht. Wenn Sie sich die Quelle des RHEL acl-Pakets ansehen, scheint es, dass Sie sich --absolute-namesnur mit der Ausgabezeichenfolge "# file:" befassen, nicht aber mit der Logik dahinter. Zuerst denke ich, dass es ein Sicherheitsmerkmal sein kann. Trotzdem existiert der Schalter in nicht setfacl. Meine letzte Annahme ist, dass der Autor das tarVerhalten simulieren möchte, obwohl die -pVerwendung des Schalters getfaclmöglicherweise nutzlos ist.
Ivan Chau
9
Dies beantwortet jedoch nicht das Warum. Warum werden führende Schrägstriche standardmäßig entfernt, wie hilft das jemals?
Segfault