Uprawnienia w systemie Linux
Większość (jak nie wszystkie) dystrybucje Linuxa bazują na 3 uprawnieniach: odczyt, zapis, wykonywanie.
Podmioty, które mogą mieć nadane uprawnienia są tylko 3. W Windowsie mogliśmy dodawać i zmieniać uprawnienia dla dowolnego użytkownika, czy grupy. W Linuxie jest to uproszczone.
3 podmioty, które mogą mieć nadane uprawnienia to:
| Nazwa podmiotu polska | Nazwa angielska | Skrót |
| Wszyscy | All | a |
| Właściciel | User | u |
| Grupa | Group | g |
| Pozostali | Others | o |
Podmiot wszyscy określa wszystkie 3 podmioty, właściciel określa właściciela pliku/katalogu, grupa określa grupę, która jest przypisana do pliku/katalogu, pozostali to wszyscy użytkownicy, którzy nie są właścicielami zasobu ani nie należą do grupy przypisanej do zasobu.
Skróty przydają nam się przy nadawaniu uprawnień za pomocą polecenia chmod.
Zmiana uprawnień za pomocą chmod
Polecenie chmod, jak wszystkie polecenia administracyjne, wymaga użycia sudo. Za pomocą tego polecenia możemy zmieniać uprawnienia do plików / katalogów na 2 sposoby:
- metoda symboliczna - przy użyciu skrótów dla podmiotów i uprawnień,
- metoda oktala - każda grupa jest reprezentowana przez jedną liczbę okatlną.
Metoda symboliczna
Załóżmy, że chcemy wszysktim zabrać wykonywanie dla katalogu "dokumenty", poza właścicielem.
sudo chmod a-x,u+x dokumenty
a-x- zabiera wszystkim uprawnienie do wykonywania,u+x- nadaje z powrotem uprawnienie do wykonywania dla właściciela katalogu
Załóżmy, że chcemy ustawić od nowa uprawnienia na pliku "notatka": wlaściciel - pełne uprawnienia, grupa - odczyt i zapis, pozostali - nic.
sudo chmod a-rwx,u+rwx,g+rw notatka
- a-rwx - zabieramy wszystkim wszystkie uprawnienia,
- u+rwx - nadajemy właścicielowi pliku z powrotem wszystkie uprawnienia,
- g+rw - nadajemy grupie uprawnienia odczyt i zapis.
Jeżeli występuje scenariusz, gdzie musimy nadpisać wszystkie ustawienia (wiemy że wystąpi a-rwx) to lepiej jest użyć metody oktalnej.
Metoda oktalna
Metoda oktalna działa w taki sposób, że uprawnienia dla wszystkich podmiotów zapisujemy 3 liczbami oktalnymi, dlaczego? Ponieważ uprawnienia dla danego podmiotu możemy przedstawić na 3 bitach.
| Właściciel | Grupa | Pozostali |
| rwx | r-x | r-x |
| 111 | 101 | 101 |
| 7 | 5 | 5 |
Dlatego uprawnienia u=rwx,g=rx,o=rx można zapisać jako 755.
Ten sposób zmiany uprawnień zawsze wymusza na wszystkich grupach zmianę. Nie możemy określić w taki sposób zmiany pojedynczego uprawnienia dla pojedynczego podmiotu, jak to miało miejsce w metodzie symbolicznej.
Załóżmy że chcemy aby tylko właściciel miał pełne uprawnienia do katalogu "dokumenty", a grupa i pozostali nic.
sudo chmod 700 dokumenty
7- właściciel ma rwx (111)0- grupa nie ma nic (000)0- pozostali nie mają nic (000)
Załóżmy że chcemy aby właściciel miał odczyt i zapis, grupa również odczyt i zapis a pozostali tylko odczyt dla pliku "dokumenty".
sudo chmod 664 dokumenty
6- właściciel ma rw- (110)6- grupa ma rw- (110)4- pozostali mają r-- (100)
Rekurencyjna zmiana uprawnień dla plików i podkatalogów
Jeżeli nadejdzie taka sytuacja, że musimy zmienić w jakimś katalogu uprawnienia dla wszystkich plików i podkatalogów to możemy użyć opcji -R, która wchodzi w podany katalog i zmienia w nim uprawnienia wszystkich zasobów a potem zmienia uprawnienia dla tego katalogu.
Składnia wygląda następująco
sudo chmod -R <uprawnienia> <katalog>
Opcja ta działa tylko na katalogach. Do plików nie używa się jej!
Podgląd obecnych uprawnień
Aby podejrzeć obecne uprawnienia dla plików i katalogów wraz z informacją o przypisanym właścicielu i grupie używamy polecenia ls -l.
szymon@hp-szymon:/test$ ls -l
total 4
d-wx--x--x 2 szymon szymon 4096 Apr 3 13:34 katalog
-rw-r--r-- 1 szymon szymon 0 Apr 3 14:14 plik1
-rw-r--r-- 1 szymon szymon 0 Apr 3 14:14 plik2
szymon@hp-szymon:/test$
Pierwsza kolumna pokazuje uprawnienia, np. dla katalog uprawnienia są takie:
- Właściciel:
-wx- zapis i wykonywanie, - Grupa:
--x- wykonywanie, - Pozostali:
--x- wykonywanie.
Właścicielem i grupą dla katalog jest szymon.