Uprawnienia w systemie Linux – tym zagadnieniem powinien zainteresować się każdy użytkownik tego systemu. Niezależnie od tego, czy korzystasz z komputera w domu, w firmie, czy też jest to serwer. W domu najczęściej korzystamy z dwóch rodzajów kont. Jednym z nich jest to konto użytkownika, które posiada skonfigurowane sudo zastępujące użytkownika root. Natomiast drugie, to wspomniane konto root. Jednak co do tego drugiego sytuacje, w których musimy z niego skorzystać są rzadkie.

Oczywiście prezentowany szablon nie zawsze występuje w takiej formie. Szczególnie, gdy posiadamy dzieci korzystające z komputera. Dla nich lepiej jest stworzyć konto z dość ograniczoną możliwością wprowadzania zmian. Szczególnie tych, które mają jakiś wpływ na system.

Inna sytuacja ma się w stosunku do użytkowników biurowych, gdzie konta powinny zawierać tylko dostęp do określonego oprogramowania, czy też katalogów i plików. Stosowana zasada minimalnego dostępu zapewnia dobry sposób bezpieczeństwa szczególnie jak połączymy go z systemem zarządzania kontami uprzywilejowanymi (PAM). Dlatego jest to powszechne rozwiązanie, z którego korzysta wiele firm. Również w przypadku serwerów wymagane są znaczne ograniczenia dla użytkowników oraz wprowadzenie jakiejś hierarchii która będzie miała znaczący wpływ na bezpieczeństwo.

System Linux jest określany jako jeden z bezpieczniejszych rozwiązań, ze względu na swoją złożoną możliwość konfiguracji wspomnianych uprawnień. Dzięki znajomości posługiwania się uprawnieniami w systemie Linux, jesteśmy w stanie sprawnie zarządzać systemem. Niestety ta złożoność nie należy do prostych w zrozumieniu. Szczególnie, gdy pierwszy raz się z tym zetkniemy. Dlatego postanowiłem napisać artykuł, w którym postaram się wyjaśnić jakie są uprawnienia w systemie Linux.

 

Zapisz się na 5-dniowe warsztaty z Dockerem!

Chcesz zacząć przygodę z Dockerem i konteneryzacją, ale nie wiesz od czego zacząć? Zapisz się już teraz na darmowe 5-dniowe warsztaty, a codziennie przez 5 dni będziesz otrzymywać nowe wideo.

W ciągu najbliższych 5 dni otrzymasz:

  • Wyjaśnienie czym jest Docker i konteneryzacja
  • Instalacja i uruchomienie Dockera
  • Podstawy działania Dockera
  • Sieci i Volumeny
  • Praktyczny przykład wdrożenia bazy opartej o Dockera

https://asdevops.pl/docker-wyzwanie

__________________________________________

 

Instalacja oprogramowania, a uprawnienia w systemie Linux

Jeżeli instalujesz oprogramowanie w systemie Linux i jeżeli korzysta ono z zasobów dostępnych tylko dla użytkowników o podniesionym standardzie uprawnień, aby móc go uruchomić, jesteś zmuszony użyć sudo. Jest to spowodowane tym, że system Linux posiada rozbudowany system polegający na grupach.

W ramach przykładu. Jeżeli zainstalujesz oprogramowanie VirtualBox, z którego nie raz korzystałem w swoich materiałach, tworzona jest automatycznie grupa vboxusers. W trakcie instalacji uprawnienia do tej grupy otrzymuje tylko użytkownik root i superużytkownik (sudo). Dlatego, aby móc skorzystać z pełni funkcjonalności tego programu musimy powiedzieć naszemu systemowi, żeby dał nam dostęp do pełni funkcji tego programu z poziomu naszego konta. Aby to zrobić, musimy dodać do grupy nasze konto. Listę dostępnych grup możesz pobrać na kilka sposobów. Najprostszym z nich jest:

cat /etc/group

Lista nie jest w jakiś sposób tworzona alfabetycznie, dlatego mniej więcej przy jej końcu powinieneś odnaleźć wspomnianą grupę dotyczącą VirtualBox.

W celu uzyskania w pełni funkcjonalnego VirtualBox dodajemy nasze konto do jego grupy w następujący sposób:

