443


Lekcja 7

Zarządzanie dostępem do plików, procesami i drukowaniem

Celem zajęć jest zapoznanie słuchaczy z systemem zabezpieczeń dostępu do plików i katalogów, zarządzaniem procesami oraz wydrukiem danych.

  1. Prawa dostępu do plików i katalogów

W lekcji 2 przedstawiono prawa dostępu do plików i katalogów, które są ważnym elementem systemu bezpieczeństwa w Unixie. Właściciel pliku lub katalogu ustala kto i w jakim zakresie może posiadać dostęp do tworzonych przez niego katalogów i plików. Wyróżniamy trzy poziomy bezpieczeństwa: to, co może zrobić właściciel, grupa, do której należy właściciel oraz wszyscy pozostali użytkownicy Komenda ls z parametrem -l wyświetla prawa dostępu w następującej formie:

0x01 graphic

Prawa dostępu do plików i katalogów można zmieniać przy użyciu komendy chmod. W poleceniu tym do określania praw dostępu można wykorzystywać dwa formaty: liczbowy i symboliczny.

Format liczbowy odpowiada potęgom cyfry 2 przypisanym do prawa odczytu, zapisu i wykonywania zgodnie ze wzorcem:

prawo wykonania x => 20 = 1

prawo zapisu w => 21 = 2

prawo odczytu r => 22 = 4

W sumie uzyskujemy 8 możliwych kombinacji, które zawarto w tabeli poniżej:

zapis liczbowy

reprezentacja znakowa

opis

0

- - -

brak praw dostępu

1

- - x

tylko wykonywanie

2

- w -

tylko zapis

3

- w x

zapis i wykonywanie

4

r - -

tylko odczyt

5

r - x

odczyt i wykonywanie

6

r w -

odczyt i zapis

7

r w x

wszystkie prawa (odczyt, zapis i wykonywanie)

chmod prawa_właściciela prawa_grupy prawa_pozostałych plik

np. komenda: chmod 740 pismo

nadaje właścicielowi wszystkie prawa, jego grupie tylko możliwość odczytu, a pozostałym użytkownikom nie daje żadnych praw do pliku pismo.

W formacie symbolicznym posługujemy się oznaczeniami użytkowników oraz praw dostępu:

użytkownicy: u - właściciel (user)

g - grupa (group)

o - pozostali (other)

a - wszyscy (all)

przydział praw: = ustalenie praw dostępu

+ dodanie prawa dostępu

- zabranie prawa dostępu

prawa dostępu: r - odczyt (read)

w - zapis (write)

x - wykonanie (executable)

chmod komu przydzielić jakie_prawo plik

np. komenda: chmod u+x,o-rw pismo

dodaje właścicielowi prawo wykonania i zabiera prawo odczytu i modyfikacji dla pliku pismo

Zapis liczbowy stosuje się najczęściej przy ustalaniu praw, a zapis symboliczny przy ich zmianie.

Tworząc nowy plik lub katalog przydzielane są mu standardowe prawa dostępu zgodnie z maska zadeklarowaną komendą umask. Jest to liczba składająca się z trzech cyfr od 0 do 7, które odjęte od wzorca dla plików (666) lub katalogów (777) określają prawa dostępu do nowo zakładanych obiektów. Standardowo umask posiada wartość 022 co oznacza, że nowo tworzone pliki i katalogi maja następujące prawa dostępu:

pliki => 666 - 022 = 644 czyli rw- r-- r--

katalogi => 777 - 022 = 755 czyli rwx r-x r-x

Ustalenie wartości umask na 027 spowoduje ustalenie praw dla pliku 640 i katalogu 750.

  1. Wielozadaniowość

