3.3. Prawa dostępu
Poprzedni | Rozdział 3. Podstawy Uniksa | Następny

## 3.3. Prawa dostępu

FreeBSD, będąc bezpośrednim potomkiem systemu UNIX® BSD, oparte jest na kilku kluczowych założeniach Uniksa. Najbardziej widocznym z nich jest fakt, że FreeBSD jest systemem wieloużytkownikowym — potrafi jednocześnie obsługiwać wielu użytkowników pracujących niezależnie od siebie. System jest odpowiedzialny za właściwe zarządzanie odwołaniami do sprzętu, pamięci i czasu procesora, po równo dla każdego z użytkowników.

Ze względu na obsługę wielu użytkowników, zasoby, którymi zarządza system, mają przypisane prawa dostępu określające, kto może czytać, zapisywać i uruchamiać dany zasób. Prawa dostępu przechowywane są w postaci dwóch oktetów podzielonych na trzy części, z których pierwsza odnosi sie do właściciela pliku, druga do grupy posiadającej plik, a trzecia do innych użytkowników. W postaci numerycznej zapisuje się to następująco:

Wartość | Uprawnienia | Symbol
--- | --- | ---
0 | Odczyt: nie, zapis: nie, wykonywanie: nie | `---`
1 | Odczyt: nie, zapis: nie, wykonywanie: tak | `--x`
2 | Odczyt: nie, zapis: tak, wykonywanie: nie | `-w-`
3 | Odczyt: nie, zapis: tak, wykonywanie: tak | `-wx`
4 | Odczyt: tak, zapis: nie, wykonywanie: nie | `r--`
5 | Odczyt: tak, zapis: nie, wykonywanie: tak | `r-x`
6 | Odczyt: tak, zapis: tak, wykonywanie: nie | `rw-`
7 | Odczyt: tak, zapis: tak, wykonywanie: tak | `rwx`

Korzystając z polecenia ls(1) możemy posłużyć się opcją `-l`, by zawartość katalogu została pokazana w formie szczegółowej, z uwzględnieniem kolumny zawierającej informację o prawach dostępu do pliku dla jego właściciela, grupy, oraz wszystkich innych. Przykładowy wynik polecenia `ls -l`:

`%` `ls -l` total 530 -rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile -rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt ...

Pierwsza kolumna listy plików po wykonaniu polecenia `ls -l` ma następującą postać:

-rw-r--r--

Pierwszy znak (od lewej) określa, czy plik jest zwyczajnym plikiem, katalogiem, urządzeniem znakowym, gniazdem, czy jakimkolwiek innym urządzeniem pseudo-plikowym. Widoczny w przykładzie znak `-` oznacza zwykły plik. Kolejne trzy znaki, w przykładzie są to `rw-`, reprezentują prawa dostępu, którymi dysponuje właściciel pliku. Następne trzy znaki `r--`, określają prawa dostępu grupy, do której należy plik. Ostatnia trójka `r--`, oznacza prawa dostępu dla innych. Minus oznacza brak jednego z praw dostępu. Plik przedstawiony w przykładzie może być więc odczytywany i zapisywany przez swojego właściciela, oraz jedynie odczytywany przez grupę i innych. Zgodnie z powyższą tabelą, prawa dostępu do tego pliku mają wartość `644`, przy czym każda cyfra reprezentuje trzy części uprawnień.

W porządku, ale w jaki sposób system kontroluje dostęp do urządzeń? Zasadniczo większość urządzeń jest traktowana przez FreeBSD jak pliki, które mogą być otwierane, odczytywane i zapisywane podobnie jak wszystkie inne pliki. Specjalne pliki urządzeń przechowywane są w katalogu `/dev`.

Również katalogi traktowane są jak pliki — też są im przypisywane prawa odczytu, zapisu i wykonania. Bit wykonania katalogu ma nieco inne znaczenie niż w przypadku pliku. Posiadanie prawa wykonania katalogu oznacza, że można do niego wejść, czyli posłużyć się poleceniem „cd”. Ponadto umożliwia to dostęp do zawartych w katalogu plików o znanych nazwach (oczywiście obowiązują także indywidualne prawa dostępu do każdego z plików).

