Woher weiß ich, dass ACLs in meinem Dateisystem unterstützt werden?

11

Reicht es aus getfacl, wenn kein Fehler angezeigt wird, oder muss ich an einer anderen Stelle überprüfen, ob ACLs von den Dateisystemen unterstützt werden oder nicht?

0xC0000022L
quelle

Antworten:

6

Wenn Sie über ein gemountetes Dateisystem sprechen, kenne ich keine intrinsische Methode, um festzustellen, ob ACL möglich sind. Beachten Sie, dass "ACL unterstützt wird?" ist keine sehr genaue Frage, da es verschiedene Arten von ACLs gibt (Solaris / Linux / schließlich nicht POSIX, NFSv4, OSX,…). Beachten Sie, dass dies getfaclals Test nutzlos ist, da Unix-Berechtigungen gerne gemeldet werden, wenn dies alles ist: Sie müssen versuchen , eine zu testende ACL festzulegen.

Im gemounteten Dateisystem können Sie überprüfen, ob aclin den Mount-Optionen (die Sie in finden /proc/mount) vorhanden ist. Beachten Sie, dass dies nicht ausreicht: Sie müssen auch die Kernel-Version und den Dateisystemtyp berücksichtigen. Bei einigen Dateisystemtypen ist unabhängig von den Mount-Optionen immer eine ACL verfügbar. Dies ist bei tmpfs, xfs und zfs der Fall. Einige Dateisysteme verfügen über eine ACL, sofern dies nicht ausdrücklich ausgeschlossen ist. Dies ist für ext4 seit Kernel 2.6.39 der Fall .

Gilles 'SO - hör auf böse zu sein'
quelle
Was den getfaclTest betrifft, hast du recht. Außer wenn ich eine nicht standardmäßige ACL finden konnte (durch Unterdrücken von standardmäßigen und Headern). Das Überprüfen /proc/mountscheint in Fällen, in denen die aclOption eine Standardoption ist, die nicht aus dem Befehl mount stammt , nicht ausreichend zu sein fstab.
0xC0000022L
Ich habe festgestellt, dass beim Ausführen von ZFS unter Linux acltype=posixacldas angezeigt /proc/mountswird posixacl, aber in einem anderen System mit nur ext4 ist nichts drin /proc/mounts, sondern acleine Standard-Mount-Option für ext4.
CMCDragonkai
4

Um zu wissen, ob ACL verfügbar ist, können Sie:

  1. Überprüfen Sie die aktuelle Kernel-Version und das aktuelle Dateisystem:
    uname -r
    df -Toder In der mount | grep root

    letzten Distribution ist standardmäßig die ACL-Mount-Option enthalten (seit Kernel 2.6). Es ist daher nicht zwingend erforderlich, es in / etc / fstab (oder ähnlichem) neu zu definieren. Nicht erschöpfende Liste der betroffenen Dateisysteme: ext3, ext4, tmpfs, xfs und zfs.

    Wenn Sie ein älteres Setup haben, müssen Sie möglicherweise den Kernel neu kompilieren und / oder acl hinzufügen /etc/fstab.
    fstab Beispiel: /dev/root / ext4 acl,errors=remount-ro 0 1

  2. Suchen Sie nach vorhandenen ACL-Einstellungen (der "übliche" Konfigurationsort ist on / boot):
    sudo mount | grep -i acl #optionnal
    cat /boot/config* | grep _ACL

    Je nach System finden Sie die Einstellungen /procstattdessen. Hier ist eine Möglichkeit, die Konfiguration aus dem .gz-Archiv zu extrahieren und dann nach ACL-Einstellungen zu suchen:
    cat /proc/config.gz | gunzip > running.config && grep -i 'acl' running.config
    cat running.config | grep _ACL

    Sie sollten Folgendes sehen:
    CONFIG_EXT3_FS_POSIX_ACL=y
    CONFIG_EXT2_FS_POSIX_ACL=y
    CONFIG_XFS_POSIX_ACL=y

    Für das Dateisystem können Sie versuchen, weitere Informationen zu erhalten mit:
    sudo tune2fs -l /xxx/xxx| grep 'Default mount options:'
    (Ersetzen Sie xxx / xxx durch Ihr Dateisystem)

-
Hilfreiche Informationen finden Sie unter:
- superuser.com ,
- serverfault ,
- bencane.com ,
- wiki.archlinux.org

xaa
quelle
1

acl sollte standardmäßig aktiviert sein, wenn Sie ext2 / 3/4 oder btrfs verwenden.

Überprüfen Sie mit:

tune2fs -l /dev/sdXY | grep "Default mount options:"

Wenn es nicht in der Ausgabe enthalten ist, führen Sie Folgendes aus:

tune2fs -o acl /dev/sdXY

Cthulhu Tentakel
quelle
Der Befehl funktioniert jedoch nur für ext2 / 3/4. Und es erfordert root, während des Laufens getfaclnicht. Gibt es nicht eine bessere Möglichkeit, nach Support zu suchen?
0xC0000022L
grep acl /etc/mke2fs.confwerde es auch tun.
Cthulhu Tentacles
das ist auch spezifisch für ext2 / 3/4 und bietet keine btrfs. Vielen Dank für Ihre Zeit, aber ich werde mich um eine allgemeinere Lösung des Problems bemühen.
0xC0000022L