Skąd mam wiedzieć, że listy ACL są obsługiwane w moim systemie plików?

14

Czy wystarczy nie widzieć getfaclbłędu, czy muszę sprawdzić inne miejsce, aby sprawdzić, czy listy ACL są obsługiwane przez systemy plików?

0xC0000022L
źródło

Odpowiedzi:

8

Jeśli mówisz o podłączonym systemie plików, nie znam żadnego wewnętrznego sposobu, aby stwierdzić, czy ACL jest możliwe. Zauważ, że „czy ACL jest obsługiwane?” nie jest bardzo precyzyjnym pytaniem, ponieważ istnieje kilka rodzajów list ACL (Solaris / Linux / not-POSIX-after-all, NFSv4, OSX,…). Zauważ, że getfacljest to bezużyteczne jako test, ponieważ chętnie zgłosi uprawnienia uniksowe, jeśli to wszystko: musisz spróbować ustawić ACL do testowania.

Nadal w zamontowanym systemie plików możesz sprawdzić obecność aclopcji montowania (które możesz znaleźć /proc/mount). Zauważ, że to nie wystarczy: musisz również wziąć pod uwagę wersję jądra i typ systemu plików. Niektóre typy systemów plików zawsze mają dostępną listę ACL, niezależnie od opcji montowania; dzieje się tak w przypadku tmpfs, xfs i zfs. Niektóre systemy plików mają ACL, chyba że wyraźnie wykluczone; tak jest w przypadku ext4 od jądra 2.6.39 .

Gilles „SO- przestań być zły”
źródło
co do getfacltestu masz rację. Z wyjątkiem sytuacji, gdy udało mi się znaleźć domyślną listę ACL (pomijając domyślne i nagłówek). Sprawdzanie /proc/mountnie wydaje się wystarczające w przypadkach, gdy aclopcja jest opcją domyślną, która nie pochodzi z polecenia montowania fstab, a jednak.
0xC0000022L
Zauważyłem podczas uruchamiania ZFS w systemie Linux, z acltype=posixacl, /proc/mountspokaże posixacl, ale w innym systemie z samym ext4 nic nie ma w środku /proc/mounts, ale aclbyła domyślną opcją montowania dla ext4.
CMCDragonkai
4

Aby dowiedzieć się, czy ACL jest dostępna, możesz:

  1. Sprawdź bieżącą wersję jądra i system plików:
    uname -r
    df -Tlub mount | grep root

    Ostatnie dystrybucje mają domyślnie dołączoną opcję montowania ACL (od jądra 2.6). Dlatego nie jest obowiązkowe przedefiniowanie go w / etc / fstab (lub podobnym). Niewyczerpująca lista danych systemów plików: ext3, ext4, tmpfs, xfs i zfs.

    Jeśli masz starszą konfigurację, być może będziesz musiał ponownie skompilować jądro i / lub dodać acl /etc/fstab.
    przykład fstab: /dev/root / ext4 acl,errors=remount-ro 0 1

  2. Poszukaj istniejących ustawień ACL („zwykłe” miejsce konfiguracji to on / boot):
    sudo mount | grep -i acl #optionnal
    cat /boot/config* | grep _ACL

    W zależności od systemu można znaleźć ustawienia /proc. Oto sposób na wyodrębnienie konfiguracji z archiwum .gz, a następnie wyszukanie ustawień acl:
    cat /proc/config.gz | gunzip > running.config && grep -i 'acl' running.config
    cat running.config | grep _ACL

    Powinieneś zobaczyć coś takiego:
    CONFIG_EXT3_FS_POSIX_ACL=y
    CONFIG_EXT2_FS_POSIX_ACL=y
    CONFIG_XFS_POSIX_ACL=y

    W przypadku systemu plików możesz spróbować uzyskać więcej informacji za pomocą:
    sudo tune2fs -l /xxx/xxx| grep 'Default mount options:'
    (zamień xxx / xxx na swój system plików)

-
Przydatne informacje można znaleźć na:
- superuser.com ,
- serverfault ,
- bencane.com ,
- wiki.archlinux.org

xaa
źródło
1

acl powinien być włączony domyślnie, jeśli używasz ext2 / 3/4 lub btrfs.

Sprawdź z:

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

Jeśli nie ma go w danych wyjściowych, wykonaj:

tune2fs -o acl /dev/sdXY

Macki Cthulhu
źródło
grep acl /etc/mke2fs.confteż to zrobi.
Cthulhu Tentacles