Procesem będziemy nazywać każdy program będący w trakcie wykonywania. System Unix został tak zaprojektowany, aby mógł jednocześnie obsługiwać wiele procesów. Jednak każdy uruchomiony proces wykorzystuje określoną część mocy procesora i zasobów komputera. Określenie równoczesne wykonywanie zadań oznacza tak naprawdę, że wykonywanie zadań przeplata się w czasie, na tyle szybko, że użytkownicy mają wrażenie jednoczesnej pracy. Użytkownik uruchamiając program nie musi więc martwić się o to, co w tym czasie robią w systemie inni użytkownicy.

Każdy utworzony proces otrzymuje po uruchomieniu swój unikatowy numer, nazywany identyfikatorem procesu PID (process identification number) oraz ma dostęp do identyfikatora procesu nadrzędnego, który go wywołał: PPID (parent process identification number). Proces nadrzędny nazywany jest również procesem macierzystym lub rodzicem. Procesy aktywowane z danego terminala przez ten sam shell stanowią tzw. grupę procesów o identyfikatorze PGID (process group identification number).

Każdy proces ma przydzielony priorytet, według którego przydzielane są mu kwanty czasu procesora, oraz ustalana kolejność uzyskania dostępu do procesora. Ustalanie priorytetów procesów realizowane jest dynamicznie przez system i określane liczbowo. Większa wartości określają niższy priorytet.

Listę uaktywnionych procesów i ich priorytet można obejrzeć dzięki komendzie ps.

Shell wywołując nowy proces standardowo czeka na jego zakończenie, blokując użytkownikowi wydawanie kolejnych poleceń (patrz lekcja 1). Tak uruchomiony proces nazywamy pierwszoplanowym. Użytkownik może uruchomić program w tle, w charakterze programu drugoplanowego, dopisując przy wywołaniu polecenia znak & (ampersand). Każdy uruchomiany w tle proces oprócz numeru PID ma przydzielony dodatkowo JID (job identification number) wyświetlany w nawiasie kwadratowym. Domyślnym wyjściem standardowym procesów drugoplanowych jest plik pusty /dev/null. Do przerwania procesów pierwszoplanowych służy kombinacja klawiszy Ctrl+C (sygnał 2), a do zakończenia kombinacja Ctrl+\ (sygnał 3). Do zatrzymania procesów drugoplanowych służy komenda kill. Listę aktywnych procesów można obejrzeć wydając komendę jobs (są to procesy drugoplanowe lub zatrzymane pierwszoplanowe). Przełączanie pomiędzy wykonywaniem procesów jako pierwszo- i drugoplanowych umożliwiają komendy fg i bg.

Procesy, które po uruchomieniu stale rezydują w pamięci operacyjnej nazywane są demonami (daemons). Uruchomione, pracują w tle, informując użytkownika o zaistniałych zdarzeniach, które są przez nie kontrolowane. Istnieją demony obsługi poczty czy drukarek. Większość demonów uruchamiana jest w chwili startu systemu i zapewnia usługi wszystkim użytkownikom.

  1. Drukowanie

System Unix umożliwia wydruk na drukarkach podłączonych bezpośrednio do komputera, drukarkach zainstalowanych na komputerach będących serwerami wydruku (print serwer) lub podłączonych bezpośrednio do sieci przy pomocy karty sieciowej. Unix preferuje drukarki z obsługą języka pstscript. Tekst, który ma zostać wydrukowany, zostaje najpierw zapisany do pliku systemowego, nazywanego plikiem spool. Każde drukowane zadanie ma swój własny plik spool. Polecenie drukowania zostaje więc szybko zakończone, gdyż samo zapisanie do pliku trwa bardzo krótko. Ten proces nazywa się tworzeniem kolejki zadań dla drukarki (quering). Pracujący w tle demon drukarkowy ustalający kolejność zadań, czeka aż drukarka zwolni się, po czym drukuje kolejne przeznaczone do tego zadanie. Wydruk dokumentu umożliwia komenda lp, a jego wcześniejszą obróbkę (stronicowanie, ustalenie wielkości marginesów, numeracja stron, definiowanie nagłówków) polecenie pr.

  1. Lista komend