W szczególności, wyświetlenie listy plików katalogu wymaga posiadania prawa do jego odczytu, natomiast do usunięcia pliku o znanej nazwie potrzebne będą prawa do zapisu i wykonania dla katalogu, w którym ów plik się znajduje.

Jest jeszcze kilka innych bitów uprawnień, jednak są one stosowane w specjalnych przypadkach, np. do włączenia atrybutu SUID, lub „lepkiego” bitu dla katlogu. Więcej informacji o prawach dostępu i o ich przydzielaniu można znaleźć w dokumentacji systemowej polecenia chmod(1).

### 3.3.1. Uprawnienia symboliczne

Napisał Tom Rhodes.
Tłumaczył Cezary Morga.

Uprawnienia symboliczne, określane również jako wyrażenia symboliczne, przy określaniu praw dostępu do plików lub katalogów wykorzystują litery w miejsce wartości liczbowych. Wyrażenia symboliczne wykorzystują składnię: (kto) (akcja) (uprawnienia), przy czym dostępne są następujące wartości:

Opcja | Litera | Znaczenie
--- | --- | ---
(kto) | u | Użytkownik (właściciel)
(kto) | g | Grupa
(kto) | o | Inni
(kto) | a | Wszyscy („świat”)
(akcja) | + | Dodanie uprawnień
(akcja) | - | Usunięcie uprawnień
(akcja) | = | Ustawienie uprawnień
(uprawnienia) | r | Odczyt
(uprawnienia) | w | Zapis
(uprawnienia) | x | Wykonywanie
(uprawnienia) | t | Bit „lepki”
(uprawnienia) | s | Ustawienie UID lub GID

Do ustawienia tych wartości, podobnie jak w przypadku wartości liczbowych, wykorzystywane jest polecenie chmod(1). Przykładowo, by zablokować dostęp innych użytkowników do `PLIKU` należy wpisać:

`%` `chmod go= PLIK`

Gdy musimy wykonać więcej niż jedną zmianę uprawnień parametry należy oddzielić przecinkami. Na przykład, poniższe polecenie usunie prawa zapisu do `PLIKU` grupie i innym. Następnie doda wszystkim prawo wykonywania:

`%` `chmod go-w,a+x `PLIK``

### 3.3.2. Flagi plików we FreeBSD

Napisał Tom Rhodes.
Tłumaczył Cezary Morga.

Dodatkowo, oprócz opisanych wyżej praw dostępu, FreeBSD wykorzystuje również „flagi plików”. Flagi te umożliwiają wprowadzenie dodatkowego poziomu ochrony i kontroli plików. Nie dotyczą natomiast katalogów.

Dzięki zwiększonemu poziomowi kontroli plików system może zagwarantować, że w niektórych sytuacjach nawet użytkownik `root` nie będzie mógł usunąć bądź zmodyfikować plików.

Zmiany flag plików dokonuje się poleceniem chflags(1). Przykładowo, by plikowi `plik1` nadać flagę nieusuwalności należy wydać poniższe polecenie:

`#` `chflags sunlink `plik1``

Natomiast, by usunąć flagę nieusuwalności wystarczy wprowadzić takie samo polecenie dodając „no” przed `sunlink`:

`#` `chflags nosunlink `plik1``

By wyświetlić flagi danego pliku wystarczy wpisać polecenie ls(1) z parametrem `-lo`:

`#` `ls -lo `plik1``

Wynik powinien być zbliżony do poniższego:

-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 plik1

Niektóre z flag mogą być dodawane i usuwane jedynie przez użytkownika `root`, podczas gdy inne mogą być ustawiane również przez właściciela pliku. Zaleca się aby administratorzy przeczytali strony podręcznika systemowego chflags(1) oraz chflags(2).

Poprzedni | Początek rozdziału | Następny
3.2. Konsole wirtualne i terminale | Spis treści | 3.4. Struktura katalogów

All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.