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