chmod - zmiana prawa dostępu do plików i katalogów

chmod prawa plik(i) lub katalog(i) - ustala nowe prawa dostępu do wybranego pliku lub katalogu

prawa dostępu określa się numerycznie:

odczyt (read) =4 + zapis (write) =2 + wykonanie (execute) =1

mnożąc dla poszczególnych użytkowników:

właściciel (owner) *100 + grupa właściciela (group) *10 + pozostali * 1

np. prawa wszystkie dla właściciela, odczyt i wykonanie dla grupy, nic dla pozostałych => 100 * (4+2+1) + 10 * (4+1) + 1* (0) = 750

chmod komu jakie prawa plik lub katalog
prawa dostępu określa się symbolicznie:

komu:

u -właściciel (user), g -grupa (group), o -pozostali (other) , a -wszyscy (all)

operacja:

+ dodanie, - zabranie, = ustalenie

prawa:

r -odczyt (read), w -zapis (write), x -wykonanie (execute)

chown - zmiana właściciela pliku

chown nowy_właściciel plik(i) lub katalog(i) - ustalenie nowego właściciela dla wybranych plików lub katalogów

umask - ustalenie praw dostępu do tworzonych plików i katalogów

umask maska - ustawia nową maskę praw dostępu do nowo tworzonych plików i katalogów

opis

ps - wyświetlenie informacji o stanie procesów

ps -opcja - wyświetlenie wybranych procesów i informacji o nich zgodnie z opcją

ps - wyświetlenie informacji o procesach uruchomionych z tego terminala

komenda ps wyświetla informacje w następujących kolumnach:

UID -identyfikator użytkownika;

PID -identyfikator procesu (process identification);

PPID -identyfikator procesu nadrzędnego;

STIME -czas uaktywnienia się procesu;

TTY -identyfikator terminala, z którego uruchomiono proces;

TIME -czas wykonywania procesy (zajętości procesora);

COMMAND -nazwa polecenia, który uruchomił proces.

wybrane opcje:

-e - wyświetlenie listy wszystkich procesów

-f - wyświetlenie pełnej informacji o procesach

nohup - wykonywanie polecenia w tle mimo wylogowania się użytkownika

nohup polecenie & - uruchomienie polecenia drugoplanowego, którego wykonywanie nie zakończy się po wylogowaniu użytkownika. Jeżeli nie zostanie określone standardowe wyjście wynik zostanie zapisany w pliku nohup.out.

jobs - wyświetla listę zadań pracujących w tle

komenda jobs wyświetla następujące informacje:

fg - przeniesienie zadania drugoplanowego do wykonywania na pierwszym planie

fg %numer_zadania_drugoplanowego - przenosi zadanie drugoplanowe o podanym numerze do wykonywania na pierwszym planie

numer zadania drugoplanowego odczytujemy po wydaniu komendy jobs, umieszczony jest w nawiasach kwadratowych.

bg - przeniesienie wstrzymanego zadania pierwszoplanowego do wykonywania na drugim planie

bg %numer_wstrzymanego_zadania - przenosi wstrzymane zadanie o podanym numerze do wykonywania w tle

numer wstrzymanego zadania odczytujemy po wydaniu komendy jobs, umieszczony jest w nawiasach kwadratowych.

kill - zakończenie wykonania procesu

kill PID - kończy proces o podanym identyfikatorze

kill -9 PID - bezwarunkowo przerywa proces o podanym identyfikatorze

komenda stosowana do przerywania procesów drugoplanowych, rezydentnych (demonów), procesów uruchomionych z innego terminala. Identyfikator procesu należy odczytać komendą ps

lp - wydruk plików na drukarce

lp -opcje plik(i) - drukuje wyszczególnione pliki na drukarce domyślnej

wybrane opcje:

-d nazwa_drukarki - wydruk na określonej drukarce

-m - powiadomienie użytkownika o zakończeniu wydruku poprzez pocztę systemową (mailx)