sudo usermod -a -G <nazwa-grupy> <nazwa-użytkownika>

W moim przypadku, aby dodać konto piszę takie polecenie:

sudo usermod -a -G vboxusers darki

Ostatnia rzecz w poleceniu to nazwa mojego konta.

Teraz jak wyświetlimy ponownie listę powinniśmy otrzymać:

vboxusers:x:122:darki

Czyli nasze konto zostało dodane do danej grupy. W celu wyświetlenia tylko grup, do których należy nasze konto korzystamy z polecenia:

groups
darki cdrom floppy sudo audio dip video plugdev netdev lpadmin scanner vboxusers bluetooth docker

Natomiast trochę inaczej jest w przypadku, gdy chcemy dodać konto do grupy sudo. Pierwsze co należy zrobić, to zalogować się na konto root. Robimy to przy pomocy:

sudo su

lub

su

W zależności od konfiguracji. Następnie posiadając uprawnienia użytkownika root dodajemy użytkownika do grupy sudo:

usermod -a -G sudo <nazwa-użytkownika>

Choć polecenie nie różni się od poznanego wcześniej, powinno być uruchomione jako użytkownik root. Innym miejscem konfiguracyjnym jest sam plik. Wystarczy, że z poziomu konsoli uruchomisz:

visudo

Zostanie otwarty plik tekstowy, w którym znajduje się pełna konfiguracja sudo. Linia odpowiedzialna za grupę sudo wygląda w następujący sposób:

%sudo   ALL=(ALL:ALL) ALL

Czyli użytkownicy będący w grupie sudo posiadają takie same uprawnienia jak użytkownik root.

Osobiście uważam, że grupy są najprostszym elementem składowym uprawnień w systemie Linux. Teraz gdy zapoznaliśmy się z nimi możemy poznać inne dość rozbudowane możliwości.

Uprawnienia w systemie Linux – rodzaje

W systemach Linux istnieją trzy rodzaje uprawnień jakie możemy nadać plikom i katalogom.

  • uprawnienie do czytania reprezentowane jest przez literę r;
    • Jeżeli plik lub katalog posiada takie uprawnienie użytkownik należący do odpowiedniej grupy może odczytać jego zawartość, jednak poza tym nie jest w stanie wykonać nic.
  • uprawnienie do wprowadzania zmian jest reprezentowane przez literę w;
    • Jeżeli plik lub katalog posiada wymienione uprawnienie można wprowadzać w nim zmiany, jak i również wyświetlić jego zawartość.
  • uprawnienie do wykonywania jest reprezentowane przez literę x;
    • Umożliwia uruchomienie pliku, ale nie na jego wyświetlenie lub wprowadzenie zmian w nim.

Wymienione grupy mogą być nadawane na trzy różne grupy użytkowników. Stwórzmy pusty plik, a następnie użyjemy polecenia do wyświetlenia informacji dotyczących uprawnień do niego:

touch plik

ls -l
razem 0
-rw-r--r-- 1 darki darki 0 12-08 14:17 plik

W przykładzie będzie interesował nas sam początek, a dokładniej część:

-rw-r--r--

Zgodnie z opisanymi wcześniej uprawnieniami pojawiają się omawiane litery w tym wypadku r i w. Wiesz już do czego one służą. Na pewno zauważyłeś, że są w dość dziwny sposób zapisane.

W systemie Linux istnieją trzy grupy dla których możesz nadać uprawnienia r, w i x, są nimi:

  • właściciel;
  • grupa;
  • pozostali użytkownicy;

Teraz ponownie zwróć uwagę na poprzedni przykład. Gdybyśmy usunęli wszystkie r i w mielibyśmy dziesięć znaków – ( myślników ). Pierwszy z nich określa typ pliku. Dokładnym znaczeniem tego elementu zajmiemy się w następnym podrozdziale. Następne trzy są to uprawnienia właściciela, kolejne trzy – grupy i ostatnie – pozostałych użytkowników.

Z nabytą dotychczas wiedzą możemy stwierdzić, że właściciel pliku ma uprawnienia do czytania oraz wprowadzania zmian w pliku. Natomiast grupa i pozostali użytkownicy mają możliwość tylko czytania.

