Linux uprawnienia



Temat uprawnień w systemie Linux niejednego początkującego przyprawił już o siwiznę, dlatego też postaram się omówić ten temat jak najbardziej zrozumiale i czytelnie nawet dla laików.

Właściciel, o co tutaj chodzi?

Myślę, że każdy z was kojarzy coś takiego jak atrybuty plików z Windowsa, plik mógł tam mieć atrybut np. ukryty, tylko do odczytu, archiwalny albo np. systemowy, dzięki czemu niektóre ważniejsze pliki były chronione przed niepożądanym działaniem użytkownika, który nie mógł omyłkowo skasować pliku systemowego. Podobnie sprawa ma się w Linuxie, tylko oczywiście funkcjonalność ta jest dużo bardziej rozbudowana.

W Linuxie dochodzi dodatkowo kwestia właściciela, otóż każdy katalog czy też plik może mieć tylko jednego właściciela, tj. tego użytkownika, który dany katalog lub plik stworzył. Osoba taka ma zazwyczaj pełne uprawnienia, dzięki czemu może np. dowolnie modyfikować dany plik lub go np. skasować. Właściciel może oczywiście zostać zmieniony, jednak potrzebne do tego są pełne uprawnienia. Aby to wszystko wyjaśnić na przykładzie, zobaczmy jak funkcjonuje świeża instalacja systemu Linux.

Jeżeli przejdziemy do katalogu głównego naszego systemu (odpowiednik dysku c: w windowsie), to zobaczymy kilkanaście katalogów systemowych i kilka plików. Właścicielem prawie wszystkich tych elementów jest root, czyli główny admin systemu. My domyślnie jesteśmy zalogowani jako zwykły użytkownik, dlatego możemy co najwyżej przeglądać te foldery (niektórych nie można nawet otworzyć), ale nie jesteśmy uprawnieni do ich kasowania czy modyfikowania. Dlatego też jedynym miejscem, w jakim zapisujemy wszystkie swoje pliki jest /home/nazwa_użytkownika, w moim przypadku jest to /home/qlwik. Właścicielem tego folderu jest właśnie zalogowany użytkownik, dlatego można sobie w nim robić co się chce.


Uprawnienia podczas instalacji programów

Sprawa się komplikuje, gdy chcemy zrobić coś więcej niż tylko zapisać kolejny plik na pulpicie, np. gdy chcemy zainstalować jakiś program. Większość programów instaluje się w systemowym folderze /usr, którego właścicielem jest root, w takim wypadku aby cokolwiek zainstalować, musimy najpierw zalogować się jako admin (su) Dodatkowo należy ustawić uprawnienia na 7, aby można było ów plik wykonać (patrz niżej). Co ciekawe logowanie jako admin wymagane jest tylko raz podczas instalacji, ponieważ wszystkie pliki które tworzy później sam program są zapisywane w naszym folderze domowym /home/użytkownik.

Podobnie sytuacja się ma podczas konfigurowania jakiejś usługi, otóż większość plików konfiguracyjnych znajduje się w folderze /etc. Zgadnijcie kto jest jego właścicielem :) Podpowiem, że root, dlatego też, aby cokolwiek można była tam zmodyfikować, należy się w konsoli zalogować jako admin.

Właściciela danego folderu lub pliku można zmienić poleceniem chown, jednakże odradzałbym zmienianie właściciela w którymkolwiek z folderów systemowych. Jedynym przypadkiem jaki znam, kiedy było to wskazane to folder dokumentów html apache, ale o tym piszę w osobnym artykule.

Przykładowe polecenie zmieniające właściciela pliku:

chown qlwik:qlwik plik

Odczyt, zapis, wykonywanie

Po zaznajomieniu się już z kwestią właściciela poszczególnych elementów, przyszła pora na uprawnienia właściwe. Chodzi głównie o to, czy dany plik może być tylko do odczytu, zapisywalny, czy też wykonywalny. Parametry te mogą być określone na kilka sposobów, jednak ja się skupię tylko na tym najpopularniejszym, najczęściej stosowanym i chyba najprostszym, tj. liczbowym. Używamy w tym celu 3 cyfr od 0 do 7, w celu określenia uprawnień danego zasobu.Do sprawdzania uprawnień i właścicieli plików służy polecenie ls -l.