-w - wyświetlenie informacji o zakończeniu procesu wydruku

-n liczba - określenie liczby kopii

lpstat - wyświetlenie informacji o stanie drukarek podłączonych do systemu

lpstat - wyświetla kolejkę zadań do wydrukowania

wybrane opcje:

-p - wyświetla dostępne drukarki i ich opisy

cancel - usunięcie zadania drukowania z kolejki

cancel drukarka nr_zadania - usuwa zadanie o podanym numerze z kolejki wydruku do wyszczególnionej drukarki

  1. Ćwiczenia

Nawiąż połączenie z serwerem solaris.wlodkowic.pl i zaloguj się swoim nazwiskiem i hasłem (patrz lekcja wprowadzająca). System powinien wyświetlić znak zgłoszenia shella Korna - $.

Wykonaj zadania z bieżącej lekcji:

  1. wyświetl w formie długiej zawartość katalogu /dane/skrypty, sprawdź właściciela i prawa dostępu do znajdujących się tam plików

ls -la /dane/skrypty

W katalogu /dane/skrypty znajdują się dwa pliki, których właścicielem jest użytkownik robert. Oba mają identyczne prawa dostępu rwxr--r-x. Oznaczają one, że użytkownik robert ma wszystkie prawa do tych plików, członkowie grupy sysadmin tylko prawo ich odczytu, a pozostali użytkownicy mogą przeglądać i uruchamiać te dwa skrypty.

  1. załóż w swoim katalogu domowym katalog kradzież i przekopiuj do niego plik kwadrat z katalogu /dane/skrypty, sprawdź właściciela i prawa dostępu

mkdir kradziez

cd kradziez

cp /dane/skrypty/kwadrat .

ls -l

Prawa dostępu nie zmieniły się ale właścicielem pliku jesteś teraz Ty

  1. wyświetl zawartość pliku kwadrat

cat kwadrat

  1. dopisz w pierwszej linii pliku komendę clear

vi kwadrat

[i] [Enter] [Esc] [k] [i] clear [Esc] [:] wq [Enter]

  1. uruchom program kwadrat

kwadrat

  1. zmień prawa dostępu do pliku kwadrat na tylko wykonanie dla wszystkich użytkowników systemu

chmod 111 kwadrat

lub

chmod a=x kwadrat

ls -l

  1. spróbuj wyświetlić zawartość pliku kwadrat i dopisać w nim na końcu linię echo „koniec programu”

cat kwadrat

cat: cannot open kwadrat - nie masz prawa odczytu pliku kwadrat

vi kwadrat

"kwadrat" Permission denied - nie masz prawa zapisu pliku kwadrat

wyjdź z programu vi [Esc] [:] q!

  1. uruchom program kwadrat

kwadrat

ksh: kwadrat: cannot open - mimo, że posiadasz prawo wykonania pliku kwadrat to nie masz prawa odczytu, więc nie da się uruchomić pliku kwadrat

  1. dodaj prawo odczytu dla wszystkich i odbierz prawo wykonywania dla pozostałych użytkowników. Sprawdź, czy możesz uruchomić program kwadrat?

chmod a+r,o-x kwadrat

ls -l

kwadrat

  1. skasuj plik kwadrat

rm kwadrat

rm: kwadrat: override protection 554 (yes/no) ?

Mimo, że nie posiadasz prawa zapisu pliku kwadrat to posiadasz prawo zapisu w katalogu kradziez (sprawdź później -> ls -ld .). Po podaniu odpowiedzi y usuniesz plik kwadrat

ls -l

  1. załóż nowy katalog o nazwie kat1 i nowy plik o nazwie plik1, sprawdź prawa dostępu do obu obiektów

mkdir kat1

touch plik1

ls -l

katalog kat1 ma prawa dostępu rwxr-xr-x

plik plik1 ma prawa dostępu rw-r--r--

  1. wyświetl maskę praw dostępu dla nowo zakładanych plików i katalogów