Jest coś czego nie dopowiedziałem, gdy opisywałem grupy. Tworząc konto użytkownika tworzysz również grupę, która występuje pod tą samą nazwą co nazwa konta. Dlatego jeżeli ponownie wpiszesz:

cat /etc/group

Na liście odnajdziesz grupę nosząca taką samą nazwę jak nazwa twojego konta. Zerknijmy ponownie w przykład, w którym wypisaliśmy uprawnienia do stworzonego pliku:

-rw-r--r-- 1 darki darki 0 12-08 14:17 plik

W przykładzie dwa razy pojawia się nazwa konta. W moim przypadku jest to darki. Pierwsze określa właściciela pliku drugie oznacza grupę do jakiej należy plik.

Typy plików

Tak jak wspomniałem pierwszy – ( myślnik ) określa typ plików. System Linux rozpoznaje wszystko jako plik. Natomiast samych plików jest kilka typów. Poniżej prezentuję listę:

” – plik danych, może przechowywać dowolne dane np. może być plikiem tekstowym lub też skryptem bash;

b” – urządzenie blokowe, np. dysk twardy;

c” – urządzenie znakowe, np. karta graficzna;

d” – katalog, coś w rodzaju teczki do przechowywania danych;

l” – dowiązanie symboliczne (małe L jak Lucyna) – jest to dowiązanie do jakiegoś pliku, ale nie skrót;

p” – potok;

Dla systemu Linux nie ma znaczenia czy podpinamy do portu USB pendrive czy też tworzymy plik tekstowy. On zarówno jedno, jak i drugie zdarzenie zapisze jako plik. Następnie nada mu odpowiedni typ. W Linux nie ma czegoś takiego jak rozszerzenie występujące w Windowsie.

Wracamy do grup

Już wiesz czym są uprawnienia i w jaki sposób reprezentowane są wizualnie. Teraz podejdę do tego bardziej praktycznie. Wykorzystamy do tego stworzony wcześniej plik, któremu będziemy modyfikować uprawnienia.

Przy instalacji niektórych programów grupy tworzone są automatycznie. Natomiast my możemy tworzyć własne i przypisywać pliki oraz katalogi do nich. Aby utworzyć nową grupę korzystamy z polecenia:

sudo addgroup askomputer
Dodawanie grupy "askomputer" (GID 1001)...

Gotowe.

Aby móc stworzyć nową grupę musimy skorzystać z uprawnień superużytkownika. Następnie dodajmy nasze konto do grupy:

sudo usermod -a -G askomputer darki

Następnie zmieniamy grupę stworzonemu plikowi:

sudo chgrp askomputer plik

I wyświetlamy przy pomocy polecenia ls -l szczegółowe informacje:

-rw-r--r-- 1 darki askomputer 0 12-08 14:17 plik

Dlaczego warto tak robić?

Gdy określona liczba osób pracuje nad danym plikiem lub katalogiem, przypisując ich do grupy mają możliwość wykonywania wszystkich niezbędnych czynności. W naszym przykładzie wszyscy użytkownicy będący w grupie askomputer mają możliwość tylko czytania pliku.

Zmiana uprawnień do pliku

Do pliku możemy zmieniać uprawnienia dla właściciela, grupy i pozostałych użytkowników. Dla każdej z grup możemy przypisać oddzielnie uprawnienia. Wykonywać możemy to w formie literowej, jak i liczbowej.

Zapis literowy

Jako pierwsze chciałbym pokazać zapis literowy, ponieważ jest łatwiejszy do analizy, a co ważniejsze – również i do zapamiętania.

Polecenie odpowiedzialne za nadawanie uprawnień nazywa się chmod. W celu nadania, zmiany uprawnień korzystamy z niego określając, któremu z trzech kategorii użytkowników chcemy to zrobić. Litera reprezentująca daną kategorię użytkownika to:        

u (user) – symbolizuje właściciela;

g (group) – symbolizuje grupę;

o (others) – symbolizuje pozostałych użytkowników którzy nie są w powyższych dwóch;

a (all) – symbolizuje wszystkie powyższe kategorie;

Czyli, aby nadać uprawnienia stworzonej we wcześniejszym przykładzie grupie askomputer prawa do czytania używamy z polecenia w następujący sposób:

