6. Linux - prawa dostępu do plików i katalogów, edytor vi
Transkrypt
6. Linux - prawa dostępu do plików i katalogów, edytor vi
6. Linux - prawa dostępu do plików i katalogów, edytor vi 6.1. Zmiana praw dostępu Prawa dostępu do plików i katalogów są jednymi z najważniejszych mechanizmów bezpieczeństwa systemu. Uniemożliwiają one lub umożliwiają innym użytkownikom przeglądanie, zmiany zawartości lub uruchomienia naszych zasobów. Prawa dostępu podzielone są na trzy sekcje: • • • właściciel pliku lub katalogu grupa związana z plikiem lub katalogiem wszyscy inni użytkownicy systemu Polecenie ls -l wyświetla szczegółową listę plików i katalogów wraz z ich prawami dostępu: ls- l drwxr-x--- 7 student users 512 Jul 11 22:47 katalog1 wyjaśnienie tego zapisu jest następujące: identyfikator typu: - zwykły plik b specjalny plik blokowy c specjalny plik znakowy d katalog l link symboliczny p potok s gniazdo prawa dostępu: prawo plik katalog r w x czytanie zawartości zmiany zawartości uruchomienie przeszukiwania zawartości zmiany zawartości przejścia do tego katalogu Systemy operacyjne - Linux - prawa dostępu do plików i katalogów, edytor vi 1 Prawa przypisywane plikom lub katalogom mogą być podawane na dwa sposoby: • • systemem kodów numerycznych : 4 2 1 systemem kodów znakowych : r w x Oto kilka przykładów na porównanie tych systemów: prawa dostępu zapis numeryczny zapis znakowy tylko do czytania 4 r-- tylko do pisania 2 -w- tylko do uruchamiania 1 --x do czytania i pisania 6 rw- do czytania i uruchamiania 5 r-x czytania, pisania i uruchamiania 7 rwx Aby obliczyć zapis numeryczny odpowiedniego prawa dostępu należy posłużyć się przeliczaniem bitowym. Każde prawo utożsamiamy z jednym bitem. Jeśli jest ustawione to odpowiada mu wartość 1, jeśli nie jest ustawione to odpowiada mu wartość 0. Zatem układowi rw- będzie odpowiadała następująca liczba w zapisie dwójkowym: 110, zaś układowi -w-, liczba 010. Następnie liczbę tą przeliczamy na liczbę w systemie dziesiętnym i uzyskujemy w ten sposób odpowiedni zapis numeryczny. Polecenie służące do zmian praw dostępu to chmod. Przykłady: Prawo do czytania dla właściciela pliku chmod 400 nazwa_pliku chmod u+r nazwa_pliku Wszystkie prawa dla właściciela pliku i prawo do czytania dla grupy chmod 740 nazwa_pliku chmod u+rwx,g+r nazwa_pliku W poleceniu chmod z wykorzystaniem systemu kodów numerycznych pierwsza liczba oznacza prawa dla właściciela pliku, druga dla grupy, trzecia dla pozostałych. W poleceniu chmod z wykorzystaniem systemu kodów znakowych u oznacza modyfikację praw dla właściciela pliku, g - modyfikację praw dla grupy, o - modyfikację prawa dla pozostałych, a - modyfikację praw dla wszystkich, + - nadanie prawa, - - usunięcie prawa, = - nadanie nowych praw, bez względu na to jakie były wcześniej, r,w,x - Systemy operacyjne - Linux - prawa dostępu do plików i katalogów, edytor vi 2 odpowiednie prawa. Zatem zapis u+rwx,g=r będzie oznaczał nadanie wszystkich praw dla właściciela pliku i nadanie tylko prawa czytania dla grupy. 6.2. Domyślne prawa dostępu przy tworzeniu plików i katalogów 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 będzie wartością dla umask: 777 -644 ------133 umask 133 5.3. 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. 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-a lub sgid-a wygląda następująco: suid : chmod u+s nazwa_plku chmod 4*** nazwa_pliku sgid : chmod g+s nazwa_pliku chmod 2*** nazwa_pliku suid i sgid : Systemy operacyjne - Linux - prawa dostępu do plików i katalogów, edytor vi 3 chmod 6*** nazwa_pliku *** - tu wstawiamy dowolne prawa dla właściciela, grupy i innych użytkowników. Flaga suid w listingach plików reprezentowana jest przez literkę s lub S w prawach dla właściciela pliku: - rws r-x r-x Flaga sgid w listingach plików reprezentowana jest przez literkę s lub S w prawach dla grupy : - rwx r-s r-x Przykładowe zastosowanie: kiedy chcemy zmienić hasło (za pomocą polecenia passwd), stajemy się na chwilę administratorem. 6.4. 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 *** - tu wstawiamy dowolne prawa dla właściciela, grupy i innych użytkowników. Reprezentantem tego bitu w listingach katalogów jest literka t lub T w sekcji dotyczącej reszty użytkowników: - rwx r-x r-t 6.5. Edytor vi W każdej implementacji Unixa znajduje się edytor vi. Dla użytkowników przyzwyczajonych do pracy z programami na komputerach osobistych, edytor ten jest dość uciążliwy w używaniu. Dlatego do celów redagowania małych plików, np. listów polecany jest pełnoekranowy edytor pico. Na dole ekranu prezentuje on zestaw dostępnych komend, co znacznie ułatwia prace. Pico nie jest edytorem standardowym i nie znajduje się w każdej instalacji Unixa. Jest rozpowszechniany wraz z programem do obsługi poczty elektronicznej o nazwie pine. W związku z tym, ze edytor vi jest standardowym edytorem w systemie, poniżej przedstawiono w skrócie tryby pracy i ważniejsze komendy tego edytora. Systemy operacyjne - Linux - prawa dostępu do plików i katalogów, edytor vi 4 Edytor vi pracuje w dwóch trybach: • tryb poleceń - każde wciśniecie klawisza interpretowane jest jako polecenie. W tym trybie pracy edytor jest ustawiany zaraz po uruchomieniu, np. vi dane.txt • tryb wprowadzania tekstu Dla potrzeb opisu komend przyjmuje się następujące definicje: • bieżąca linia – linia, w której jest kursor • bufor edytora – bufor przechowujący aktualnie edytowany tekst • bufor tymczasowy – bufor przechowujący tekst ostatnio usunięty, zmieniony lub kopiowany za pomocą komendy Y • bufory nazwane – bufory (do 26 równocześnie) oznaczone małymi literami od a do z, przechowujące ostatnio przesłany tam tekst. Większość komend edytora nie ukazuje się na ekranie podczas wprowadzania z klawiatury. Wykonują się one natychmiast po wpisaniu ostatniego znaku komendy, bez naciskania klawisza Enter. Wyjątek stanowią komendy poprzedzone: (dwukropkiem), wpisane w trybie poleceń. Wyświetlane są na dole ekranu i musza być zakończone naciśnięciem klawisza Enter. Edytor wywołuje się komenda vi nazwapliku, np. vi dane.txt. Po wywołaniu plik dane.txt zostaje skopiowany do bufora. Edytor vi ma jedna bardzo użyteczna cechę, której nie posiadają inne edytory, tj. możliwość odtworzenia edytowanego pliku, jeśli w trakcie edycji nastąpiła przerwa spowodowana, np. awaria systemu. Wywołuje się go wtedy z opcja vi -r nazwapliku. Ważniejsze komendy edytora vi: Operacje na plikach, zakończenie pracy: ZZ lub :x – wyjście z edytora z zapisaniem dokonanych poprawek do zbioru nazwapliku :w – zapisuje zmiany do zbioru nazwapliku :q! – wyjście z edytora bez zachowania poprawek :w nazwa – zapisuje zawartość bufora edytora do zbioru nazwa :x,yw nazwa – zapisuje linie o numerach od x do y do zbioru nazwa :e nazwa – ładuje zbiór nazwa do bufora edytora :e! – wymazuje dokonane modyfikacje i udostępnia ponownie ten sam zbiór do edycji :r nazwa – wczytuje zbiór nazwa za linie bieżącą Przejście do trybu wprowadzania tekstu: i – tekst wstawiany jest przed bieżącą pozycja kursora I – przesuwa kursor do początku linii bieżącej i umożliwia wstawianie tekstu od tej pozycji o – tworzy nowa linie poniżej bieżącej i umożliwia wprowadzanie tam tekstu O – tworzy nowa linie powyżej bieżącej i umożliwia wprowadzenie tam tekstu a – umożliwia wprowadzanie tekstu za bieżącą pozycja kursora A – przesuwa kursor na koniec linii bieżącej i umożliwia wprowadzanie tekstu od tej pozycji ESC - wyjście do trybu poleceń Systemy operacyjne - Linux - prawa dostępu do plików i katalogów, edytor vi 5 Tryb poleceń: W trybie poleceń wykonuje się komendy naciskając opisane niżej klawisze lub sekwencje klawiszy. Komendy można podzielić na kilka grup: Przesuwanie kursora: 0 – przesuwa kursor do pierwszego znaku w linii $ – przesuwa kursor do ostatniego znaku w linii b – przesuwa kursor w lewo o jedno słowo w – przesuwa kursor w prawo o jedno słowo + – przesuwa kursor do początku następnej linii - – przesuwa kursor do początku poprzedniej linii Enter – przesuwa kursor do początku następnej linii j – przesuwa kursor do następnej linii w tej samej kolumnie k – przesuwa kursor do poprzedniej linii w tej samej kolumnie 1G – przesuwa kursor do początku tekstu G – przesuwa kursor do początku ostatniej linii tekstu nG – przesuwa kursor do linii o numerze n { – przesuwa kursor do początku poprzedniego paragrafu } – przesuwa kursor do końca bieżącego, lub następnego paragrafu CTRL+f – przesuwa tekst o 1 ekran do przodu CTRL+b – przesuwa tekst o 1 ekran do tylu H – przesuwa kursor do górnego lewego rogu ekranu M – przesuwa kursor do środka ekranu L – przesuwa kursor do lewego dolnego rogu ekranu Kasowanie: x – usuwa 1 znak na bieżącej pozycji kursora nx – usuwa n znaków na prawo od bieżącej pozycji kursora X – usuwa 1 znak na lewo od bieżącej pozycji kursora nX – usuwa n znaków na lewo od bieżącej pozycji kursora D – usuwa znaki od bieżącej pozycji kursora do końca linii dd – usuwa linie bieżącą ndd – usuwa n linii począwszy od linii bieżącej d0 – usuwa znaki od początku linii bieżącej do pozycji kursora dH,dM,dL – usuwa znaki od pozycji kursora odpowiednio do góry, środka i dołu ekranu dG – usuwa znaki od linii bieżącej do końca zbioru d/ abcd Enter – usuwa znaki od bieżącej pozycji kursora do podanego ciągu znaków abcd Modyfikacje: r x – zamienia znak na pozycji kursora na znak x R text ESC – zamienia znaki od pozycji kursora na wpisywany text (nadpisuje) s text ESC – usuwa 1 znak na pozycji kursora i wstawia w to miejsce text cc text ESC – zamienia całą linie bieżącą na wpisywany text C text ESC – zamienia znaki od pozycji kursora do końca linii na wpisywany text c abcd Enter – pozwala zamienić znaki od pozycji kursora do zadanego ciągu znaków abcd i wprowadzić w to miejsce inny ciąg znaków wpisanych z klawiatury i zakończony naciśnięciem klawisza ESC ~ – na pozycji kursora zamienia literę małą na wielką i odwrotnie Systemy operacyjne - Linux - prawa dostępu do plików i katalogów, edytor vi 6 ddp – zamienia miejscami linie bieżącą z następną Przeszukiwanie tekstu: /abcd Enter – szuka (do przodu) ciągu znaków abcd od pozycji kursora do pierwszego znalezionego ciągu, lub do końca zbioru, a następnie od początku zbioru do linii bieżącej ? abcd Enter – szuka (do tylu) jak wyżej n lub N – szuka dalej w tym samym kierunku ( n), lub w przeciwnym ( N) : x, y s/ str1// str2/g – w liniach od x do y zamienia ciąg znaków str1 na str2 Przesuwanie tekstu do bufora tymczasowego: d, dd lub D – usuwają tekst do bufora tymczasowego zgodnie z opisem komend usuwających yy lub Y – kopiuje linie bieżąca do bufora tymczasowego nyy lub nY – kopiuje n linii do bufora tymczasowego, począwszy od linii bieżącej Odzyskiwanie tekstu z bufora tymczasowego i wstawienie go do zbioru: p – wstawia tekst z bufora tymczasowego za linie bieżącą P – wstawia tekst z bufora tymczasowego przed linie bieżącą Manipulowanie blokami tekstu oznakowanymi markerami: m x – (x- dowolna mała litera) oznakowuje markerem x miejsce w pliku wskazane kursorem ' x – powoduje powrót kursora do pozycji oznaczonej markerem x d' x – powoduje usuniecie bloku tekstu od linii oznaczonej markerem x do bieżącej pozycji kursora i przesłanie go do bufora tymczasowego :' a,' bm – kopiuje oznakowane linie od a do b za linie bieżącą :' a,' bd – usuwa oznakowane linie od a do b :' a,' bw nazwapliku – zapisuje oznakowane linie od a do b do nowego pliku nazwapliku :' a,w nazwapliku – zapisuje linie od a do linii bieżącej do nowego pliku nazwapliku :' a,' bw! nazwapliku – nadpisuje istniejący zbiór nazwapliku liniami a do b :' a,' bw>> nazwapliku – oznakowane linie od a do b dopisuje na koniec zbioru nazwapliku Przykłady operacji na buforach nazwanych (nazwa buforu poprzedzona jest podwójnym apostrofem: "): "a3dd – usuwa z tekstu trzy linie i przesyła je do bufora o nazwie a "ayy – kopiuje linie bieżącą do bufora o nazwie a "ap – wstawia zawartość bufora o nazwie a za linie bieżącą "aP – wstawia zawartość bufora o nazwie a przed linie bieżącą Inne użyteczne komendy: J – łączy dwie linie w jedna, tzn. dopisuje następną do linii bieżącej u – kasuje ostatnio wprowadzona modyfikacje . – powtarza ostatnio wprowadzona zmianę Zadania: 1. Utwórz następującą strukturę katalogów: Systemy operacyjne - Linux - prawa dostępu do plików i katalogów, edytor vi 7 2. Skopiuj wszystkie polecenia dwuliterowe zaczynające się od litery d z katalogu /bin do katalogu moje dokumenty 3. Utwórz w katalogu dom (za pomocą edytora vi) dwa pliki tekstowe plik1.txt oraz plik2.txt. Pliki te powinny zawierać przykładowy tekst. 4. Jakie uprawienie domyślne mają pliki1.txt oraz plik2.txt? 5. Ustaw dla pliku plik1.txt uprawnienia rw-r--rw-. 6. Ustaw dla pliku plik2.txt następujące uprawnienia właściciel: odczyt, zapis, wykonanie, grupa: tylko zapis, pozostali: odczyt, zapis. Jak to zrobić korzystając z zapisu numerycznego? 7. Wyświetl uprawnienia plików plik1.txt oraz plik2.txt. 8. Wydaj polecenie chmod 574 dla plik1.txt? Jakie zostaną nadane mu prawa? 9. Wydaj polecenie chmod u=rw, g=r, o-r dla pliku plik2.txt. Jakie zostaną nadane mu prawa? 10. Wyświetl uprawnienia plików plik1.txt oraz plik2.txt. Które polecenie (pkt. 8 i 9) nadpisuje uprawnienia, a które je modyfikuje? 11. Utwórz plik mojedane.txt (za pomocą edytora vi) w katalogu studia i umieść w nim swoje dane. 12. Załóż plik o nazwie email.txt (za pomocą edytora vi), w katalogu studia i umieść w nim swój adres e-mail. 13. Ustaw dla katalogu moje dokumenty i wszystkich podkatalogów następujące uprawnienia właściciel: odczyt, zapis, wykonanie, grupa: brak uprawnień, pozostali: odczyt, zapis. 14. Sprawdź, czy możesz nie nadawać plikowi żadnych praw? Systemy operacyjne - Linux - prawa dostępu do plików i katalogów, edytor vi 8