Ćwiczenie 6
Temat:
Użytkownicy, grupy
i uprawnienia
Cel ćwiczenia:
W tym ćwiczeniu student zapozna się z metodami zarządzania kontami
użytkowników systemu Linux, nauczy się przypisywać i zmieniać hasła do kont
użytkowników, a także definiować grupy i przypisywać do nich poszczególne
konta. Dodatkowo w ćwiczeniu poruszony zostanie temat prawd dostępu do
zasobów. Student pozna metody określania właściciela plików i katalogów,
zmieniania właściciela, metody określania praw dostępu dla użytkownika, jego
grupy oraz innych użytkowników, a także uruchamiania poleceń z
uprawnieniami innych użytkowników.
81
Tworzenie konta użytkownika
Użytkownicy w systemie Linux
Użytkownik systemu operacyjnego to osoba posiadająca dostęp do zasobów systemu na
określonych w systemie prawach. W systemie operacyjnym może istnieć wielu
użytkowników o różnych poziomach uprawnień. Dostęp do systemu udzielany jest
użytkownikowi w procesie autoryzacji, najczęściej polegającym na podaniu poprawnej
nazwy użytkownika systemu oraz hasła. W celu sprawdzenia nazwy zalogowanego aktualnie
użytkownika użyć należy polecenia:
whoami
Każdy użytkownik w systemie Linux posiada własny numer ID (zwany też UID – z ang. user
identification) , który jednoznacznie identyfikuje danego użytkownika. Szczegółowe
informacje dotyczące numeru ID użytkownika, a także grupy do jakiej należy użytkownik
(więcej o grupach w następnej sekcji przewodnika) wyświetlić można za pomocą polecenia:
id
Tworzenie konta użytkownika
W celu utworzeniu nowego użytkownika w systemie Linux użyć należy polecenia useradd lub
adduser. Obydwa te polecenia realizują takie samo zadanie – dodają nowe konto
użytkownika do systemu operacyjnego. Dla każdego z tych poleceń można zdefiniować
wartości domyślne, które specyfikuje się w pliku:
/etc/default/useradd
W zależności od dystrybucji, polecenia te mogą mieć dokładnie taką samą składnie i
działanie, lub na przykład, jak w systemie Ubuntu, polecenie useradd posiada klasyczną
składnię, a polecenie adduser tworzy użytkownika w trybie interaktywnym.
useradd opcje nazwa_tworzonego_konta
Do najważniejszych parametrów polecenia useradd należą:
• -d – specyfikacja katalogu domowego (w niektórych dystrybucjach ta flaga TYLKO
wskazuje katalog domowy, nie tworzy go)
• -m – tworzy katalog domowy
82
Edycja właściwości użytkownika
• -g - wskazuje grupa, do której ma zostać przypisany nowy użytkownik, w przypadku
braku określenia tego parametru użyta zostanie grupa domyślna
• -p – pozwala wskazać początkowe hasło użytkownika
• -c – pełna nazwa konta (komentarz do konta)
Przykładowe polecenie tworzące nowego użytkownika o nazwie ‘operator’, z początkowym
hasłem ‘zaq12wsx’, tworząc i wskazując katalog domy jako /home/operator
useradd –m –d /home/operator –p zaq12wsx operator
UWAGA! Jeśli nie zostanie wskazana flaga ‘-p’ (hasło początkowe) konto użytkownika
zostanie utworzone, jednak użytkownik nadal nie będzie mógł się zalogować, dopóki hasło
nie zostanie zdefiniowane.
Edycja właściwości użytkownika
Do edycji już utworzonego konta użytkownika służy polecenie usermod. Do najważniejszych
parametrów polecenia należą:
• -c – opis (pełna nazwa konta)
• -d – zmiana katalogu domowy
• -g – zmiana grupy głównej użytkownika
• -m – użyte z opcją –d przenosi zawartość starego katalogu domowego do nowej
lokalizacji
• -l – zmiana nazwy (loginu) użytkownika
• -G – przypisanie do grupy
Katalog domowy
W systemie Linux użytkownik może mieć (powinien mieć) tzw. „katalog domowy”.
Najczęściej katalog domowy nosi taką samą nazwę jak konto użytkownika systemu i znajduje
się w katalogu /home/. W zależności od dystrybucji systemu Linux oraz od poziomu
zastosowanych zabezpieczeń użytkownik powinien mieć możliwość zapisu plików TYLKO w
swoim katalogu domowym, dlatego katalog (jego istnienie) jest ważnym elementem. Katalog
83
Ustalanie oraz zmiana hasła użytkownika
domowy w zależności od konfiguracji systemu tworzony jest automatycznie podczas
tworzenia konta użytkownika lub należy go stworzyć i wskazać podczas tworzenia konta.
Ustalanie oraz zmiana hasła użytkownika
Jeżeli hasło nie zostało ustalone podczas tworzenia konta (flaga –p polecenia useradd) może
zostać przypisane za pomocą polecenia:
passwd nazwa_konta
Polecenie wywołane z flagą –d kasuje hasło wskazanego konta:
passwd -d nazwa_konta
Kasowanie konta użytkownika
W celu usunięcia konta użytkownika posłużyć się należy poleceniem:
userdel nazwa_konta
Polecenie kasuje konto użytkownika z systemu, jednak domyślnie nie jest usuwany katalog
domowy wraz z plikami kasowanego użytkownika. Aby usunąć katalog domowy razem z
kontem użyć należy flagi –r:
userdel -r nazwa_konta
Aktualnie zalogowaniu użytkownicy
System Linux umożliwia logowanie się do jego zasobów wielu użytkownikom. Użytkownicy
mogą logować się bezpośrednio do konsoli lub za pomocą sieci (np. z wykorzystaniem SSH).
Do konta jednego użytkownika można logować się wielokrotnie. W celu sprawdzenia którzy
użytkownicy są aktualnie zalogowani do systemu skorzystać można z jednego z poniższych
poleceń:
• users
• who
• w
84
Udane i nieudane logowania do systemu
Wszystkie powyższe polecenie wyświetlają informacje odnośnie aktualnie zalogowanych do
systemu użytkowników z różnym poziomem ilości szczegółów. Polecenie users wyświetla
tylko nazwy zalogowanych użytkowników, polecenie who - nazwy wraz z nazwami terminali
do których zalogowany jest dany użytkownik (terminale tty – to terminale rzeczywiste,
natomiast pts/x to terminale wirtualne tworzone po zalogowaniu się użytkownika przez
sieć), a polecenie „w” wyświetla zalogowanych użytkowników wraz z nazwami terminali oraz
czasem logowania i danymi dotyczącymi procesów użytkownika.
Udane i nieudane logowania do systemu
W celu wyświetlenia ostatnio logujących się użytkowników skorzystać należy z polecenia:
last
Polecenie wyświetla nazwy użytkowników, nazwy terminali oraz czas logowania. Wyniki
polecenia mogą zostać zawężone do konkretnego terminala, np. aby wyświetlić
użytkowników logujących się do terminala nr 1:
last tty1
Wyniki można zawęzić także do ilości wyświetlanych wpisów, np. aby wyświetlić 10 ostatnich
logowań użyć można flagi –n:
last –n 10
Poleceniem odwrotnym wskazującym ostatnie nieudane próby logowania się do systemu
jest polecenie:
lastb
Polecenie to jest szczególnie przydatne podczas prac administracyjnych, pozwala
administratorowi na diagnostykę nieudanych zdarzeń logowania do systemu.
Zadanie 1 Użytkownicy w systemie Linux
1. Tworzenie i testowanie konta nowego użytkownika:
1.1. Założyć konto użytkownika o nazwie „operator”
1.2. Ustalić katalog domowy użytkownika: /home/operator
1.3. Określić hasło dla nowego użytkownika (np. zaq12wsx)
85
Udane i nieudane logowania do systemu
1.4. Zalogować się kilkukrotnie na konto nowego użytkownika wprowadzając poprawne i
niepoprawne hasło
1.5. Zalogować się do konta root a następnie sprawdzić za pomocą poleceń last oraz
lastb ostatnie udane i nieudane logowania do systemu.
2. Stworzyć skrypt tworzący automatycznie konta użytkowników według listy z pliku
tekstowego (patrz screen poniżej). W tym celu:
2.1. Pobrać za pomocą polecenia wget przykładowy plik z nazwami użytkowników:
wget –q http://157.158.131.167/names.txt
2.2. Stworzyć skrypt zakładający użytkowników (wraz z katalogiem domowym) na
podstawie nazw w pliku tekstowym. Skrypt powinien przyjmować nazwę pliku z
nazwami użytkowników jako parametr (zmienna $1) a następnie za pomocą pętli
zakładać konta użytkowników. Skrypt dodatkowo powinien wyświetlać czas
rozpoczęcia i zakończenia pracy.
2.3. Stworzyć analogiczny skrypt do usuwania kont użytkowników na podstawie nazw w
pliku tekstowym.
Grupy użytkowników
Użytkownicy w systemie operacyjnym zorganizowani są w jednostki organizacyjne zwane
grupami. Każda grupa w systemie, podobnie jak użytkownik, posiada numer ID
jednoznacznie definiujący grupę (zwany też GID – z ang. group identification). Organizacja
użytkowników w grupy służy do określania wspólnych praw dostępu do zasobów dla
1
2
3
4
5
86
Tworzenie nowej grupy
członków poszczególnych grup systemowych. Jeden użytkownik może należeć do wielu
grup. Aby wyświetlić do jakich gryp należy dany użytkownik użyć należy polecenia:
groups nazwa_użytkownika
Tworzenie nowej grupy
Nowa grupa może zostać utworzona za pomocą polecenia:
addgroup nazwa_nowej_grupy
Edycja właściwości grupy
Podobnie jak w przypadku kont użytkowników, konto grupy może zostać zmodyfikowane już
po utworzeniu. Do modyfikacji właściwości grupy służy polecenie:
groupmod
Polecenie z flagą –n zmienia nazwę grupy:
groupmod –n NOWA_NAZWA Aktualna_Nazwa
Natomiast z flagą –g zmienia numer ID grupy:
groupmod –g NOWE_ID_GRUPY Nazwa_Grupy
Kasowanie grupy
Kasowanie grupy odbywa się za pomocą polecenia:
groupdell Nazwa_Grupy
Pliki konfiguracyjne kont użytkowników i grup
Wszystkie informacje o kontach i grupach użytkowników znajdują się w katalogu /etc/ w
odpowiednich plikach.:
87
Własność pliku i katalogu
• /etc/passwd – plik zawierający spis kont użytkowników, wraz z ich numerem ID oraz z
numerem ID grupy do której należą. W pliku dodatkowo zdefiniowany jest adres
katalogu domowego oraz powłoka do której może zalogować się użytkownik
• /etc/group – plik zawierający spis grup użytkowników wraz z ich numerami ID
• /etc/shadow – plik zawierający zaszyfrowane hasła użytkowników
UWAGA! Poprawna edycja powyższych plików konfiguracyjnych ma dokładnie taki sam
efekt jak zastosowanie wyżej wymienionych poleceń tworzenia, modyfikacji i kasowania
użytkowników i grup.
Uprawnienia do pliku i katalogu
Systemy Linux z założenia są systemami na których pracować może jednocześnie wielu
użytkowników, dlatego właśnie podczas tworzenia systemów typu Unix powstał pomysł, aby
każdy plik w systemie miał określonego właściciela, oraz prawa dostępu, jakie przysługują
właścicielowi oraz innym użytkownikom.
Własność pliku i katalogu
Każdy plik i katalog w systemie Linux posiada określonego właściciela oraz grupę. Aby
wyświetlić właściciela i grupę posiadającą prawa do plików użyć należy polecenia
wyświetlającego zawartość katalogu z flagą -la:
ls –la ścieżka
Dane dotyczące właściciela i grupy znajdują się w trzeciej i czwartej kolumnie:
88
Zmiana właściciela oraz grupy
Zmiana właściciela oraz grupy
W celu zmiany właściciela pliku lub katalogu użyć należy polecenia chown, np.:
chown operator program_06.sh
W celu zmiany grupy macierzystej pliku lub katalogu zastosować należy polecenie chgrp, np.:
chgrp operatorzy program_06.sh
Możliwe jest wywołanie polecenia zmieniającego właściciela (chown) od razu z określeniem
grupy macierzystej, nawet gdy określany właściciel nie należy do określanej grupy
macierzystej np.:
chown operator.users program_03.sh
gdzie operator to nazwa użytkownika, natomiast users to grupa macierzysta pliku. Warto
jednak zaznaczyć, iż użytkownik operator nie jest członkiem grupy users.
89
Rodzaje uprawnień do plików i katalogów, zmiana uprawnień
Rodzaje uprawnień do plików i katalogów, zmiana uprawnień
Prawa dostępu do plików widoczne są w pierwszej kolumnie widoku wywołanego
poleceniem:
ls –la ścieżka
, np.:
Prawa dostępu określone są za pomocą 10 znaków podzielonych na 4 sekcje (Patrz poniższy
schemat). Pierwszy znak (jednocześnie będący pierwszą sekcją) określa rodzaj zasobu („d” –
katalog, „-” plik zwykły, „l” dowiązanie symboliczne). Sekcja druga określa prawa dostępu do
pliku określone dla właściciela pliku, sekcja trzecia określa prawa dostępu dla grupy
macierzystej, a sekcja czwarta określa prawa dla pozostałych użytkowników (spoza grupy
macierzystej).
1
2
3
4
90
Rodzaje uprawnień do plików i katalogów, zmiana uprawnień
Poszczególne symbole oznaczają w przypadku plików:
• r - odczyt
• w - zapis
• x - wykonanie
Natomiast w przypadku katalogów:
• x – możliwość przechodzenia do katalogu jak i przejścia przez katalog (np.
poleceniem cd)
• r – możliwość przeglądania zawartości katalogu (np. polecenie ls)
• w – możliwość zmiany zawartości katalogu (tworzenie, modyfikacja, kasowanie i
zmiana nazwy plików)
Przykład:
Prawa typu:
Określają, iż właścicielem pliku zwyczajnego jest użytkownik root , a grupą macierzystą
grupa root. Użytkownik root ma pełne prawa do pliku (odczyt, zapis i wykonanie), grupa
macierzysta ma prawo odczytu i wykonania, natomiast wszyscy inni użytkownicy mają tylko
prawo do odczytu pliku.
Getfacl
Prawa dostępu do plików i katalogów oraz dane o właścicielu mogą także zostać wyświetlone
za pomocą polecenia:
getfacl ścieżka
UWAGA! W niektórych dystrybucjach polecenie getfacl musi zostać doinstalowane.
Polecenie jest częścią pakietu „acl” (np. dla Ubuntu: aptitude install acl).
91
Zmiana uprawnień do pliku
Zmiana uprawnień do pliku
Zmiana uprawnień do pliku lub katalogu realizowana jest za pomocą polecenia :
chmod KOD ścieżka_do_zasobu
Jeśli prawa mają zostać nadane rekurencyjnie (na wszystkie pliki w katalogu i podkatalogach)
zastosować należy dodatkowo flagę –R.
KOD to trzycyfrowy symbol tworzony wg zasady, iż pierwsza cyfra kodu to prawa
przydzielane właścicielowi pliku, druga to prawa grupy macierzystej, a trzecia to prawa dla
pozostałych użytkowników. Kody polecenia prezentuje poniższa tabela. Łatwo zauważyć, iż
cyfra binarna symbolizuje symbol praw dostępu – tam gdzie występuje cyfra „1” odpowiedni
symbol (rwx) jest „aktywny”, a tam gdzie cyfra „0” występuje symbol „-”.
Prawa
Symbol binarny
Kod polecenia
chmod
Opis
- - -
000
0
-
- - x
001
1
wykonanie
- w -
010
2
zapis
- w x
011
3
zapis i wykonanie
r - -
100
4
odczyt
r – x
101
5
odczyt i wykonanie
r w -
110
6
odczyt i zapis
r w x
111
7
odczyt, zapis, wykonanie
Przykład
Aby nadać prawa dostępu takie jak na poniższym screenie:
użyć należy polecenia:
chmod 754 program_02.sh
gdzie: 7 to prawa dla właściciela (rwx) , 5 prawa dla grupy (r-x) oraz 4 – prawa dla
pozostałych użytkowników (r--).
Chmod – zapis symboliczny
Używając polecenia chmod można zamiast kodu praw zastosować odpowiednie symbole
określające grupę, dla której ustalane są prawa:
92
Uruchamianie programów z uprawnieniami innych użytkowników
• u - właściciel pliku,
• g - grupa macierzysta,
• o - pozostali użytkownicy ,
• a - wszyscy powyżsi
Prawa w zapisie symbolicznym określane są za pomocą symboli:
• +
dodaje prawa
• -
odejmuje prawa
• =
ustala prawa
Przykład
• Dodawanie praw: Aby dodać prawo odczytu dla grupy macierzystej używając zapisu
symbolicznego, użyć należy polecenia:
chmod g+r plik
chmod g+r plik
chmod g+r plik
chmod g+r plik
• Odejmowanie praw: Aby usunąć prawo możliwości wykonania dla użytkowników spoza
grupy macierzystej:
chmod
chmod
chmod
chmod
o
o
o
o-
-
-
-x
x
x
x
plik
plik
plik
plik
• Ustalanie praw: Określenie pełnych praw dla właściciela, oraz prawa odczytu dla grupy:
chmod
chmod
chmod
chmod
u=rwx,g=r plik
u=rwx,g=r plik
u=rwx,g=r plik
u=rwx,g=r plik
• Grupowanie zapisów:
o Aby dodać prawa zapisu i wykonania dla właściciela i grupy:
chmod ug+wx plik
chmod ug+wx plik
chmod ug+wx plik
chmod ug+wx plik
o
Aby ustawić prawa dla właściciela i grupy:
chmod u+rwx,g=r plik
chmod u+rwx,g=r plik
chmod u+rwx,g=r plik
chmod u+rwx,g=r plik
Uruchamianie programów z uprawnieniami innych użytkowników
Czasami istnieje konieczność uruchomienia programu (lub powłoki) z uprawnieniami innego
użytkownika. W zależności od potrzeb, zadanie to może zostać zrealizowane za pomocą
uprawnień specjalnych, lub polecenia su oraz sudo.
SUID, SGID, Sticky Bit – uprawnienia specjalne
Oprócz „klasycznych” praw dostępu możliwe jest określenie specjalnych uprawnień do
plików i katalogów. Przed KOD określający prawa dostępu może zostać dostawiona jedna
cyfra: 4 (SUID), 2 (SGID) lub 1 (Sticky Bit), które rozszerzają mechanizm uprawnień (w
przypadku oznaczeń symbolicznych - s – SUID/SGID, t – Sticky Bit). Funkcjonalność ta jest
rozszerzeniem prawa wykonywalności (x), więc jeśli plik ma określone uprawnienia
93
SUID, SGID, Sticky Bit – uprawnienia specjalne
specjalne, a nie ma określonego prawa do wykonywania pliku to prawa specjalne są
nieaktywne („są uśpione”).
Dla plików uprawnienia specjalne oznaczają:
• SUID – wykonywany program będzie uruchomiony z prawami właściciela pliku
• SGID – wykonywany program będzie uruchomiony z prawami grupy macierzystej
pliku
Natomiast dla katalogów oznaczają:
• SUID – właścicielem nowych plików tworzonych w katalogu będzie właściciel
katalogu
• SGID – grupą macierzystą nowych plików tworzonych w katalogu będzie grupa do
której należy katalog
• Sticky Bit – pliki wewnątrz katalogu mogą być usuwane lub przemianowywane tylko
przez właściciela pliku lub owego katalogu.
Przykład
Aby dodać do pliku możliwość wykonywania programu na prawach właściciela pliku, użyć
należy polecenia:
chmod 4777 plik.sh
Polecenie su
Polecenie su pozwala na zalogowanie się do konta innego użytkownika pozostając
zalogowanym do bieżącego konta. Np. Będąc zalogowanym do systemu jako użytkownik
root, a chcąc zalogować się na użytkownika operator, choćby w celu przetestowania
uprawnień do zasobów, wydać można polecenie:
su operator
Jeśli wydającym polecenie jest administrator systemu (root) nie zostanie on zapytany o hasło
użytkownika, w innym wypadku użytkownik wywołujący polecenie będzie proszony o
podanie hasła do konta.
Aby wylogować się z konta użytkownika, po wywołaniu polecenia su użyć należy
kombinacji klawiszy ctrl+D.
94
SUID, SGID, Sticky Bit – uprawnienia specjalne
Polecenie sudo
Innym poleceniem pozwalającym na wykonanie komendy na prawach użytkownika root jest
polecenie sudo, które poprzedza polecenie, które powinno zostać uruchomione z prawami
użytkownika root.
Np. będąc zalogowanym jako użytkownik operator:
sudo mkdir /root/dane
Normalnie użytkownik operator nie ma uprawnień do tworzenia katalogów w katalogu
/root/, jednak gdy polecenie mkdir zostało poprzedzone komendą sudo, polecenie tworzenia
katalogu zostało wykonane z uprawnieniami użytkownika root.
UWAGA! Oczywistym jest, iż nie każdy użytkownik systemu powinien mieć możliwość
skorzystania z polecenia sudo. Użytkownicy, którzy mogą skorzystać z tej komendy muszą
należeć do grupy użytkowników określonej w pliku konfiguracyjnym polecenia sudo, który
znajduje się:
/etc/sudoers
Zadanie 1 Uprawnienia
1. Stworzyć strukturę plików jak w poniższym przykładzie. Na katalog „dane” na potrzeby
ćwiczenia nadać pełne uprawnienia dla wszystkich użytkowników, a następnie w tym
katalogu realizować dalsze ćwiczenia.
• /home/dane/
o backup/
o bin/
program01.sh
program02.sh
program03.sh
o doc/
Nadać katalogom prawa jak na poniższym wydruku:
Stworzyć trzy kopie programu
wyświetlającego datę w
różnych formatach
95
SUID, SGID, Sticky Bit – uprawnienia specjalne
Oraz plikom w katalogu bin/ jak na poniższym wydruku:
Przetestować działanie uprawnień. Uruchomić powyższe programy.
2. Jako użytkownik root edytować plik:
/ets/sudoers
tak, aby wpisy wyglądały jak na poniższym wydruku:
2.1. Przetestować możliwość korzystania przez użytkownika operator z polecenia sudo.