Prawa dostępu – nie takie straszne

Linux powstał na podobieństwo Unix’a, a Unix powstawał w czasach kiedy osobiste komputery praktycznie nie istniały. Z jednej maszyny korzystało wiele osób co wymusiło stworzenie systemu, w którym pliki i katalogi mają przypisanych właścicieli. Na dodatek istnieją różne grupy, które mają różne prawa dostępu co umożliwia kontrolę, bezpieczeństwo jak i sprawne zarządzanie systemem współdzielonym przez wielu użytkowników. Ta cecha systemów unixowych lub unixopodobnych (jak Linux) przetrwała do dzisiaj i stanowi jedną z podwalin bezpieczeństwa systemu. Chociaż w erze PCtów, laptopów i innych urządzeń mobilnych, zwykle jeden użytkownik korzysta z systemu, to jednak podłączenie do internetu, sieci wifi i LAN stwarzają różne zagrożenia, przez co system praw dostępu dalej jest bardzo ważną i ciągle aktualną cechą Linuxa, który pod tym względem prześciga Windows’a.

Czy rzeczywiście taka wiedza jest niezbędna? Tak. Jednak przeciętny użytkownik komputera, który nie będzie grzebał w systemie ani go naprawiał może się bez tego obejść. Jednak osoby, które używają systemu Linux intensywnie oraz modyfikują go do swoich potrzeb, prędzej czy później zetkną się z tym tematem. Na szczęście w wielu poradnikach na stronach znajdziemy gotowe komendy rozwiązujące różne problemy, co pozwala na stosowanie praw dostępu, bez dogłębnej znajomości tego systemu. Co więcej, wiele dystrybucji Linuxa oferuje rozmaite narzędzia graficzne (GUI) pozwalające na zarządzanie prawami dostępu i własności plików oraz katalogów. Niemniej jednak dość prawdopodobne jest, że w pewnym momencie trzeba będzie po prostu wiedzieć „czym to się je” żeby wykonać potrzebną akcję i naprawić problem czy to przez terminal czy z poziomu GUI.

Grupy dostępu

Każdy plik i katalog mają swojego właściciela, a każdy użytkownik może należeć też do jednej lub więcej grup, a każda z nich może mieć określone swoje własne prawa dostępu. W efekcie, jeśli należycie do jakiejś grupy, możecie uzyskać dodatkowe prawa dostępu przypisane danej grupie, których możecie nie mieć jako pojedynczy użytkownik. Wiele programów ze względu bezpieczeństwa tworzy swoje grupy i żeby skorzystać z bardziej zaawansowanych i szerszych możliwości, użytkownik musi być dodany przez administratora do tej grupy. Z tego względu w systemach Linux po instalacji jest dużo różnych grup, do których zwykły użytkownik nie należy. Dopiero w momencie potrzeby wyjścia poza typowe i zwyczajne używanie systemu możemy się natknąć na pewne bariery, które można pokonać przez przyłączenie się do jednej z wielu grup. Na co dzień zwykle nie trzeba się jednak nimi przejmować i nie trzeba wiedzieć, co która grupa robi. Dość często (ale nie zawsze) użytkownik jest dodawany do danej grupy podczas instalacji programów lub komponentów systemowych przez co dodawana funkcja działa z automatu po instalacji.

Są 3 nadrzędne grupy:

u – właściciel/użytkownik – prawa dostępu dotyczą tylko jednego, określonego użytkownika i nie wpływają na innych

g – grupy, które mogą skupiać wielu użytkowników, każda grupa posiada swoje określone prawa dostępu, często różne od praw pojedynczego użytkownika, żeby z nich skorzystać, użytkownika powinien być dodany do grupy przez administratora systemu

a lub o – wszyscy użytkownicy – wspólne prawa dostępu wpływające na wszystkich użytkowników komputera, w tym także na root’a.

 

wlasciwosci_pliku-wlasciciel

Widok uprawnień we właściwościach pliku w menedżerze plików Dolphin – widać, że plik lub katalog należy do root’a.

Konto użytkownika może być przydzielone do jednej z dwóch podstawowych kategorii: administrator i konto standardowe. Administratorzy mają największe możliwości zmieniać prawa dostępu, edytować, tworzyć, czytać i wykonywać pliki oraz katalogi w różnych miejscach systemu.

 

grupy-dostepu-w-linux-gui

Interfejs graficzny (GUI) do zarządzania grupami w Manjaro.

 

 

