
Linux: Wiersz poleceń – nadzorowanie uprawnień do plików i…
Nadawanie i odbieranie uprawnień do folderów i plików dla właściciela, grupy i reszty świata z poziomu wiersza poleceń / terminala systemu Linux.
Zmiana własności pliku / katalogu
chown – zmiana własności pliku / katalogu
chgrp – zmiana własności grupy pliku / katalogu
chmod – ustawienie uprawnień do pliku / katalogu dla właściciela, grupy i reszty świata
ls -l -rw-rw-r-- 1 student student 0 mar 18 16:16 plik sudo chown -c nauczyciel plik właściciel 'plik' zmieniony z student na nauczyciel ls -l -rw-rw-r-- 1 nauczyciel student 0 mar 18 16:16 plik
sudo chgrp nauczyciel plik ls -l -rw-rw-r-- 1 nauczyciel nauczyciel 0 mar 18 16:16 plik
sudo chmod 741 plik ls -l -rwxr----x 1 nauczyciel nauczyciel 0 mar 18 16:16 plik
Polecenie ls -l
Wypisanie informacji o plikach i katalogach, w tym informacji dotyczących uprawnień
ls -l drwxrwxr-x 2 student student 4096 mar 18 16:16 katalog -rwxr----x 1 nauczyciel nauczyciel 0 mar 18 16:16 plik
Pierwszy znak oznacza typ:
Znak | Znaczenie |
– | zwykły plik |
b | specjalny plik blokowy (ang. Block) |
c | specjalny plik znakowy (ang. Character) |
d | katalog (ang. Directory) |
l | małe (“L”) – dowiązanie symboliczne (ang. Symbolic link) |
p | nazwany potok |
s | gniazdo |
Następnie widzimy oznaczenia typu r, w, x oraz -.
Znak | Angielski | Plik | Katalog |
r | Read | prawo do odczytu | prawo do przeszukania zawartości |
w | Write | prawo do zapisu | prawo do zmiany zawartości |
x | eXecute | prawo do wykonywania | prawo do wejścia do katalogu |
– myślnik oznacza brak braw dostępu i występuje w miejscu odpowiedniej litery
a | b | c | |
– | rwx | r-x | — |
a – prawa właściciela pliku
b – prawa grupy do której należy właściciel
c – prawa reszty użytkowników systemu
Jak widzimy aby kontrolować dostęp do plików, Linux dzieli użytkowników systemu na trzy kategorie:
- właścicieli plików
- członków grupy, do której należy właściciel grupy
- innych użytkowników systemu
Modyfikacja praw dostępu – sposób tradycyjny
Polecenie chmod umożliwia właścicielowi pliku lub administratorowi systemu zmienić uprawnienia pliku. Jego forma jest następująca:
chmod u-w plik1
Ciąg znaków u-w symbolizuje zmianę praw pliku , na pierwszym miejscu (w naszym przykładzie „u”) określa się kto ma prawo korzystać z pliku, dysponujemy następującymi symbolami:
u – symbolizuje właściciela pliku
g – symbolizuje grupę, do której plik jest przypisany
o – reszta użytkowników systemu
a – symbol ten oznacza wszystkich u+g+o
Na drugim miejscu umieszcza się symbole zmiany praw:
+ dorzucamy prawo
– likwidujemy prawo
= przypisujemy prawo
Na trzecim miejscu umieszczamy symbole, czego dotyczy prawo:
r – prawo czytania pliku
w – prawo modyfikacji pliku
x – prawo jego egzekucji
Przykłady:
Likwidujemy prawo modyfikacji pliku dla jego właściciela:
chmod u-w plik1
Dorzucamy prawo modyfikacji dla grupy, do której jest przypisany plik:
chmod g+w plik1
Modyfikacja praw dostępu – sposób cyfrowy
Prawo do pliku ustalamy w sposób cyfrowy, np:
chmod 740 plik
Trzy cyfry znajdujące się po poleceniu chmod określają prawa dostępu dla 3 już Ci znanych podmiotów, pierwszy to właściciel pliku (u), drugi grupa do której przynależy plik (g), trzeci pozostali użytkownicy (o).
Można więc symbolicznie zapisać: chmod ugo plik
Pozostaje jeszcze kwestia, co oznaczają poszczególne cyfry. Są one binarnym odwzorowaniem praw dostępu, gdzie poszczególne pozycje zapisu binarnego cyfry odpowiadają literce prawa odczytu, zapisu i wykonania, czyli r, w oraz x.
W naszym przykładzie pierwszą cyfrą jest cyfra 7. Jak ją zapiszemy binarnie ?
Oczywiście jako 111 (2). (Więcej o liczbach binarnych w temacie o systemach liczbowych).
Teraz każda 1 mówi nam o tym, iż mamy przypisać określone prawo (r, w oraz x). Zapis 111 oznacza nie mniej, nie więcej, jak pełne prawo, więc rwx.
Kolejna cyfra to 4, w zapisie binarnym 100(2).
Mamy tu 1 jedynie w miejscu litery r, więc prawo to zapiszemy jako r– (dwa myślniki w miejscach nie przyznanych praw).
No i jeszcze 0, w zapisie binarnym 000(2), czyli — (brak praw).
Reasumując właściciel ma pełne prawa, grupa prawo do odczytu, a pozostali nie maja żadnych praw do pliku.
Polecenie ls -l dla takiego pliku dałoby rezultat:
– rwx r– —
Inne przykłady:
400 – prawo czytania dla właściciela pliku
200 – prawo pisania dla właściciela pliku
100 – prawo egzekwowania pliku przypisane jego właścicielowi
040 – prawo czytania dla grupy użytkowników
020 – prawo pisania dla grupy użytkowników
010 – prawo egzekwowania pliku przypisane grupie użytkowników
004 – prawo czytania przypisane innym użytkownikom
002 – prawo pisania przypisane innym użytkownikom
001 – prawo egzekwowania przypisane innym użytkownikom
Rozkład cyfr:
Znaki | Cyfra | Znaczenie |
— | 0 | brak praw |
–x | 1 | tylko wykonywanie |
-w- | 2 | tylko zapis |
-wx | 3 | zapis i wykonywanie |
r– | 4 | tylko odczyt |
r-x | 5 | odczyt i wykonanie |
rw- | 6 | pokazuje informacje na temat komendy |
rwx | 7 | zapis, odczyt i wykonywanie |
Polecenie chmod pozwala zmienić prawa przy pomocy wartości wyrażonych w kodzie ósemkowym, np. jak nadać wszystkie prawa właścicielowi pliku plikb, prawa do czytania i egzekwowania tego pliku grupie, do której należy jego właściciel i prawo do czytania pliku innym użytkownikom systemu ?
chmod 754 plikb
Ćwiczenia
Zezwolenia ustawiamy jednym poleceniem.
- W katalogu domowym załóż katalog katalog1. Ustaw mu cyfrowo zezwolenia
drwxrw-r--
. - Odbierz innym możliwość odczytu (system literowy).
- Dodaj grupie możliwość wykonywania (system literowy).
- Przypisz wszystkim możliwość odczytu, zapisu oraz wykonywania (system literowy).
- Odbierz grupie i innym możliwość zapisu (system literowy).
- Nadaj numerycznie zezwolenia
dr-xrw-r--
. - Przypisz grupie i innym odczyt i wykonywanie (system literowy).
- Załóż w katalogu katalog1 plik tekstowy plik1.txt. Ustaw mu numerycznie zezwolenia
-rw-r--r--
. - Numerycznie ustaw dla katalogu katalog1 i całej jego zawartości zezwolenia odczytu i wykonywania.
- Załóż katalog katalog2. Nie korzystając z polecenia chmod przypisz mu uprawnienia
drwx------
.