Prawa dostępu do plików

Standardowe prawa dostępu do plików i katalogów w Linux’ie każdy zna. Wyświetlamy je poleceniem “ls -l”, ustawiamy poleceniem “chmod” podając albo całą maskę, albo dodając i odejmując poszczególne przywileje. Jednak jak wiele z Was słyszało o, i umie używać ACL?

ACL, czyli Advanced Control List, to rozszerzone prawa dostępu do plików i katalogów. To co wprowadzają dodatkowo względem standardowych praw, to między innymi to że pozwalają ustawić określone prawa dla poszczególnych użytkowników, a nie tylko właściciela, grup i pozostałych.

Zanim zaczniemy zabawę z prawami, przede wszystkim należy:

  • sprawdzić czy nasza partycja wspiera ACL; poleceniem “mount” sprawdzamy z jakimi opcjami została zamontowana i jeśli wśród nich niema opcji “acl” to przemontowujemy ją (np. mount -o remount,acl /home) i dodajemy odpowiednią flagę do /etc/fstab, żeby nie musieć tego robić po każdym uruchomieniu komputera
  • zaopatrzyć się w narzędzia do obsługi zaawansowanych praw dostępu; paczka z reguły nazywa się “acl”

Po tym, możemy przejść do zabawy:
Stwórzmy przykładowy plik o nazwie test. “ls -l test” powie nam jakie są standardowe prawa dostępu, ale nic więcej, bo i na razie nic ponad to nie ma. Gdyby było, to “ls -l test” wyświetli plusa żeby poinformować o dodatkowych parametrach:

-rw-rw-r--+ 1 piotrek piotrek 0 May 17 16:59 test

Do wyświetlania uprawnień ACL służy komenda “getfacl”. Wynik tego polecenia dla standardowych plików wygląda np. tak:

piotrek@hurricane ~ $ getfacl test
# file: test
# owner: piotrek
# group: piotrek
user::rw-
group::rw-
other::r--

Tutaj chyba wszystko jest jasne. Dodajmy więc jakieś “niestandardowe” prawa:

setfacl -m user:nobody:rw test

Powyższe polecenie dodaje do naszego pliku dostęp dla user’a “nobody” z prawami do odczytu i zapisu. W tej chwili wygląda to tak:

piotrek@hurricane ~ $ getfacl test
# file: test
# owner: piotrek
# group: piotrek
user::rw-
user:nobody:rw-
group::rw-
mask::rw-
other::r--

Po zmianie praw dodatkowo pojawił się wpis zatytułowany “mask”. Maska jest ponad uprawnieniami użytkowników i grupy, i definiuje jakie są efektywne prawa dla tych kategorii. Jeśli zmodyfikujemy maskę na bardziej restrykcyjną niż prawa danej kategorii zostaniemy o tym poinformowanie przez program:

piotrek@hurricane ~ $ setfacl -m mask:r test
piotrek@hurricane ~ $ getfacl test
# file: test
# owner: piotrek
# group: piotrek
user::rw-
user:nobody:rw-                 #effective:r--
group::rw-                      #effective:r--
mask::r--
other::r--

Żeby odebrać komuś specyficzne prawa i przywrócić go do stanu w którym podlega zwykłym prawom wykonujemy:

piotrek@hurricane ~ $ setfacl -x nobody test
piotrek@hurricane ~ $ getfacl test
# file: test
# owner: piotrek
# group: piotrek
user::rw-
group::rw-
mask::rw-
other::r--

Jak można zauważyć poza usunięciem definicji dla użytkownika “nobody” zmieniła się też maska. Dlatego właśnie maskę najlepiej jest ustawiać na końcu.

Ode mnie to tyle. Więcej oczywiście w man’ach powyższych aplikacji, fragmencie z SUSE Linux Administration Guide i obszerny opis tutaj.

  • Trackback are closed
  • Comments (1)
  1. czemu nie:)

Comment are closed.