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.