linux acl - ghdrako/doc_snipets GitHub Wiki
ACL (Access Control Lists) nie są dostępne we wszystkich dystrybucjach Linuksa w sposób domyślny. Wspierane przez ext3, ext4 XFS, Btrfs,ZFS. Niektóre starsze lub bardziej ograniczone systemy plików, np. FAT32 czy exFAT, nie obsługują ACL.
Nawet jeśli system plików obsługuje ACL, muszą one być włączone podczas montowania. Opcja acl powinna być ustawiona w pliku /etc/fstab.
Przykład:
/dev/sda1 / ext4 defaults,acl 0 1
Sprawdzenie wsparcia w systemie plików: Użyj narzędzia tune2fs dla systemu plików ext3/ext4:
tune2fs -l /dev/sda1 | grep "Default mount options"
Jeśli pojawi się acl, oznacza to, że ACL są domyślnie włączone.
Sprawdzenie opcji montowania: Wykorzystaj polecenie mount lub findmnt:
mount | grep acl
Jeśli system plików jest zamontowany z opcją acl, ACL są aktywne.
ACL działa jako rozszerzenie i może współpracować z klasycznym systemem ugo:
- Domyślne prawa ugo: Są nadal stosowane, jeśli brak jest zdefiniowanych ACL.
- Maska ACL: Określa maksymalne uprawnienia dla wszystkich wpisów ACL (oprócz właściciela i innych)
# Klasyczne prawa ugo:
ls -l plik.txt
-rw-r----- 1 user group 1234 plik.txt
# ACL umożliwia dodanie dodatkowego użytkownika:
setfacl -m u:other_user:rw plik.txt
getfacl plik.txt
# file: plik.txt
# owner: user
# group: group
user::rw-
user:other_user:rw-
group::r--
mask::rw-
other::---
setfacl - ustawiania ACL dla plików i katalogów
setfacl [opcje] ACL file
-m
oznacza modyfikację.-x
usuniecie-d
oznacza domyślne ACL (dotyczy plików/katalogów tworzonych w katalog).
-b
usuwa wszystkie ACL
setfacl -m u:user1:r plik.txt # Dodanie uprawnień do odczytu dla użytkownika user1 do pliku plik.txt
setfacl -x u:user1 plik.txt # Usunięcie uprawnień ACL dla użytkownika user1
setfacl -d -m u:user1:rw katalog # Ustawienie domyślnych ACL dla katalogu
setfacl -b plik.txt # Nadpisanie wszystkich istniejących ACL
getfacl - Służy do wyświetlania ACL dla plików i katalogów
getfacl [opcje] file
Podstawowe elementy wpisów ACL:
user::
– uprawnienia właściciela pliku.user:<nazwa_użytkownika>:<uprawnienia>
– uprawnienia konkretnego użytkownika.group::
– uprawnienia grupy właściciela.group:<nazwa_grupy>:<uprawnienia>
– uprawnienia konkretnej grupy.mask::
– maksymalne uprawnienia dla użytkowników i grup (z wyjątkiem właściciela i innych).other::
– uprawnienia dla innych.