Pierwsza cyfra przypisana jest dla właściciela, druga do grupy, a trzecia dla pozostałych. Im cyfra jest wyższa, tym większe nadaje uprawnienia, np. 0 oznacza brak jakichkolwiek uprawnień, a liczba 7 pełne uprawnienia. Zobaczmy to na przykładzie:

755 – jest to domyśle ustawienie dla wszystkich katalogów w systemie, a oznacza że właściciel katalogu (liczba 7) ma prawo do odczytu, zapisu, modyfikacji czy też do otwierania folderu, czyli może wszystko, grupa do jakiej należy katalog (5) może odczytywać oraz otwierać dany katalog, to samo się tyczy pozostałych użytkowników (5).

644 – domyśle uprawnienia dla prawie wszystkich plików w systemie, oznacza że właściciel (6) ma prawo odczytywać i zapisywać dany plik, natomiast grupa i pozostali (4) mogą tylko odczytać dany plik.

Poniżej przedstawiam tabelkę opisującą poszczególne cyfry:

Cyfra Prawa Litera
0 Brak praw
1 Wykonywanie x
2 Pisanie w
3 Wykonywanie i pisanie wx
4 Czytanie r
5 Czytanie i wykonywanie rx
6 Czytanie i pisanie rw
7 Czytanie, pisanie i wykonywanie rwx


Przykładowa zmiana uprawnień pliku na 777:

chmod 777 plik

Myślę, że należy wyjaśnić tutaj kilka kwestii. Jako że wiemy już kim jest właściciel, jasne też jest co oznacza pozycja pozostali, to nieco mniej jasna może być kwestia grupy. Otóż każdy katalog, czy też plik musi również należeć do jakiejś grupy, przypisuje się ją tak samo jak właściciela przy pomocy polecenia chown. W praktyce jest ona prawie zawsze taka sama jak właściciel. Linux tworząc jakiegoś użytkownika tworzy dla niego również grupę, która ma taką samą nazwę jak użytkownik. Na moim przykładzie, gdzie w systemie mam domyślnie użytkownika qlwik, jego grupa to również qlwik, dlatego też gdy chce zmienić właściciela jakiegoś pliku na siebie, wpisuję jako admin polecenie chown qlwik:qlwik plik, gdzie drugi qlwik oznacza właśnie grupę. Generalnie przeciętny użytkownik Linuxa może olać temat grup, ponieważ mu się ona najzwyczajniej do niczego nie przyda, dlatego też uprawnienia grupy zazwyczaj wszędzie są takie same jak dla użytkowników pozostali. Grupy są wykorzystywane jedynie w systemach, które wymagają ustalenia bardzo specyficznych i szczegółowych uprawnień do różnych zasobów.

Kwestia związana z odczytem i zapisem jest dla wszystkich również raczej jasna, problem może być ze zrozumieniem funkcji wykonywania. W przypadku folderów chodzi tutaj po prostu o możliwość otworzenia danego folderu, a co z plikami? Otóż niektóre pliki, takie jak pliki instalacyjne, muszą być przez system wykonane,a do tego potrzebne jest uprawnienie na poziomie 7, czyli odczyt, zapis oraz wykonanie. Domyślnie wszystkie pliki zapisane np. z internetu mają uprawnienia na poziomie 644, dlatego w takim układzie nawet właściciel nie może ich zainstalować. Potrzebna jest zmiana uprawnień poprzez polecenie chmod na 744 lub najlepiej 777. Podobnie ma się sprawa ze skryptami, które chcemy uruchomić, muszą one mieć uprawnienia do wykonywania. Zauważyłem, że jest to najczęstsza przyczyna konieczności zmiany uprawnień plików, podczas normalnej pracy z systemem Linux.

Oprócz powyższego przykładu, z uprawnieniami spotkacie się również przy instalacji różnych popularnych usług takich jak samba, czy LAMP, ale również podczas używania ftp na localhoscie lub na zewnętrznych hostingach.

Tagi: , , , , , , , , , ,

Dodaj komentarz

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

*

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>