krusader-wlasciciel-prawa-dostepu

W menedżerze plików Krusader, jak w wielu innych programach tego typu, można ustawić widok, pokazujący do kogo należy plik lub katalog oraz jakie są prawa dostępu, o których szerzej poniżej. Na screenie powyżej wszystkie pliki i katalogi należą do root’a. Te z lokacji po prawej mają różne prawa dostępu dla grup i wszystkich użytkowników.

Są to przykłady paru interfejsów graficznych (GUI), które umożliwiają zobaczenie i czasem zmianę właściciela. Takich narzędzi w Linuxie jest sporo i działają one w różny sposób, co może utrudnić zrozumienie tematu.

Uniwersalnym sposobem we wszystkich systemach Linux jest widok w terminalu. Jest to też najbardziej polecana metoda, bo GUI może mieć różne oblicza i niedoskonałości, natomiast terminal zawsze i konkretnie pokaże to co potrzebujemy. Jest on też niezależny od dystrybucji i ułatwia zrozumienie tematu.

Komendą pozwalającą na zobaczenie praw dostępu oraz kto jest właścicielem jest:

ls -l

Jeśli chcemy zobaczyć też pliki ukryte:

ls -la

Komenda ta pokazuje pliki i katalogi w danym miejscu. Jeśli chcemy zobaczyć inną lokalizację, musimy ją zmienić za pomocą komendy cd lub wpisać bezpośrednią ścieżkę, np.:

konsola-prawa_dostepu_wlasciciel

Jak można zobaczyć na screenie powyżej, oprócz własności root root (właściciel grupa) jest też tajemniczy ciąg znaków drwxr-xr-x. Są to oznaczenia praw dostępu. Nie są one tak straszne na jak to wygląda ;). Jeszcze wrócimy do tego screenu.

Zmianę właściciela w terminalu przeprowadzamy komendą o strukturze:

chown właściciel:grupa plik

chown właścicie:grupa /ścieżka/do/pliku

chown właściel:grupa /ścieżka/do/katalogu/

Czyli np.

sudo chown root:root /usr/lib/cups/filter/

Komenda ta nadaje właściciela root i grupę root katalogowi filter po uprzednim uzyskaniu czasowych praw administratora (sudo).

Jeśli np. użytkownikiem był jankowalski i wykonał komendę:

sudo chown jakowalski:jankowalski /usr/lib/cups/filter/

katalog filter zostałby przyznany użytkownikowi jankowalski i grupie jankowalski, ale że jest to folder systemowy w root, nie mógłby on spełniać poprawnie swojej funkcji co w tym wypadku uszkodziłoby proces drukowania. Przywrócenie root’a jako właściciela z powrotem przywróci poprawne funkcjonowanie systemu. Jak widać, złe własności pliku mogą powodować poważne błędy, dlatego nie można ich lekceważyć. Zdarza się, że programy lub części systemu zainstalują się błędnymi prawami dostępu i dopiero po ich zmianie program lub opcja systemu zacznie działać poprawnie.

Zdarzają się też sytuacje, że użytkownik zmienia pewne ustawienia systemu za pomocą GUI, ale system ich nie zapamiętuje. To zazwyczaj jest znakiem, że użytkownik nie ma odpowiednich praw do plików, które odpowiadają za te opcje. Często wystarczy dodać użytkownika do grupy, która takie prawa posiada, żeby rozwiązać ten problem. Oczywiście ze względów bezpieczeństwa, żaden użytkownik nie powinien należeć do grupy root.

Jeśli chcesz zmienić tylko właściciela a nie grupę, w komendzie po prostu pomija się grupę, czyli struktura komendy wyglądałaby np. tak:

sudo chown jankowalski /ścieżka/do/pliku

Prawa dostępu

Są 3 podstawowe prawa dostępu:

r  – czytanie (ang. read) – daje możliwość czytania zawartości pliku

w – pisanie (ang. write) – daje możliwość zapisu oraz modyfikacji pliku lub katalogu

x – wykonywanie (ang. execute) – daje możliwość wykonania pliku (egzekucyjnego) lub dostępu do katalogu

Jak widać na zdjęciu powyżej, każdy katalog należy do root i jest oznaczony ciągiem drwxr-xr-x

Pierwszy znak oznacza czy jest to katalog (ang. directory), w przypadku plików będzie to znak minus , a przy dowiązaniach litera l. Są też inne oznaczenia, jednak występują rzadziej i są one potrzebne tylko bardziej zaawansowanym użytkownikom Linuxa.

