więcej
Transkrypt
więcej
2. System uprawnień w linuxie Uprawnienia do plików: ls -l plik -rw-r--r-x 1 pawelza students 0 Lis 17 08:21 plik Mamy tutaj trzy grupy uprawnień: -rw - dla właściciela (owner, oznaczany też "user" reprezentowany za pomocą litery u) -r- dla grupy właścicielskiej (group reprezentowanej za pomocą litery g) r-x - dla pozostałych reprezentowanych przez litere o. Dodatkowe informacje jakie jesteśmy wstanie uzyskać z przykładu, właścicielem pliku jest pawelza, grupa właścicielska to users, ponadto - pierwsza kreska oznacza, że jest to zwykły plik. W uprawnieniach możemy mieć: r (czytanie) w (zapisywanie, modyfikowanie) i x (wykonywanie) r - że możemy odczytać treść pliku w - że możemy zmieniać treść pliku x - oznacza, że jest to program wykonywalny Dla katalogów funkcjonuje analogicznie reprezentowany system uprawnień, jednak jego interpretacja jest trochę inna. ls -ld katalog drwxr-xr-x 2 pawelza students 4096 Lis 17 08:36 katalog rwx - dla właściciela (owner, oznaczany też "user" reprezentowany za pomocą litery u) r-x - dla grupy właścicielskiej (group reprezentowanej za pomocą litery g) r-x - dla pozostałych reprezentowanych przez litere o. Do tej pory wszystko tak jak dla plików. Jednak już na początku (na pierwszym miejscu) zauważamy różnice), pojawiła się litera d. Informuje ona, że informacja tu zawarta dotyczy katalogu. r - oznacza, że można odczytywać katalog (wykonać ls, zobaczyć jakie pliki zawiera) r bez x-a(rw-) daje możliwość wyłącznie ls, r-x daje możliwość ls -l (sprawdź) w - oznacza, że można modyfikować katalog (dodawać i kasować pliki) - nie ma to związku z modyfikowaniem (np. kasowaniem) zawartości pliku, np. nie mając w na katalogu, w którym jest plik, ale mając w do pliku możemy skasować jego zawartość x - oznacza, że można wchodzić do katalogu Do zmiany uprawnień służy polecenie chmod man chmod lub man 1 chmod przykłady: ls -l plik -rw-r--r-x 1 pawelza students 0 Lis 17 08:21 plik chmod go+w plik -rw-rw-rw- 1 pawelza students 0 Lis 17 08:21 plik chmod ug=r plik ls -l plik -r--r--rw- 1 pawelza students 0 Lis 17 08:21 plik tak samo działa to dla katalogów w argumentach polecenia chmod mamy trzy grupy: ugo - dla kogo zmieniane są uprawnienia (user, group, others), jeśli chcemy zmienić uprawnienia na takie same dla wszystkich trzech grup to możemy skorzystać z litery a – od all (wszyscy) jest to alias do ugo Jak można było zaobserwować w przykładach, bądź też wyczytać w manualu mamy możliwość na a) =, czyli przypisanie określonych uprawnień do odpowiedniej grupy bez względu na to co było wcześniej np. było r-x, zmieniamy na =wx otrzymujemy -wx b) +, dodanie odpowiedniej wartości podanej po tym znaku do tego co już było w danej grupie np. było --x, zmieniamy na +wx otrzymujemy –wx c) -, zdejmowanie uprawnień, przeciwieństwo dodawania np. np. było r-x, zmieniamy na -wx otrzymujemy r-Zasada działania systemu uprawnień: System sprawdza czy podczas próby wykonania operacji na zasobie, użytkownik dokonujący tej próby jest właścicielem zasobu. Jeśli jest to pozwala lub nie na wykonanie tej operacji na podstawie pierwszej trójki uprawnień dotyczącej właściciela pliku. Jeśli po sprawdzeniu okazało się ze użytkownik nie jest właścicielem zasobu, wtedy system sprawdza czy należy do grupy właścicielskiej. Jeśli tak to pozwala lub nie na wykonanie tej operacji na podstawie drugie trójki uprawnień dotyczącej grupy. Jeśli jednak po sprawdzeniu okazało się ze użytkownik nie jest właścicielem zasobu nie należy też do grupy właścicielskiej tego zasobu, wtedy system pozwala lub nie na wykonanie tej operacji na podstawie ostatniej trójki uprawnień dotyczącej pozostałych. Grupy można łączyć oddzielając zapis ‘,’. chmod u=rw,g+r,o-x chmod ugo=rw chmod ug=rw,o=r chmod u+rw,g+r chmod u+rwx,g+rx,o+x itd. Domyślne prawa dostępu dla plików i katalogów nadawane są podczas ich tworzenia. Zmianę tych praw uzyskujemy poleceniem umask. Jeśli chcielibyśmy, aby tworzone pliki miały domyślne prawa 644, które zezwalają właścicielowi na czytanie i pisanie, a reszcie tylko na czytanie to od wartości 777 należy odjąć 644, a wynik podać jako parametr polecenia umask 777-644 = 133 umask 133 suid i sgid - pożyteczne i niebezpieczne narzędzie Zadaniem tego potężnego, a zarazem niebezpiecznego narzędzia jest uruchamianie programu (nie skryptu) z prawami właściciela lub grupy przypisanej temu programowi, a nie z prawami użytkownika, który ten program uruchamia. Zagrożenie z używania tych flag może wynikać z możliwości przejęcia kontroli nad systemem. Jeśli zwykłemu użytkownikowi uda się tak zawiesić program (którego właścicielem jest użytkownik root i który ma ustawioną flagę suid lub sgid), aby dostać się do powłoki to otrzyma on prawa właściciela programu (czyli w tym przypadku użytkownika root) co stanowi ogromne zagrożenie dla systemu. Dlatego należy z dużym rozsądkiem używać tych flag. Nadawanie plikom suid lub sgid wygląda następująco: suid chmod u+s nazwa_plku chmod 2*** nazwa_pliku sgid chmod g+s nazwa_pliku chmod 4*** nazwa_pliku suid i sgid chmod 6*** nazwa_pliku gdzie *** oznacza dowolne prawa dla właściciela, grupy i innych użytkowników. Flaga suid w listingach plików reprezentowana jest przez literkę s w prawach dla właściciela pliku : rws r-x r-x Flaga sgid w listingach plików reprezentowana jest przez literkę s w prawach dla grupy: rwx r-s r-x sticky bit Dla pliku ustawienie sticky bitu oznacza, że program, który on przechowuje będzie po jego zakończeniu nadal przechowywany w pamięci komputera. Dla katalogów sticky bit oznacza, że tylko właściciel może go usunąć mimo ustawienia praw na przykład na 777. Ustawienie sticky bitu dla plików wygląda następująco: chmod 1*** nazwa_pliku_katalogu chmod +t nazwa_pliku_katalogu gdzie *** oznacza dowolne prawa dla właściciela, grupy i innych użytkowników. Reprezentantem tego bitu w listingach katalogów jest literka t w sekcji dotyczącej reszty użytkowników : rwx r-x r-t W pierwszej kolumnie po wyświetleniu dodatkowych informacji o pliku poleceniem ls –l widzieliśmy już opcje – oraz d, teraz przedstawię jeszcze możliwych znaków i ich oznaczenia: - - plik d - katalog p - named pipe (łącze nazwane) - szukaj w /tmp - tam występuje najczęściej l - link (dowiązanie symboliczne, link miękki) s - socket (gniazdo) - czasem bywa w /tmp c - char device (urządzenie znakowe) - szukaj w /dev b - block device (urządzenie blokowe) - szukaj w /dev Zadania 1) Stworzyć katalog o nazwie katalog, w katalogu utworzyć plik o nazwie plik. Sprawdzić poleceniem mv czy na pewno da się zmienić nazwy pliku na plik1. Jeśli tak to zmienić uprawnienia do katalogu tak aby nie można było zmienić nazwy pliku. Sprawdzić poleceniem mv czy na pewno nie da się zmienić nazwy pliku. 2) Mamy katalog o nazwie katalog z ustawionymi uprawnieniami jak w zadaniu 1), czy możemy teraz stworzyć w nim kolejny katalog np. o nazwie a? 3) Mamy katalog o nazwie katalog z ustawionymi uprawnieniami jak w zadaniu 1), co należy zrobić żeby przestało nam działać polecenie ls –l , a co aby przestało działać samo ls? Czy dodanie prawa do zapisywania pozwoli na stworzenie katalogu? 4) Stworzyć katalog kat1 w katalogu użytkownika, na którego możemy się zalogować z poziomu roota, wyświetlić dokładne informacje o tym katalogu. Zalogować się na użytkowanika (jeśli nie mamy to stworzyć), następnie sprawdzić czy możemy utworzyć jakiś plik/katalog w tym katalogu kat1? Co można zrobić aby mieć możliwość jeśli takiej nie mamy lub co zrobić abyśmy nie mieli gdy taką mamy? Polecenie chown pozwala na zmianę właściciela pliku, lub też grupy właścicielskiej do pliku lub katalogu. Polecenie to może być wykonywane tylko z poziomu roota lub z jego uprawnieniami poprzedzone poleceniem sudo. Składnia tego chown właściciel plik chown właściciel:grupa plik Do zmiany grupy pliku służy polecenie chgrp chgrp gurpa plik Zadania 1) Zmienić właściciela do katalogu katalog i sprawdzić która teraz trójka uprawnień nam odpowiada. 2) Zmienić grupę właścicielską do pliku na grupę użytkownika, na którego możemy się logować w systemie, a właściciela na root, odebrać wszystkie prawa pozostałym i sprawdzić jakie uprawnienia ma nasz użytkownik. Dokładnie opisać uprawnienia, co może zrobić, a czego nie sprawdzić fizycznie czy mieliśmy racje. 3) Czy zadanie 4) z poprzedniej puli zadań da się zrobić korzystając z jednego, a może obu poznanych poleceń, jeśli tak to wykonaj na wszystkie możliwe sposoby. Tail i head tail -3 [plik] -c ilosc wypisuje ostatnie ilosc bajtow z plikow -q nigdy nie wypisuje naglowkow z nazwami plikow -v wypisuje nagłówki z nazwami plików head -c50 [plik] -c ilość wypisuje pierwsze ilość bajtów z plików -q nigdy nie wypisuje nagłówków z nazwami plików -v wypisuje nagłówki z nazwami plików potoki, przekierowania polecenie1 | polecenie2 polecenie1 > plik polecenie >> plik polecenie 2> plik – przekierowanie wyjścia dla błędów Zadania 1.) Wybrać 3 pierwsze wiersze z pliku /etc/passwd i wynik zapisać do pliku 2.) Do tak utworzonego pliku dopisać ostatnie 4 wiersz z pliku /etc/passwd 3.) Wykonać polecenie: cat /etc/passswd (zwraca błąd), a następnie polecenie: cat /etc/passwd 2> blad i zobaczyc treść pliku błąd 4.) Wybrać trzeci od końca login użytkownika z pliku /etc/passwd 5.) Wybrać 4 od końca login użytkownika z pliku /etc/passwd dla posortowanego pliku po 5 polu i numerycznie.