chmod g+w plik

Litera g jest odpowiedzialna za grupę, natomiast w za możliwość edytowania. W związku z tym, że plik posiadał już uprawnienie r czyli odczytu nie musiałem ponawiać tego zapisu. Jeżeli chcesz uprawnienia możesz łączyć ze sobą:

chmod g+rwx plik

Jednak w tym przypadku nie istniała taka potrzeba. Jeżeli wyświetlisz uprawnienia do pliku to zobaczysz, że grupa posiada możliwość edycji:

-rw-rw-r-- 1 darki askomputer 0 12-08 14:17 plik

Jeżeli chcemy pozbawić któregoś z uprawnień korzystamy z prezentowanego polecenia w następujący sposób:

chmod o-r plik

Czyli zamieniamy tylko znak z + (plus) na – (minus). Jak w działaniach matematycznych. Zgodnie z poznanymi zasadami usuwając uprawnienie do odczytu użytkownicy poza grupą askomputer i nie będący właścicielem pliku nie mogą z plikiem nic zrobić. Teraz uprawnienia do naszego pliku powinny wyglądać w następujący sposób:

-rw-rw---- 1 darki askomputer 0 12-08 14:17 plik

Jednak to nie wszystko. Do tej pory dodawaliśmy i odejmowaliśmy uprawnienia. Możemy również posłużyć  się znakiem = (równa się) które wykona te dwie czynności za nas:

chmod g=- plik

W prezentowany sposób zostały zabrane wszystkie uprawnienia grupie co potwierdza poniższy przykład:

-rw------- 1 darki askomputer 0 12-08 14:17 plik

W związku z tym widzisz już jakie jest łatwe nadawanie uprawnień z wykorzystaniem zapisu literowego.

Zapis cyfrowy

Drugim zapisem stosowanym w systemie Linux jest zapis cyfrowy. Wykonujemy to wszystko co w poprzednim paragrafie, ale używamy do tego celu liczby. Liczby są z przedziału od 0 do 7. Poniżej prezentuje jakie wartości każda z nich reprezentuje w zapisie ósemkowym:

0 – —

1 – –x

2 – -w-

3 – -wx

4 – r–

5 – r-x

6 – rw-

7 – rwx

Każda liczba z wymienionego przedziału odpowiada innym uprawnieniom które dokładnie rozpisałem powyżej. Sprawmy, aby grupa askomputer posiadała uprawnienia do odczytu oraz zapisu. Posłużymy się poznanymi przed chwilą liczbami:

chmod 660 plik

Pierwsza liczba 6 odpowiada za uprawnienia właściciela (rw-), druga za uprawnienia grupy (rw-) i trzecia pozostałych użytkowników (). W ten sposób nadajemy uprawnienia z użyciem liczb.

Polecenia które mogą się przydać, a których nie użyłem

W związku z tym, że najważniejsze mamy za sobą chciałbym jeszcze pokazać kilka poleceń, które w trakcie pracy przy nadawaniu uprawnień mogą się przydać.

Usuwanie grupy

groupdel <nazwa-grupy>

Tworzenie nowego konta użytkownika

adduser <nazwa-użytkownika>

Usuwanie konta użytkownika

userdel <nazwa-użytkownika>

Zmiana hasła:

passwd

Zmiana właściciela pliku

chown <nazwa-konta-nowego-właściciela> <nazwa-pliku>

Podsumowanie – uprawienia w systemie Linux

Administracja uprawnieniami użytkownika jest ogromnym tematem, który starałem się opisać w tym krótkim artykule. Mam nadzieje, że informacje w nim zawarte przydadzą Ci się w codziennym użytkowaniu. Mam też nadzieję, że teraz uprawnienia w systemie Linux nie będą dla Ciebie już żadnym problemem.

Chcesz wiedzieć więcej o np. o administrowaniu serwerów Linux? Sprawdź nasze szkolenie! A czy przeczytałeś nasz poprzedni wpis? Jeśli nie, to nadrobisz to klikając TUTAJ.

Chcesz więcej?

A na sam koniec przypominam o darmowych 5-dniowych warsztatach z Dockera.

Wszelkie szczegóły znajdziesz TUTAJ

5-dniowe warsztaty z Dockerem

X