Potem mamy trzykrotny ciąg znaków rwx.

  • Pierwsze rwx oznacza prawa dostępu właściciela
  • Drugie rwx prawa grupy
  • Trzecie rwx prawa wspólne dla wszystkich użytkowników.

Jeśli któraś grupa nie ma prawa, w to miejsce jest wpisany znak minus – .

Czyli jeszcze raz, ciąg znaków:

drwxr-xr-x

Oznacza d – katalog, pierwsze rwx – właściciel ma prawa czytania r, zapisu w i wykonania ,drugie  r-x grupa ma prawa odczytu, brak praw zapisu, ale prawa do wykonania pliku, trzecie r-x mówi, że wspólne prawa dla wszystkich użytkowników to prawo czytania i wykonania bez możliwości zapisu.

W przypadku np. ciągu:

-rwxr—–

– na początku oznacza plik, pierwsze rwx mówi, że właściciel ma prawo czytania, zapisu i wykonania, drugie r– oznacza, że grupa ma prawo tylko do odczytu, a trzecie — oznacza, że w są użytkownicy nie mający żadnych praw do tego pliku.

Prawa nadaje się komendą chmod o konstrukcji:

chmod a+rwx plik

a odejmuje

chmod a-rwx plik

gdzie pierwsza litera oznacza nadrzędną grupę, czyli a – właściciela, g – grupę, a lub o – wszystkich użytkowników.

Jeśli chcecie zabrać użytkownikowi prawa zapisu pliku a zostawić lub nadać prawa odczytu i egzekucji pliku używacie komendy jako administrator:

chmod u+r-w+x plik

Wtedy po podglądzie praw, pierwszy ciąg będzie wyglądał r-w.

Zamiast pliku może to być też folder. Jeśli nie jesteście w miejscu, gdzie dany plik występuje to albo do niego przejdźcie używając cd, albo wpiszcie ścieżkę.

Jeśli chcesz odebrać wszystkie prawa (odczytu, zapisu, wykonania) to wystarczy użyć:

chmod u-rwx

a na podglądzie praw dany plik lub katalog będzie miał oznaczenie w trzeciej serii rwx

Z kolei jeśli chcemy nadać użytkownikowi tylko prawa odczytu:

chmod u+r-wx

I tak dalej. Na tej samej zasadzie nadajemy prawa grupie lub wszystkim użytkownikom, tylko zamiast u, używamy g (grupa) lub a (wszyscy użytkownicy).

Należy pamiętać, że przy zmianie praw wszystkich użytkowników, zmiana zostanie zastosowana dosłownie wszędzie, czyli np. dla pliku1

chmod a+r-wx plik1

da na podglądzie praw wynik:

-r-xr-xr-x

Jeśli ta komenda byłaby zastosowana do katalogu to oznaczenie wyglądałoby:

dr-x-r-xr-x

Jeśli masz w systemie wielu użytkowników, ale chcesz nadać dla większości ograniczone prawa np. wyłącznie odczytu r, ale większe prawa dla grupy rw (wybrane osoby byłyby jej członkami) i pełne prawa dla właściciela rwx (np. root) to pierwsze trzeba użyć zmiany praw dla wszystkich z parametrem a lub o, a dopiero potem zastosować zmianę do grupy i właściciela, bo pierwsza komenda oddziałuje na wszystkich i zastosowanie jej na końcu da np. prawa wyłącznie do odczytu wszystkim, czyli też grupie i właścicielowi.

Czy ciąg drwxr-xr-x z przykładu powyżej już jest dla ciebie czytelny? I pamiętaj o komendzie pokazującej prawa i właściciela:

ls -la plik

ls -la /ścieżka/do/pliku

lub

ls -la /ścieżka/do/katalogu/

Żeby wyczuć jak to wszystko działa, poleca się stworzenie pliku w katalogu ~/ i zmienianie jego praw dostępu i sprawdzanie tych praw za pomocą ls -la

Prawa dostępu można zmieniać też metodą numeryczną. Najłatwiej skorzytsać z kalkulatora, który od razu podaje strukturę potrzebnej komendy:

http://permissions-calculator.org/

Są też zaawansowane prawa dostępu, ale to już wykracza znacznie poza obszar tego artykułu czy nawet strony.

Źródło:

https://www.linux.com/learn/understanding-linux-file-permissions

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *