CENTRUM EDUKACJI AKADEMIA SUKCESU Praca semestralna Kierunek: Technik Informatyk Przedmiot: Systemy Operacyjne i Sieci Komputerowe Semestr: II Wykładowca : mgr inż. Adam Aleksiejczuk Temat: Użytkownicy, grupy, autoryzacja i uprawnienia w systemie Linux. Łukasz Stocki (Imię i nazwisko Słuchacza) Białystok, 11 Czerwiec 2011
1 UŻYTKOWNICY I GRUPY W LINUXIE W systemach UNIXowych (a Linux jest takim systemem) konta użytkowników służą różnym celom. Najbardziej oczywistym jest to, że zapewniają systemowi sposób rozróżnienia ludzi, którzy korzystają z systemu, a za tym stoi możliwość identyfikacji i gwarancja bezpieczeństwa. Każdy użytkownik ma osobiste konto z oddzielną nazwą użytkownika i hasłem. Każdy plik w systemie należy do konkretnego użytkownika, który może ustalać prawa dostępu do niego. Konta użytkowników są metodą potwierdzenia praw dostępu do systemu. Oprócz kont osobistych istnieją w systemie użytkownicy, którzy realizują funkcje administracyjne. Administrator systemu używa konta root do wykonywania konserwacji ale raczej nie do prywatnego korzystania z systemu. Do takich kont można uzyskać dostęp za pomocą polecenia su. Inne konta systemowe mogą w ogóle nie być przeznaczone do współpracy z ludźmi. Zazwyczaj są one wykorzystywane przez systemowe demony, które muszą uzyskiwać dostęp do plików systemu poprzez specyficzny numer ID użytkownika, inny niż ten dla konta root lub dla jednego z kont osobistych użytkowników. Jednym z bitów dostępu, który może zostać ustawiony na prawo do wykonania jest bit setuid. Powoduje on, że program jest wykonywany z prawami dostępu właściciela tego pliku. Plik passwd Każdy plik w systemie ma własny wpis w pliku /etc/passwd. Ten plik zawiera wpisy, po jednym dla każdego użytkownika, które określają kilka atrybutów każdego konta, w tym nazwę użytkownika, prawdziwe imię i nazwisko itp. Każdy wpis w tym pliku ma następujący format: nazawa_użytkownika:hasło:uid:gid:gecos:katalog_macierzysty:powłoka Nazwa użytkownika Niepowtarzalny ciąg znaków identyfikujący konto. Dla kont osobistych jest on nazwą, pod którą rejestruje się użytkownik. W większości systemów jest on ograniczony do ośmiu znaków alfanumerycznych. Hasło Zakodowana reprezentacja hasła użytkownika. To pole jest określane za pomocą programu passwd przeznaczonego do ustalania haseł dla kont. Program ten opiera się na metodzie jednokierunkowego szyfrowania, szyfr jest trudny do złamania (nie jest to niemożliwe). Jeśli pierwszym znakiem pola hasło jest *, konto jest zablokowane i system nie pozwoli się na nie zalogować. UID Numer ID użytkownika, czyli nie powtarzające się liczba całkowita, za pomocą której system identyfikuje konto. System używa pola uid wewnętrznie, kiedy zajmuje się procesami i prawami dostępu do pliku. Łatwiej i precyzyjniej działa na liczbach całkowitych niż na ciągach bajtów. Dlatego i uid, i nazwa_użytkownika identyfikują to samo konto, prz czym uid jest ważniejszy dla systemu, a nazwa_użytkownika dla ludzi.
2 GID Numer ID grupy, czyli liczba całkowita odnosząca się do domyślnej grupy użytkownika i wpisana w pliku /etc/group. Gecos Różne informacje na temat użytkownika, między innymi rzeczywiste imię i nazwisko użytkownika oraz opcjonalne dane teleadresowe. Z tych danych korzystają pogramy takie jak mail oraz finger. Katalog macierzysty Katalog macierzysty użytkownika do jego osobistego użytku. Kiedy użytkownik rejestruje się po raz pierwszy, jego powłoka znajduje jego bieżący katalog roboczy w katalogu macierzystym. Powłoka Nazwa programu uruchamianego, kiedy zostanie zarejestrowany użytkownik. Na ogół jest to pełna ścieżka powłoki np. /bin/bash. Wiele z tych pól jest opcjonalnych. Konieczne jest określenie pól nazwa_użytkownika, uid, gid oraz katalog_macierzysty. Pierwszy wpis jest dla konta root, uid dla tego konta jest zerem. System wie, że uid równe zero jest specjalnym kontem i nie dotyczą go typowe ograniczenia zabezpieczające. Hasła typu shadow Danie każdemu, kto ma dostęp do systemu, możliwości oglądania zakodowanych haseł w pliku /etc/passwd jest w pewnym stopniu ryzykowne. Istnieją programy do włamywania się, które sprawdzają ogromnie dużo możliwych haseł i porównują, czy ich zakodowane wersje są takie same, jak ta podana. Aby Uniknąć tego potencjalnego niebezpieczeństwa, wymyślono hasła typu shadow. Kiedy je zastosujemy pola haseł w pliku /etc/passwd zawierają tylko znaki x lub *, które mogą wcale nie występować w zakodowanych wersjach haseł. Wykorzystywany jest drugi plik /etc/shadow. Plik ten może być odczytywany tylko przez użytkownika root. Plik group Grupy użytkowników są wygodnym sposobem logicznego uporządkowania zestawów kont użytkowników i umożliwia użytkownikom współdzielenie plików w grupie lub grupach. Każdy plik w systemie ma przypisanego użytkownika i grupę do których należy. Każdy użytkownik jest wpisany przynajmniej do jednej grupy, którą określa się w polu gid pliku /etc/passwd. Może być też członkiem wielu grup. Plik /etc/group zawiera jednowierszowe wpisy dla każdej grupy w systemie, bardzo przypominające te z pliku /etc/passwd.
3 Format tego pliku jest następujący: Nazwa_grupy:hasło:gid:członkowie Nazwa_grupy Jest to ciąg znaków identyfikujący grupę. Hasło Jest to opcjonalne pole przydzielone grupie, które umożliwia uzystaknie dostępu użytkownikom spoza grupy, gdy zastosują polecenie newgrp. GID Jest numerem ID grupy używanym przez system do wskazywania grupy. Jest to iczba występująca w polu gid pliku /etc/passwd do wyznaczenia domyślnej grupy użytkownika. Członkowie Jest to lista nazw użytkowników podzielona przecinkami (bez odstępów niędzy nimi), identyfikująca tych użytkowników, którzy są członkami grupy, ale mają inny numer gid w pliku /etc/passwd. LOGOWANIE SIĘ Logowanie pozwala odróżnić jednego użytkownika od drugiego. Dzięki temu wiele osób może jednocześnie pracować w tym samym systemie komputerowym i mieć gwarancję, że tylko oni mają dostęp do swoich plików. Proces logowania najczęściej polega na wpisaniu pary nazwa użytkownika i hasło w konsoli po znaku zgłoszenia: Linux login: Password: Podczas wpisywania hasła terminal wyłącza normalne odpowiadanie echem na wpisywane znaki, aby nikt nie mógł przeczytać hasła patrząc na ekran. Po poprawnym zalogowaniu powinien pojawić się znak zachęty # dla użytkownika root, lub inny znak w zależności od wybranej powłoki użytkownika ($ lub %). UPRAWNIENIA W SYSTEMIE LINUX Prawa własności pliku i prawa dostępu do niego są kluczowe dla bezpieczeństwa systemu. Należy jest właściwie określić, nawet jeśli jest się jedynym użytkownikiem systemu. Co oznacza prawo dostępu? Prawa dostępu określają sposób, w jaki można używać pliku. W Linuxie istnieją ich trzy rodzaje: Odczyt oznacza, że można oglądać zawartość pliku. Zapis oznacza, że można dokonywać zmian w pliku lub go usuwać. Wykonywanie- oznacza, że można uruchomić plik jako program.
4 Kiedy tworzony jest plik system przypisuje mu pewne domyślne prawa dostępu działające przez większość czasu. Dla katalogów prawa dostępu mają inne znaczenie: Odczyt oznacza, że można wypisać zawartość katalogu. Zapis oznacza, że można dodawać lub usuwać pliki z katalogu. Wykonywanie- oznacza, że można wypisywać informację o plikach tego katalogu. Właściciele i grupy Linux, aby umożliwić ludziom wspólną pracę, posiada trzy poziomy praw dostępu. Są to: właściciel, grupa oraz inni. Inni to wszyscy którzy posiadają dostęp do systemu a nie są właścicielem lub członkiem grup posiadającym uprawnienia do pliku/zasobu. Każdy plik ma swojego właściciela i grupę. Właścicielem jest na ogół użytkownik, który utworzył plik. Każdy użytkownik należy do domyślnej grupy. Ta grupa jest przypisana do każdego pliku, który tworzy ten użytkownik. Zmieniając grupę przypisaną do pliku, można wybrać zespół ludzi, któremu chcemy przydzielić do niego dostęp. Zmiana właściciela, grupy i prawa dostępu Do zmiany właściciela pliku wykorzystuje się polecenie chown, a do zmiany grupy używa się polecenia chgrp. W Linuxie tylko użytkownik root może korzystać z polecenia chwon, aby zmienić prawa własności do pliku, lecz każdy użytkownik może zmienić grupę, do której należy. Zatem można zmienić właściciela i grupę na bin dla pliku testowy w następujący sposób: #chwon bin testowy #chgrp bin testowy Prawa dostępu są nazywane trybami, a polecenie ich zmiany to chmod. Nie będę tutaj się wdawać w składnie tego polecenia, gdyż jest świetnie omówiona w pomocy systemowej dostępnej w konsoli. Nadmienię natomiast że uprawnienia możemy nadawać w dwóch formach: Forma literowa/tryb symboliczny: Przybiera ona postać +x lub +w +r (lub ze znakiem - dla zdejmowania prawa) i kolejno nadje prawo do wykonywania, pisania i czytania pliku. Forma liczbowa/tryb absolutny: W tym wypadku używamy wartości liczbowych dla każdego prawa (r=4,w=2,x=1). I tak by nadać sobie wszystkie prawa wystarczy że wpiszemy 7, co jest sumą 4+2+1.