umask

standardowa maska wynosi 022

prawa dostępu do katalogów -> 777-022 = 755 (rwxr-xr-x)

prawa dostępu do plików -> 666-022 = 644 (rw-r--r--)

  1. zmień maskę praw dostępu na 077

umask 077

  1. załóż katalog kat2 i plik plik2, sprawdź ich prawa dostępu

mkdir kat2

touch plik2

ls -l

zgodnie z nową maską prawa dostępu zostały ograniczone dla grupy oraz pozostałych użytkowników systemu

kat2 -> rwx------ (bo 777 - 077 = 700)

plik2 -> rw------- (bo 666 - 077 = 600)

  1. sprawdź jakie zadania uruchomiłeś w systemie

ps

powinno się pojawić tylko jedno aktualnie wykonywane zadanie - shell korna ksh

  1. sprawdź wszystkie zadania uruchomione w systemie w formie długiej

ps -ef | more

  1. Chcesz zapisać w pliku "wszystko" nazwy wszystkich plików z całego katalogu głównego, łącznie z podkatalogami. Wykonanie tej komendy trwa bardzo długo i w tym czasie nie będziesz mógł wykonywać innych zadań. Najlepiej byłoby uruchomić ją w tle. Uwaga, nie masz dostępu do niektórych katalogów co będzie generowało komunikaty o błędach, skieruj je do pliku "bledy".

ls -Ra / >wszystko 2>bledy &

wyświetlone zostaną numery: w nawiasie kwadratowym numer zadania wykonywanego w tle [1] oraz numer procesu PID np. 8346

  1. wyświetl swoje zadania wykonywane przez system

ps

powinny pojawić się przynajmniej dwa procesy: shell w którym pracujesz ksh oraz wykonywane w tle zadanie ls

numer procesu nadrzędnego (PPID) dla komendy ls powinien zgadzać się z numerem procesu (PID) shela ksh

  1. wyświetl listę pracujących w systemie zadań

jobs

[1] +Running

wyświetlone zostanie jeden pracujący proces [1], komenda ls

  1. przenieś wykonywanie polecenia ls z tła na pierwszy plan

fg %1

treść polecenia pojawiła się na ekranie, ale zniknął znak zgłoszenia shella, musisz poczekać na wykonanie się komendy do końca

  1. przerwij wykonywanie się polecenia ls

Ctrl + Z

[1] + Stopped

zadanie numer 1 zostało wstrzymane

  1. skieruj do wykonywania na drugim planie zatrzymane polecenie ls

bg %1

[1] + Running

wykonywanie zadania jest wznowione w tle, pojawia się znak zgłoszenia shella $

  1. sprawdź uruchomione procesy, odczytaj PID (numer procesu) polecenia ls

ps

jobs

PID ...................

  1. zakończ proces zapisu nazw wszystkich plików do plku

kill numer_procesu PID

ps

proces został zakończony

  1. sprawdź, czy w systemie nie został jakiś Twój nie zakończony proces pochodzący z poprzednich logowań w systemie, jeżeli tak zakończ go

ps -ef | grep nazwa_logowania

ewentualnie

kill PID

  1. rozłącz się z serwerem likwidując Swój jedyny proces czyli shell ksh

ps

odczytaj numer procesu ksh PID =.............

kill -9 PID



Wyszukiwarka

Podobne podstrony:
443
ploch 443
kpk, ART 443 KPK, 2000
443
443
443
dw 443 a type1 schleifer dewalt
442 443
443
PSYCHOLOGIA PAMIĘCI I UCZENIA ćw nr 3 Zniekształcenia pamięci Jagodzińska [436 443]
443
443
443 ac
RZUCANIE GRANATAMI R CZN[443], KONSPEKTY MON, Strzeleckie
443 , PEDAGOGIKA RESOCJALIZACYJNA

więcej podobnych podstron