Upload
doankhanh
View
218
Download
0
Embed Size (px)
Citation preview
Akademia Oracle – Kariera Inżyniera
Systemy operacyjne UNIX/Solaris
2 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Spis treści Moduł 1: Wprowadzenie do systemu UNIX .............................................................................. 4
Interpretator poleceń .............................................................................................................. 4
Wybrane podstawowe polecenia ............................................................................................ 5
Logowanie się użytkownika w systemie ................................................................................ 7
Podstawowe powłoki .............................................................................................................. 9
Zadania do samodzielnego rozwiązania ............................................................................... 11
Moduł 2: Podstawowe operacje na plikach i katalogach ......................................................... 15
Wprowadzenie do struktury katalogów w Solaris 10 OS .................................................... 15
Wprowadzenie do podkatalogów ......................................................................................... 16
Komponenty plików ............................................................................................................. 18
Systemy plików .................................................................................................................... 19
Typy plików ......................................................................................................................... 20
Twarde linki (dowiązania twarde) ........................................................................................ 22
Zadania do samodzielnego rozwiązania ............................................................................... 22
Moduł 3: Prawa dostępu ........................................................................................................... 25
Polecenia: chmod, umask, chown, chgrp ............................................................................. 25
Zakładanie i przeglądanie plików tekstowych ..................................................................... 29
Listy ACL ............................................................................................................................. 30
Zadania do samodzielnego rozwiązania ............................................................................... 30
Moduł 4: Strumienie, potoki, sterowanie procesami ................................................................ 36
Strumienie i potoki ............................................................................................................... 36
Sterowanie procesami .......................................................................................................... 37
Sterowanie zadaniami przez używaną powłokę (procesy pierwszo i drugoplanowe) ......... 40
Wstrzymywanie procesów ................................................................................................... 41
Monitorowanie procesów ..................................................................................................... 42
Zadania do samodzielnego rozwiązania ............................................................................... 45
Moduł 5: Wybrane programy użytkowe – Edytor Vi .............................................................. 51
Wprowadzanie tekstu ........................................................................................................... 53
Poruszanie się w pliku .......................................................................................................... 53
Wstawianie innych plików ................................................................................................... 54
Przeszukiwanie i podmienianie ............................................................................................ 55
Zapisywanie plików ............................................................................................................. 57
3 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Zadania do samodzielnego rozwiązania ............................................................................... 58
Moduł 6: Administrowanie użytkownikami ............................................................................ 62
Użytkownicy ........................................................................................................................ 62
Dodawanie użytkowników ................................................................................................... 63
Modyfikowanie użytkowników ............................................................................................ 67
Usuwanie użytkowników ..................................................................................................... 69
Dodawanie grup ................................................................................................................... 70
Modyfikowanie grup ............................................................................................................ 72
Usuwanie grup ...................................................................................................................... 73
Zarządzanie hasłami ............................................................................................................. 74
Zadania do samodzielnego rozwiązania ............................................................................... 75
4 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Moduł 1: Wprowadzenie do systemu UNIX
Interpretator poleceń
Interpreter poleceń użytkownika, czyli inaczej powłoka. Powłoka pośredniczy
pomiędzy użytkownikiem a jadrem. Kiedy użytkownik rozpoczyna prace (loguje sie do
sytemu podając poprawny identyfikator konta i hasło) system operacyjny uruchamia program
powłoki, który pobiera polecenia do wykonania z klawiatury terminala użytkownika.
W systemie UNIX istnieje wiele rożnych powłok (np. sh, ksh, zsh, csh itd.).
Administrator przydziela każdemu użytkownikowi jego powłokę standardowa (uruchamiana
w chwili logowania sie do systemu); użytkownik może tez uruchomić dowolna powłokę
zainstalowana w systemie.
Shell interpretuje pierwsze słowo w wierszu polecenia, jako nazwę polecenia.
$ ls -l plik? "test?"
1. Shell wczytuje polecenie do wewnętrznego bufora.
ls -l plik? "test?"
Polecenie jest dzielone na części nazywane słowami. Shell określa znaczenie każdego słowa.
Rysunek 1. Podział polecenia
Shell szuka i przetwarza znaki specjalne.
Rysunek 2. Interpretacja poszczególnych elementów polecenia
5 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
W wyniku dokonanych przekształceń Shell zleca wykonanie polecenia o postaci:
ls -l plik1 plik2 plik3 test?
Shell "usypia" i czeka na zakończenie wykonywania polecenia.
Po zakończeniu wykonywania polecenia zgłasza gotowość przyjęcia nowego polecenia.
Wybrane podstawowe polecenia
Identyfikacja użytkownika
Konta użytkowników
• Każdy użytkownik systemu ma swój identyfikator (login id), za pomocą którego
wchodzi do systemu.
• Pełna informacja o użytkowniku obejmuje:
Rysunek 3. Pełne informacje o użytkowniku
Tabela 1. Opis poszczególnych elementów
Nazwa Opis
Identyfikator użytkownika (ang. login ID) - używany przy rozpoczynaniu pracy
Hasło (ang. password) - jest zakodowane
Numer użytkownika (ang. user identifier) - liczbowy identyfikator użytkownika w
systemie
Numer grupy użytkownika (ang. group identifier) - użytkownicy systemu podzieleni są
na grupy; grupa może mieć
podobne prawa dostępu do plików
Informacja o osobie dowolny tekst komentarza
Katalog domowy (ang. home directory) - w tym katalogu użytkownik znajdzie
się po rozpoczęciu sesji (pełna ścieżka)
Shell ten shell zostanie wywołany po rozpoczęciu sesji
6 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Sprawdzanie informacji o użytkowniku
$ id
uid=5214(agata) gid=11(users)
$ finger agata
Login name: agata In real life: Agata Kowalska
Directory: /home/agata Shell: /bin/ksh
Last login: Thu Mar 11 13:42 on ttyp2.
$ who am i
agata ttyp3 Mar 13 18:34
Kto pracuje w systemie -polecenie who
Składnia:
who [am i] Informacja o użytkownikach prowadzących sesję
Przykład:
Rysunek 4. Wykonanie polecenia
7 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Logowanie się użytkownika w systemie
Po uruchomieniu systemu, pojawia nam się okno wyboru systemu.
Rysunek 5. Okno wyboru systemu
Po wybraniu pierwszej pozycji, po chwili przechodzimy do okna logowania. W pierwszym
kroku wpisujemy nazwę użytkownika, a następnie przypisane mu hasło.
Rysunek 6. Logowanie
Dodatkowymi opcjami w okienku logowania jest wyświetlenie okna pomocy, w którym
opisane są wszystkie opcje okna logowania.
8 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 7. Okno pomocy
Dostępne opcje przedstawia poniższy rysunek
Rysunek 8. Ustawienia logowania
Pierwsza opcja dotyczy zmiany języka. Następna opcja Session służy do wybrania
preferowanego pulpitu użytkownika. Dostępne są tutaj:
Common Deskop Environment – dla CDE;
Java Deskop System – dla JDS;
User’s Last Deskop – ustawienia z poprzedniej sesji;
9 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
FailSafe Session – dla okna terminala.
Kolejne opcje to Command Line Login służąca do przełączenia do środowiska tekstowego
wiersza poleceń, oraz Reset Login Screen – ponowne uruchomienie serwera i okna
logowania.
Podstawowe powłoki
Powłoka (ang. shell) jest interfejsem między użytkownikiem a systemem
operacyjnym. Jej podstawową funkcją jest interpretacja i wykonanie poleceń użytkownika. W
celu ułatwienia wprowadzania często powtarzających się ciągów poleceń dla systemu
operacyjnego powłoka udostępnia język programowania poleceń użytkownika (będzie on
dalej nazywany językiem powłoki).
Jest to program, który pośredniczy między jądrem systemu (kernel), systemem plików
(file system) i programami usługowymi (utilities).
Rysunek 9. Powłoki - objaśnienie
Powłoka Korna
Powłoka Bourne’a
Jądro
Powłoka C
Jądro
Rysunek 10. Rozkład powłok w systemie UNIX
Podstawowe funkcje shella
• Przekazywanie sterowania do programu wybranego poleceniem użytkownika
• Wykonywanie wbudowanych poleceń
• Dostarczenie języka do pisania skryptów
10 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
• Ustawianie środowiska pracy
• Przywoływanie i edycja uprzednio wydanych poleceń
• Przeadresowywanie wejścia - wyjścia poleceń
• Generowanie nazw plików
• Umożliwienie łączenia poleceń w potok
• Umożliwienie przetwarzania w drugim planie (nie interakcyjnie)
Wszystkie dostępne powłoki:
/usr/bin/sh powłoka Bourne’a, standardowa powłoka systemu UNIX
/usr/bin/csh powłoka C, podobna do powłoki Bourne’a, lecz dodatkowo zawiera
rejestr wydawanych komend oraz wygodny sposób ponownego wydawania tych
samych komend.
/usr/bin/ksh powłoka Korna, łączy właściwości powłok Bourne’a i C.
/usr/xpg4/bin/sh powłoka POSIX (Single Unix Specification), podobny do Korn
Shell.a.
/usr/bin/bash Bourne Again
/usr/bin/tcsh TENEX C
/usr/bin/zsh
Dokumentacja powłok
man sh (1)
man ksh (1)
man csh (1)
http://docs.sun.com
http://www.opengroup.org
Najczęściej stosowanymi powłokami w różnych implementacjach systemu UNIX są:
powłoka Bourne'a (sh)
powłoka Korna (ksh)
powłoka C (csh)
Powłoka Korna
czyta jedna linie
dzieli dane na tokeny: słowa i operatory
dzieli dane na polecenia proste i złożone
określa kategorie gramatyczne tokenów
wykonuje podstawienia, oddzielnie na każdym słowie
11 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
traktuje otrzymane dane, jako listę pól: nazwę polecenia i argumenty
wykonuje przekierowania we/wy i usuwa je z listy pól
przekazując argumenty wykonuje
funkcje
polecenia wbudowane
programy z plików wykonywalnych
skrypty
opcjonalnie czeka na zakończenie wykonywania i odbiera status wyjściowy
Powłoka C (csh)
Jest jedną z systemowych powłok uniksowych. Została stworzona przez Billa Joya dla
systemu BSD. Nazwa C shell jest grą słów: dosłownie oznacza powłokę języka C,fonetycznie
da się to jednak odczytać sea shell, czyli muszelka.
Powłoka ta pochodzi od /bin/sh. Składnia języka zastosowanego w powłoce jest
bazowana na języku C. Powłoka C shell wniosła wiele ulepszeń w stosunku do sh, takich jak
m.in. aliasy i historia komend. Obecnie csh nie jest zbyt często wykorzystywana
Powłoka ksh
Ksh. Korn Shell-Stworzona przez Davida Korna z AT& t Bell Labs. Kompatybilna z
powłoką sh. Zawiera elementy powłoki csh, oraz kilka innych funkcji:Ksh (shell scripting);
ksh-powłoka systemowa· ksh-strona projektu. Awk; awk-jezyk przetwarzania wzorców. Sed;
sed-edytor strumieniowy, prosty język. 3)
Zadania do samodzielnego rozwiązania
Podstawy użytkowania systemu
1. Spróbuj rozpocząć pracę w systemie Unix celowo robiąc błędy:
• wpisz nieprawidłowy identyfikator (nazwę) użytkownika
• wpisz nieprawidłowe hasło
• użyj dużej litery w identyfikatorze
• wpisz wszystko prawidłowo
12 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 11. Logowanie na konto root
2. Zakończ pracę za pomocą polecenia exit. W jaki sposób poznasz, że zakończyłeś sesję?
logout
3. Rozpocznij nową sesję. Na jakim komputerze i z jakim systemem operacyjnym pracujesz?
who
4. Zmień hasło. Pamiętaj o wymaganiach, które musi spełniać.
Rysunek 12. Zmiana hasła
Wybrane podstawowe polecenia
1. Sprawdź jaki masz identyfikator liczbowy i do jakiej grupy należysz?
Rysunek 13. Polecenie id
2. Sprawdź ilu użytkowników aktualnie pracuje w systemie.
Rysunek 14. Polecenie who
3. Użyj polecenia finger, aby uzyskać informacje o użytkowniku user.
13 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 15. Wynik polecenia finger user
Powłoki systemowe
1. Sprawdź typ powłoki w której pracujesz.
Rysunek 16. Sprawdzanie powłoki trzema sposobami
14 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
2. Uruchom powłokę przeciwną do tej, w której pracujesz.
a. /usr/bin/csh shell C
b. /usr/old/bin/sh shell Bourne’a
c. /usr/bin/ksh shell Korna
d. /usr/bin/sh shell Posix
Rysunek 17. Zmiana powłoki
15 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Moduł 2: Podstawowe operacje na plikach i katalogach
Wprowadzenie do struktury katalogów w Solaris 10 OS
Katalog jest specjalnym rodzajem pliku, w którym jest zapisana informacja o innych
plikach (i/lub katalogach). Pozwala to utworzyć hierarchiczna, przypominająca drzewo,
strukturę katalogów z umieszczonymi w katalogach plikami.
Użytkownik wraz z kontem otrzymuje swój prywatny katalog (ang. HOME directory),
gdzie ma wszystkie prawa (może tworzyć, modyfikować i usuwać pliki/katalogi).
W chwili zalogowania sie do systemu prywatny katalog użytkownika staje sie katalogiem
roboczym (nazywanym także katalogiem aktualnym lub bieżącym - ang. working or current
directory). Katalog roboczy można zmienić przy użyciu komendy cd.
System plików UNIX’a jest hierarchiczną strukturą drzewa, rozpoczynającą się od
specjalnego katalogu szczytowego poziomu zwanego korzeniem (root) oraz oznaczanego ‘/’.
Każdy katalog może mieć wiele katalogów potomnych, ale tylko jeden katalog macierzysty.
Poniżej przedstawiono część typowej struktury drzewa katalogów dla systemu Unix,
natomiast na kolejnym obrazku widać przedstawioną pełną strukturę katalogów S.O. Solaris
10.
Rysunek 18.Część typowego drzewa struktury katalogów UNIX-a
Poniżej przedstawiono typowy układ katalogów systemu UNIX.
Tabela 2. Układ katalogów UNIX
Katalog Opis
/bin
/usr/bin
Komendy dla użytkowników
/etc
/usr/etc
/sbin
/usr/sbin
Pliki systemowe i konfiguracyjne, programy systemowe i narzędzia dla
administratora
/dev Pliki specjalne reprezentujące urządzenia
/tmp
/usr/tmp
Katalog na pliki tymczasowe
/lib
/usr/lib
Biblioteki, pliki nagłówkowe
/lost+found Pliki odzyskane podczas sprawdzania spójności systemu plików (brak na
powyższym obrazku, czynność nie była wykonywana)
16 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
/usr/local Dodatkowe oprogramowanie zainstalowane w systemie
/var Zmieniające sie pliki systemowe (logi, kolejki itp.)
/home Prywatne katalogi użytkowników
/mnt Montowanie napędów, takich jak dyski wirtualne czy też CD-ROMy i
napędy dyskietek
/proc Wirtualny katalog zawierający wirtualne pliki z informacjami o stanie
systemu i komputera
/boot Zawiera m. in. informacje dla programu uruchamiającego jądro
/vol Punkty montowania nośników wymiennych
/system Systemowy
/platform Moduły specyficzne dla platformy
/net Montowanie NFS
/opt Aplikacje (UFS, NFS)
/kernel Moduły jądra
/devices Pliki specjalne urządzeń (SPECFS)
/export Katalogi eksportowane (UFS,NFS)
Wprowadzenie do podkatalogów
Katalog /etc
Katalog /etc zawiera mnóstwo plików, znajdują się tam pliki konfigurujące sieci.
Niektóre z elementów zawartych w katalogu zostały opisane poniżej.
Tabela 3. Zawartość podkatalogu /etc
Katalog Opis
/etc/rc?.d Skrypty, lub katalogi zawierające skrypty uruchamiane podczas startu
systemu i zmiany poziomu pracy.
/etc/passwd Baza użytkowników zawierająca: nazwę, prawdziwą nazwę, katalog
domowy, zakodowane hasło i inne informacje dla każdego z
użytkowników systemu.
/etc/fdprm Tabela parametrów pracy stacji dyskietek
/etc/fstab Lista systemów plików montowanych automatycznie za pomocą mount
–a.
/etc/group Plik podobny do /etc/passwd, zawiera opis grup.
/etc/inittab Plik konfigurujący pracę programu init.
/etc/issue Wyświetlany przez getty przed pytaniem o login.
/etc/shadow Plik haseł na niektórych systemach - często hasła są przeniesione z pliku
/etc/passwd do /etc/shadow.
/etc/securetty Zawiera listę bezpiecznych terminali - terminali, przez które może się
zalogować Root
/etc/shells Lista zaufanych powłok.
Katalog /dev
17 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Katalog /dev zawiera pliki specjalne, które odpowiadają wszystkim urządzeniom. Nazwy
plików tworzone są według specjalnej konwencji. Pliki urządzeń tworzone są podczas
instalacji, później można je utworzyć za pomocą /dev/MAKEDEV, lub programu mknod.
Katalog /var
Zawiera pliki, które zmieniają się, np. wszelkie kolejki (poczty, newsów, drukarek, etc.),
logi, sformatowane pliki podręczne oraz pliki tymczasowe. Tradycyjnie wszystko, co znajduje
się w /var było umieszczane w /usr.
Tabela 4. Zawartość katalogu /var
Katalog Opis
/var/catman Sformatowane strony.
/var/lib Zmieniające się podczas pracy systemu pliki.
/var/local Zmieniające się dane programów zainstalowanych w /usr/local.
/var/lock Logi różnych programów, baza programu login
/var/log Plik podobny do /etc/passwd, zawiera opis grup.
/var/run Pliki, które zawierają informacje o systemie, które są aktualne podczas
jego działania.
/var/spool Katalog zawierający kolejki: poczty, drukowania i inne. Każda kolejka
posiada własny podkatalog wewnątrz /var/spodl.
/var/tmp Tymczasowe pliki, które są duże, lub mają istnieć przez dłuższy czas niż
byłoby to możliwe w katalogu /tmp.
Katalog /usr
System plików /usr jest zazwyczaj duży - większość programów znajduje się w jego
podkatalogach. Zazwyczaj wszystkie pliki w katalogu /usr przyszły wraz z daną dystrybucją,
programy instalowane ręcznie, z innych pakietów powinny być umieszczane w /usr/local.
Dzięki temu po aktualizacji, zmianie systemu nie musimy instalować (a przed tym np. ściągać
z sieci) dodatkowych programów. Niektóre z podkatalogów /usr opisane są poniżej.
Tabela 5. Zawartość katalogu /usr
Katalog Opis
/usr/X11R6 X Window System, wszystkie pliki.
/usr/X386 To samo, co /usr/X11R6.
/usr/bin Prawie wszystkie polecenia użytkownika. Niektóre polecenia znajdują
się w /bin i /usr/local/bin.
/usr/sbin Programy administratora, które nie muszą znajdować się na głównym
systemie plików, np. większość serwerów.
/usr/man
/usr/info
/usr/doc
Odpowiednio: strony podręcznika, dokumenty GNU Info i
dokumentacja w innych formatach.
18 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
/usr/include Pliki nagłówkowe dla języka C. Aktualnie powinny być w /usr/lib,
jednak tradycja jest silniejsza.
/usr/lib Niezmieniające się dane, zależne od architektury, niekiedy pliki
konfiguracyjne programów.
/usr/local Miejsce składowania oprogramowania (i konfiguracji) zainstalowanego
niezależnie od dystrybucji
Katalog /proc
System plików /proc jest całkowicie wirtualny - nie istnieje na dysku. Jest tworzony i
utrzymywany przez jądro w pamięci. Używany jest w celu dostarczenia informacji o systemie
(oryginalnie o działających procesach, stąd nazwa). Ważniejsze pozycje omówione są
poniżej.
Tabela 6. Zawartość katalogu /proc
Katalog Opis
/proc/1 Katalog zawierający informacje o procesie numer 1 (init ma zawsze
ten numer). Każdy proces posiada własny podkatalog o nazwie
przedstawiającej identyfikator procesu.
/proc/cpuinfo Informacje o procesorze: model, wydajność, itp.
/proc/devices Lista sterowników urządzeń, które są aktualnie skonfigurowane i
działające.
/proc/dma Aktualnie używane kanały DMA.
/proc/file systems Systemy plików aktualnie skonfigurowane.
/proc/interrupts Lista przerwań aktualnie wykorzystywanych, oraz ilość przerwań,
które zostały kiedykolwiek obsłużone.
/proc/ioports Używane porty We/Wy.
/proc/korce Obraz fizycznej pamięci systemu. Posiada rozmiar równy rozmiarowi
zainstalowanej pamięci, jednak na dysku nie zajmuje ani bajta.
(Uwaga: wpisy w katalogu /proc nie zajmują miejsca, chyba, że je
skopiujesz w inne miejsce).
/proc/kusg Wiadomości wysyłane przez jądro. Są one również przesyłane do
sysloga.
/proc/stat Statystyki systemu, np. ilość błędów stron od czasu startu, itd.
/proc/uptime Okres pracy systemu.
/proc/version Wersja jądra.
Komponenty plików
Każdy element przechowywany w systemie plików UNIX’a jest jednego z czterech typów:
19 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Tabela 7. Komponenty plików
Typ Opis
Zwykły plik Może zawierać tekst, dane lub informacje programu; nie
może zawierać innych plików lub katalogów. Nazwy
plików w UNIX’ie mogą zawierać dowolny znak
z wyjątkiem ‘/’ i mieć do 256 znaków długości (znaki ‘*’,
‘?’, ‘#’ i ‘&’ mogą mieć specjalne znaczenie dla powłoki
i nie należy ich używać w nazwach). Spacja w nazwie
powoduje niewygodę w korzystaniu, lepszy jest
podkreślnik ‘_’.
Katalog Zawiera pliki i inne katalogi.
Urządzenie Urządzenie jest traktowane przez UNIX’a jak plik, aby zapewnić
aplikacjom łatwość dostępu do niego. Są dwa rodzaje
urządzeń w UNIX’ie - blokowe, które wymieniają dane
w blokach (np. dysk twardy) i znakowe, które wymieniają
dane bajt po bajcie (np. modem).
Dowiązanie Wskazanie innego pliku. Są dwa rodzaje dowiązań.
Systemy plików
Systemy plików stosuje się dla różnych nośników danych, takich jak dyski, dyskietki,
a także w strumieniach danych, sieciach komputerowych, pamięciach. We współczesnych
systemach operacyjnych bezpośrednie operowanie na danych w plikach zarezerwowane jest
tylko dla systemu operacyjnego, aplikacje mają dostęp tylko do operacji na plikach i mają
zabroniony bezpośredni dostęp do nośnika danych.
Z formalnego punktu widzenia system plików to reguły umieszczania na nośniku
abstrakcyjnych danych oraz informacji umożliwiających przechowywanie tych danych, łatwy
i szybki dostęp do informacji o danych oraz do tych danych, manipulowania nimi, a także
sposobach usuwania ich.
W S.O. Unix wyróżniamy następujące typy:
dyskowe na HD, CD, DVD, flopy
20 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Służą do przechowywania danych użytkownika, programów aplikacyjnych lub
systemowych; dla Unixa plik taki stanowi sekwencję bajtów i jest często nazywany
strumieniem (stream)
sieciowe NFS
pseudo (wirtualne) dostęp do informacji jadra
VFS abstrakcyjny model systemu plików (wspólny interfejs jadra do systemów
plików)
Dyskowe systemy plików
o UFS podstawowy dyskowy
o PCFS DOS, Windows (FAT)
o HSFS High Sierra (CD)
o ISO9660 oficjalny CD
o Rock Ridge rozszerzenie ISO9660 z właściwościami UFS
o UDF CD, DVD
o ZFS zettabyte file system, skalowalny
Wirtualne systemy plików
o CACHEFS dla poprawy wydajności CD i NFS
o DOORFS międzyprocesowe wołania funkcji (doors)
o FIFOFS potoki nazwane (kolejki FIFO)
o FDFS dostęp poprzez deskryptory plików
o LOFS dostęp poprzez alternatywna ścieżkę
o MNTFS plik /etc/mnttab
o PROCFS dostęp do aktywnych procesów (/proc)
o SOCKFS gniazda
o DEVFS (SPECFS) dostęp do urządzeń (/devices)
o SWAPFS obszar wymiany
o TMPFS pliki tymczasowe (/tmp, /var/run)
o CTFS Contract FS (/system/contract),
o śledzenie procesów tworzących usługę
o OBJFS Object FS, stan modułów aktualnie załadowanych przez jadro
Typy plików
Plik posiada następujące atrybuty:
• typ (type) - określa czy jest to plik (zwykły, specjalny) czy katalog
• prawa dostępu - określają, kto może czytać, pisać lub wykonywać (permission,
mode)
• liczbę dołączonych nazw (number of links)
21 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
• informację o właścicielu i grupie (user login name, group name)
• rozmiar pliku (size) - w bajtach
• datę ostatniej modyfikacji (date & time of last modification)
• nazwę (filename)
Rysunek 19. Atrybuty pliku
Pierwszy znak opisu określa typ pliku:
Tabela 8. Atrybuty pliku
Oznaczenie Opis
d katalog (directory)
- zwykły plik (regular file)
l plik dowiązany symbolicznie (symbolically linked file)
c plik urządzenia znakowego (character device file)
b plik urządzenia blokowego (block device file)
p plik typu FIFO (named pipe)
22 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Twarde linki (dowiązania twarde)
Jest to umieszczona w systemie plików referencja wskazująca na konkretny, istniejący
wcześniej i-węzeł w obrębie tej samej partycji. Dla systemu operacyjnego, dowiązanie takie
jest po prostu dodatkową nazwą dla wskazywanego obiektu – plik z n dowiązaniami ma n
nazw.
Aby obiekt w systemie plików został skasowany, muszą zostać usunięte wszystkie
odwołujące się do niego dowiązania. Stąd funkcja systemowa do kasowania plików w języku
C nazywa się unlink – kasowany nie jest plik, ale jedynie jego nazwa oraz dekrementowany
jest wskaźnik dowiązań (dopiero, gdy spadnie on do zera, system automatycznie zwalnia
zajętą przestrzeń dyskową – zwalnia i-węzeł).
Domyślnie każdy folder w Unix-owych systemach plików posiada zaraz po
utworzeniu dwa dowiązania twarde – swoją nazwę (np. /home/fizyk/przykład) oraz wewnątrz
dowiązanie "."(kropka). Dodatkowo, jeśli folder zawiera pod foldery, to w każdym z nich
znajduje się dowiązanie ".."(dwie kropki) wskazujące na niego, jako folder nadrzędny.
Ze względu na możliwość tworzenia nieskończonych pętli przez tworzenie
nieprawidłowych dowiązań do katalogów, niektóre systemy nie pozwalają na tworzenie
nowych dowiązań tego typu lub pozwalają na to tylko użytkownikowi root.
Dowiązania sztywne( twarde linki) i symboliczne jednego pliku lub katalogu do drugiego
mogą być utworzone poleceniem ‘ln’.
$ ln <nazwa_pliku><nazwa_linku>
Polecenie to tworzy dla <nazwa_pliku> nowy wpis w katalogu o nazwie
<nazwa_linku> (tj. <nazwa_linku> jest dowiązaniem sztywnym). Oba wpisy do katalogu są
identyczne (i mają liczbę dowiązań 2). Jeżeli <nazwa_pliku> lub <nazwa_linku> ulegają
modyfikacji, zmiany zachodzą i w drugim pliku.
Zadania do samodzielnego rozwiązania
1. Które z podanych napisów mogą być nazwami katalogów:
Pogramy RAPORTY
moje dane list.*
bardzodluganazwakatalogu
Rysunek 20. Utworzenie katalogu
2. Sprawdź za pomocą polecenia mkdir co uzyskasz, gdy użyjesz każdego z napisów jako
nazwy katalogu.
a. Programy RAPORty -> 2 katalogi o podanych nazwach
23 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
b. Moje dane list. -> 3 katalogi o podanej nazwie
c. Bardzodluganazwakatalogu -> katalogi o podanych nazwach
Rysunek 21. Tworzenie folderów
3. Utwórz w katalogu osobistym (domowym) katalog rozne. Uczyń go katalogiem
bieżącym. Jakiego użyłeś polecenia? Jaka jest pełna nazwa ścieżkowa tego katalogu?
Rysunek 22. Tworzenie i przechodzenie do katalogu
4. Wróć do katalogu domowego. Jak sprawdzisz czy jest to już twój katalog domowy?
Rysunek 23. Katalog w górę
5. Pozostając w katalogu domowym utwórz za pomocą jednego polecenia katalogi:
rozne/listy/prywatne
rozne /listy
rozne /listy/sluzbowe
rozne /listy/prywatne/Ola
Rysunek 24. Tworzenie podkatalogów
6. Utwórz plik (użyj polecenia touch) i sprawdź ile ma dowiązań.
24 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 25. Tworzenie pliku poleceniem touch
7. Utwórz katalog i sprawdź ile ma dowiązań.
Rysunek 26. Dowiązania katalogu Ala
8. Obejrzyj atrybuty pliku export znajdującego się w twoim katalogu domowym. Czy jest to
plik zwykły czy katalog? Jaki jest rozmiar tego pliku? Jaka jest liczba dowiązań?
#ls -li
Rysunek 27. Informacje o katalogu export
25 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Moduł 3: Prawa dostępu
Polecenia: chmod, umask, chown, chgrp
Prawa dostępu - w systemach uniksowych mają na celu umożliwić określenie uprawnień
odczytu, edycji i uruchamiania dla poszczególnych użytkowników. Mechanizm ten ma na
celu zapewnienie bezpieczeństwa, stabilności i kontroli prywatności w systemach
wielodostępnych.
Prawa dostępu przydzielane są dla kategorii:
user - użytkownik, właściciel pliku,
group - grupa, właściciel pliku,
other - pozostali użytkownicy,
all – dla wszystkich.
Dla każdej z tych kategorii możliwe są trzy prawa dostępu, opisane literowo (rwx) lub
liczbowo trzema bitami:
read - odczyt, wartość - 100(2) = 4(8),
write - zapis, wartość - 010(2) = 2(8),
execute - wykonywanie, wartość 001(2) = 1(8).s
Standardowym symbolicznym sposobem zapisu uprawnień jest:
-|rwx|r-x|r-- 1 fizyk fizyk 2010 kwi 16 13:09 plik
T|uuu|ggg|ooo
Tabela 9. Symboliczny zapis uprawnień
Oznaczenie Opis
t oznacza typ pliku (- zwykły, d katalog, l dowiązanie symboliczne, s
gniazdo, f FIFO, c urządzenie znakowe, b urządzenie blokowe)
u Uprawnienia właściciela
g Uprawnienia grupy
o Uprawnienia pozostałych
Zapis liczbowy praw dostępu polega na przedstawieniu uprawnień za pomocą trzycyfrowej
lub czterocyfrowej liczby ósemkowej, której kolejne cyfry oznaczają: uprawnienia specjalne
(w liczbie trzycyfrowej nie występuje, uprawnienia użytkownika, uprawnienia grupy,
uprawnienia pozostałych)
rwx r-x r-- → 111 101 100 (2) → 4+2+1 4+1 4 (8) → 754 (8)
Znaczenie praw dostępu dla zwykłych plików jest intuicyjne, natomiast dla katalogów
znaczenie jest następujące:
jeżeli użytkownik ma prawo x do katalogu, to może do niego "wejść"
26 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
jeżeli użytkownik ma prawo r do katalogu, to może wyświetlić jego zawartość
jeżeli użytkownik ma prawo w do katalogu, to może w nim tworzyć i kasować
pliki/katalogi
Chmod (ang. change mode - zmiana atrybutu) - polecenie zmiany zezwoleń dostępu do
plików w systemach uniksowych.
chmod [opcje] uprawnienia plik
Tabela 10. Opcje uprawnień
Opcje Znaczenie
-c, --changes jak -v, ale podanie tylko, kiedy zaszła zmiana
--no-preserve-root bez traktowania katalogu '/' w specjalny sposób (domyślnie)
--preserve-root odmowa rekursywnego działania na '/'
-f, --silent, --quiet wyłączenie większości komunikatów o błędach
-v, --verbose wypisanie informacji o każdym przetwarzanym pliku
--
reference=plik_wzorcowy
użycie uprawnień pliku plik_wzorcowy zamiast wartości uprawnienia
-R, --recursive zmiany też w plikach w podkatalogach
--help wyświetlenie tego opisu i zakończenie
--version wyświetlenie informacji o wersji i zakończenie
Przykłady użycia polecenia chmod
$ chmod a+w plik.txt – nadaje wszystkim uprawnienia do zmiany 'plik.txt',
$ chmod o-x plik.txt – usuwa możliwość wykonywania 'plik.txt' przez
pozostałych użytkowników,
$ chmod go=rx plik.txt – grupa oraz pozostali użytkownicy będą mogli tylko
czytać i wykonywać.
$ chmod -R 777 /home/user – wszyscy będą mogli zmieniać zawartość
katalogu /home/user oraz jego podkatalogów, jak też czytać go i wykonywać
zawarte w nim pliki
Umask - pozwala określić, jakie prawa nie mają być nadawane domyślnie dla nowo
utworzonego pliku
Przykład użycia:
$ umask 444
Będzie oznaczać, że standardowo nie będą przyznawane prawa do odczytu. Czyli jeśli
stworzysz teraz nowy plik, to będzie on miał takie prawa: -w--w--w-. Zwykle maska
ustawiana jest na 022 ( rw-r--r--). Trzeba zauważyć, iż 0 ustawia zapis i odczyt.
27 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Tabela 11. Umask - możliwe cyfry
Cyfra Znaczenie
0 Brak ograniczeń praw (zapis i odczyt)
2 Wyłącza zapis (ustawia tylko odczyt)
4 Wyłącza odczyt (ustawia tylko zapis)
6 Wyłącza zapis i odczyt (brak praw do pliku)
Chown to polecenie systemu Unix i pochodnych używane do zmiany właściciela pliku. W
większości implementacji może być wykonywane tylko przez administratora systemu. Zwykli
użytkownicy, którzy chcą zmienić grupę pliku, muszą korzystać z polecenia chgrp.
chown [użytkownik][:grupa] plik-1 [plik-2 ...]
gdzie parametry oznaczają:
użytkownik określa nowego właściciela pliku,
grupa (koniecznie poprzedzony dwukropkiem) określa grupę, do której plik ma zostać
przypisany,
plik-n określają jeden lub więcej plików, których dotyczy zmiana.
Uwagi:
Co najmniej jeden z parametrów użytkownik lub grupa musi zostać określony.
Zarówno użytkownik jak i grupa mogą zostać określone poprzez nazwę symboliczną
lub identyfikator liczbowy.
Przykłady użycia:
$ chown nobody:nobody /tmp /var/tmp
$ chown -R andrzej:marketing /katalog
Pierwsze z poleceń chown operuje na katalogach /tmp i /var/tmp, zmieniając im właściciela
i grupę na nobody. Nie modyfikuje jednak znajdujących się wewnątrz nich plików i
podkatalogów — w tym celu program należy wywołać z dodatkową opcję -R, co pokazuje
drugie wywołanie komendy.
Chgrp – komenda systemu Unix i pochodnych, umożliwiająca zwykłym użytkownikom
zmianę przypisania pliku do grupy. W przeciwieństwie do polecenia chown, chgrp pozwala
na przypisanie pliku tylko do takiej grupy, do której użytkownik sam należy.
chgrp [opcje ...] grupa plik1 [plik2 ...]
gdzie parametry określają:
opcje określa opcje używane przy przypisywaniu,
grupa określa nazwę nowej grupy, do której plik ma być przypisany,
28 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
plik1 [plik2 ...] określają listę plików, których przypisanie ma być
zmienione.
Tabela 12. Chgrp - opcje wiersza poleceń
Opcje Znaczenie
-c, --changes Informuje użytkownika o czynnościach, ale tylko dla tych plików,
których grupa rzeczywiście ulega zmianie.
--dereference Działa na plikach wskazywanych przez dowiązania symboliczne zamiast
na samych dowiązaniach.
-h, --no-dereference Działa na dowiązaniach symbolicznych zamiast na plikach, które one
wskazują (dostępne tylko w systemach potrafiących zmienić właściciela
dowiązania symbolicznego). Jest to zachowanie domyślne. Opiera się na
wywołaniu funkcji systemowej lchown. Na systemach
niezapewniających tej funkcji chgrp zawodzi w przypadku próby zmiany
grupy dowiązania symbolicznego. Domyślnie nie są emitowane żadne
komunikaty diagnostyczne dla dowiązań symbolicznych napotykanych
podczas rekurencyjnej pracy w katalogach, zobacz jednak opis opcji --
verbose.
-f, --silent, --quiet Nie wyświetla komunikatów o błędach dla plików, których grupa nie
może zostać zmieniona.
-v, --verbose Informuje użytkownika o zmianach właściciela. Jeżeli podczas
rekurencyjnego przetwarzania napotkane jest dowiązanie symboliczne,
zaś system nie obsługuje funkcji systemowej lchown a działa opcja --no-
dereference, to wysyła komunikat diagnostyczny informujący, że nie jest
zmieniane ani dowiązanie ani wskazywany przez nie plik.
-R, --recursive Rekurencyjnie zmień grupę dla katalogów i ich zawartości.
--reference=rplik Używa grupy wskazanego rpliku zamiast wprost podanej grupy.
--help Wyświetla informację o stosowaniu programu i dostępnych opcjach,
kończy działanie.
--version Wyświetla numer wersji programu i kończy działanie.
Przykłady użycia:
Jeżeli mamy np. plik o nazwie plik i chcemy, aby dostęp do niego miała grupa
laboranci używamy polecenia:
chgrp laboranci plik
Aktualną grupę zobaczymy używając polecenia:
$ ls -l plik
-rw-r--r-- 1 uzytkownik laboranci 21234 sie 15 17:32 plik
Polecenie
$ chgrp koty kot.jpg
29 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Powoduje przypisanie pliku kot.jpg do grupy „koty” (pod warunkiem, że użytkownik
wykonujący to polecenie, jest członkiem grupy koty).
Zakładanie i przeglądanie plików tekstowych
Touch — polecenie systemów UNIX zmieniające datę modyfikacji lub ostatniego dostępu
pliku. Wywołane z argumentem tworzy (jeżeli jeszcze nie istnieje) nowy plik o takiej jak
argument nazwie i ustala jego daty modyfikacji i ostatniego dostępu na aktualną datę.
Przykład:
$ date
śro sie 16 13:06:41 CEST 2006
$ ls -l
-rw-r--r-- 1 user user 0 2006-08-16 13:04 plik1
$ touch plik2.txt
$ ls -l
-rw-r--r-- 1 user user 0 2006-08-16 13:04 plik1
-rw-r--r-- 1 user user 0 2006-08-16 13:06 plik2.txt
Cat (ang. catenate - łączyć) jest poleceniem systemu Unix służącym do łączenia
(konkatenacji) plików (np. podzielonych komendą split) oraz wyświetlania (kierowania na
standardowe wyjście) zawartości pliku (plików). Wyświetlanie zawartości plików jest jednak
znacznie częściej stosowane niż łączenie plików.
Wyświetlenie zawartości pliku lub kilku plików:
$ cat <nazwa pliku 1> [<nazwa pliku 2> <nazwa pliku 3> ..]
Łączenie zawartości kilku plików w jeden:
$ cat <nazwa pliku 1> <nazwa pliku 2> [<nazwa pliku 3> ..] >
<nazwa pliku wynikowego>
Tabela 13. Cat - opcje wiersza poleceń
Opcje Znaczenie
-b Numeruje nie puste linie wyjściowe
-e Dodatkowo wyświetla znak końca linii jako $
-n Numeruje linie wyjściowe
-t Wyświetla znak tabulacji jako ^|
-s Zastępuje sąsiadujące puste wiersze jednym pustym wierszem
-v Wyświetla białe znaki w widoczny sposób, wyłączając znaki tabulacji
oraz znak końca lini
30 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Listy ACL
ang. Access Control List, ACL – lista kontroli dostępu. W systemach uniksowych poprzez
rozszerzenie możliwości systemu plików, umożliwia bardziej rozbudowaną i dokładną
kontrolę dostępu do plików, w porównaniu do standardowych uprawnień w systemie.
Standardowe uprawnienia w systemie plików systemu Unix obejmują tylko: zapis, odczyt
oraz wykonanie. Każde z uprawnień możemy definiować dla: właściciela pliku (ang. owner),
grupy, do której ten plik należy (ang. group) oraz pozostałych użytkowników (ang. other).
Polecenia:
Getfacl służy do odczytania prawa dostępu z listy ACL
Setfacl służy do ustawienia prawa dostępu do listy ACL
Tabela 14. Setfacl - opcje wiersza poleceń
Atrybut Opis Znaczenie
--set Ustawia
-m Modyfikuj
-x Usuń Usuwa wpis w ACL
-d Skasuj Kasuje cała listę ACL
Zadania do samodzielnego rozwiązania
1. Stwórz katalog o nazwie test1, sprawdź, jakie posiada on atrybuty. Jeżeli możesz je
zmienić odbierz na 3 sposoby wszelkie prawa grupie i pozostałym.
Stworzenie katalogu:
$ mkdir test1
Wyświetlenie informacji o plikach i katalogach
$ ls –l
31 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 28. Przedstawia informacje o plikach folderach oraz ich prawach
Zmienienie praw dostępu na 3 sposoby
$ chmod 700 test1
$ chmod og=t test1
$ chmod og-rwx test1
Rysunek 29. Przedstawia zmienione prawa pliku test1.
2. Zmiana właściciela katalogu na użytkownika o nazwie stud oraz grupy na lab (polecenie
chown)
Zaczniemy od utworzenia nowego użytkownika poleceniem:
$ useradd stud
Następnie utworzymy grupę o nazwie lab:
$ groupadd lab
32 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Na koniec dokonamy zmiany właściciela katalogu:
$ chown stud:lab test1
$ ls –l
Wynik końcowy:
Rysunek 30. Wynik działania zmiany właściciela pliku.
3. Utwórzmy plik o nazwie hello, w którym wypiszemy tekst Hello, World ze standardowymi
prawami. A następnie stwórzmy z niego skrypt oraz program wykonywalny, który
uruchomimy.
$ echo Hello, World > hello ; ls –l
Rysunek 31. Stworzony plik ze standardowym prawami.
33 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Teraz stworzymy najprostszy skrypt shellowy za pomocą komendy:
$ echo ‘#!/bin/sh’ > hello ; echo ‘echo Hello, World’ >> hello
; cat ls-l
‘#!/bin/sh
echo Hello, World
Oraz stworzymy z niego program wykonywalny za pomocą dodania do niego prawa do
uruchomienia pliku jako programu
$ chmod +x hello
Uruchamianie programu
$ ./hello
Rysunek 32. Wynik działania programu hello.
Teraz odbierzemy prawa uruchamiania pliku jako program I przetestujemy działanie
polecenia ./hello
$ chmod -x hello
Uruchamianie programu
$ ./hello
Rysunek 33. Brak dostępu do uruchamia programu.
Jak widać po odebraniu praw nie mamy dostępu do uruchomienia pliku jako programu.
4. Utwórz dwa dowolne pliki, w taki sposób, aby od początku istnienia posiadały prawa
- rw- - - - - - -
Określimy za pomocą polecenia umask prawa, jakie mają być nadane nowo utworzonym
plikom
$ umask 166
Następnie utworzymy pliki:
34 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
$ touch plik1
$ touch plik2
Wynik działania:
Rysunek 34. Utworzone pliki dostały prawa wcześniej ustalone w pleceniu umask.
5. Stwórz plik secret.doc tak, aby był własnością użytkownika stud, następnie stwórz
użytkownika stud2, który dostanie prawa tylko do odczytu tego pliku.
Tworzenie użytkownika, pliku oraz przypisanie pliku do użytkownika
$ useradd stud2
$ touch secret.doc
$ useradd stud2
$ chown stud:lab secret.doc
W tym miejscu użytkownik stud2 dostaje prawa tylko do odczytu pliku:
$ setfacl -m user:stud2:r-- secret.doc
Kiedy ACL została ustawiona, listę plików, pokazuje symbol + na koniec uprawnienia ciąg:
# ls -l /home/stud2/secret.doc
-rw-------+ 1 stud2 admin 105433 Jan 24 12:07
/home/stud2/secret.doc
Wypiszemy teraz rozszerzone uprawnienia do pliku za pomocą polecania getfacl
$ getfacl /etc/passwd
35 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
# file: /etc/passwd
# owner: root
# group: sys
user::rw-
group::r— #effective:r--
mask:r--
other:r--
36 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Moduł 4: Strumienie, potoki, sterowanie procesami
Strumienie i potoki
Standardowe strumienie – są podstawowymi kanałami komunikacji pomiędzy komputerem
a otoczeniem. Do podstawowych strumieni należą „Standard input” – standardowy strumień
wejścia oraz „Standard output” – standardowy strumień wyjścia.
Standardowy strumień wejścia stdin - to dane przekazywane do programu zwykle w formie
tekstu. Pobiera dane używając funkcji „read”. Nie wszystkie programy wymagają danych
wejściowych i wykonują się nie pobierając żadnych danych z „stdin”. Jeżeli dane nie są
przekierowane to zostają pobierane z terminala.
Przykłady:
#ls - wyświetla listę plików
#man ls - opisuje działanie komendy ls
#cat < przyklad.txt – wyświetlenie zawartości pliku przykład.txt
Standardowy strumień wyjścia stdout – strumień, do którego są zapisywane dane
wynikowe przez program. Wykorzystuje funkcje „write”, niektóre programy nie zwracają
danych wynikowych, jeżeli zostaną przeprowadzone prawidłowo to nie wypisują żadnego
wyniku. Jeżeli dane nie są przekierowane to są wysyłane do terminala, z którego
uruchomiono program.
Przykłady:
#mkdir nazwa_forderu - tworzenie folderu „nazwa_folderu”
#rmdir nazwa_forderu - usunięcie folderu „nazwa_folderu”
#touch plik.txt – wstawia plik „plik.txt”
#cat plik.txt – wyświetla zawartość pliku „plik.txt”
Przekierowanie strumieni – umożliwia przeniesienie wyniku np. do pliku tekstowego.
Wyróżniamy 3 sposoby przekierowania danych:
„>” – umożliwia przekierowanie strumienia danych do pliku. W przypadku, gdy plik
już istnieje to jego zawartość zostaje usunięta
„>>” – podobnie jak w przypadku „>” z tą różnicą, że jeżeli plik istnieje to wynik
komendy zostaje dopisany do końca pliku
„<” –Umożliwia pobranie z pliku danych i przetworzenia ich przez polecenie
Przykłady:
#ls > plik1.txt – wpisze wynik polecenia ls do pliku
#ls >> plik1.txt – dopisze wynik polecenia ls na koniec pliku
#cat < plik1.txt – wypisze zawartość pliku
37 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Przetwarzanie potokowe – pozwala za pomocą znaku „|” łączyć wyjścia jednego polecenia z
wejściem innego. Umożliwia to wymianę danych pomiędzy procesami.
Przykład: #touch procesy.txt
#cat > procesy.txt << EOF
>Wykaz procesów, które nie zawierają w sobie wzorca sh
>EOF
#ps | grep –v sh | cat >> procesy.txt
#cat procesy.txt
Rysunek 35. Zawartość pliku procesy.txt
Sterowanie procesami
Każdy program, który jest uruchomiony w systemie nosi nazwę procesu. Proces składa się z
następujących elementów:
Kod binarny procesu załadowany z pliku
Dane programu – struktury danych, pamięć dynamicznie przydzielona w trakcie
działania procesu
Dane systemowe – informacja o procesie utrzymywania przez system
Podczas tworzenia procesu system inicjalizuje systemowe struktury danych opisujące proces.
Podczas działania procesu dane są aktualizowane. Wyróżniamy następujące dane systemowe:
Identyfikator procesu (PID) – unikalna liczba całkowita jednoznacznie identyfikująca
proces
Identyfikator procesu macierzystego (PPID) - wartość PID procesu, który stworzył
dany proces
Środowisko procesu – zbiór zmiennych środowiskowych. Każdy proces ma swoje
niezależne od innych procesów środowisko wykonania, które początkowo jest
kopiowane z procesu-rodzica, a następnie jest modyfikowane niezależnie od innych
procesów
Standardowe strumienie danych
Komenda „ps” – komenda wyświetla listę wszystkich aktywnych procesów. Domyślnie
komenda wyświetla poniższe dane:
Rysunek 36. Lista procesów wyświetlona po wykonaniu komendy „ps”.
PID – numer procesu
TTY – terminal, z którego została wykonana komenda
TIME – czas aktywności
CMD – nazwa komendy, która została wykonana
38 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Więcej informacji o procesie aktualnej powłoki można uzyskać za pomocą polecenia „#ps –f”
Rysunek 37. Więcej informacji na temat procesów
UID – ID właściciela
PPID C – numer procesu nadrzędnego
STIME – czas uruchomiania
Jeżeli chcemy uzyskać wszystkie dostępne informacje o procesie używamy komendy „#ps –l”
Rysunek 38. Wszystkie informacje na temat procesów
F – flaga procesu
S – status procesu
PRI – priorytet procesu
NI – wartość NI
ADDR – adres pamięci przedstawiony w systemie szesnastkowym
SZ – rozmiar w KB
WCHAN – adres pamięci dla śpiących procesów
Gdy jesteśmy zalogowani, jako administrator to możemy wyświetlić listę procesów, które są
aktualnie uruchomione na całym komputerze za pomocą komendy „#ps-A”.
Rysunek 39. Fragment listy procesów uruchomionych na maszynie
Bardziej szczegółowy opis procesów można uzyskać podobnie jak w poprzednich
przypadkach dołączając do komendy literkę „f”.
Rysunek 40. Bardziej szczegółowa lista procesów uruchomionych na maszynie
Komenda „#ps –c” wyświetla klasę(CLS) procesu i priorytet.
39 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 41. Wynik polecenia ps -c
Opis skonfigurowanych klas można uzyskać dzięki poleceniu „#priocntl –l”
Rysunek 42. Skonfigurowane klasy
Analogicznie jak w przypadku „#ps –Af”, można łączyć też polecenie wyświetlania procesów
szczegółowo wraz z klasami poleceniem „#ps -cf”.
Aby wyświetlić listę procesów aktualnie wykonywanych używamy polecenia „#ps –g 0”.
Rysunek 43. Lista procesów aktualnie wykonywanych
Aby wyświetlić identyfikator sesji (SID) wykorzystujemy polecenie „#ps -j”.
Rysunek 44. Wyświetlenie danych o procesach wraz z SID
Komenda sleep – komenda usypiająca proces na podany czas. Są dwie opcje użycia
polecenia „sleep”:
#date;sleep 10;date – wyświetlenie daty w danym momencie i po upływie polecenia „sleep”
Rysunek 45. Efekt wywołania polecenia sleep
40 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
#(sleep 10; date) & - Wyświetlenie daty po upływie 10 sekund i możliwość wykonywania w tym czasie
innych komend dzięki ustawieniu pracy w tle za pomocą znaku „&” na końcu komendy. Dodatkowo po
wpisaniu znaku „&” na końcu komendy otrzymujemy od razu jego ID.
Rysunek 46. Efekt wykonana polecenia sleep pracującego w tle
Komenda kill – komenda umożliwiająca usunięcie procesu.
Przykład:
#ps – wyświetlenie listy procesów
#sleep 120 & - uruchomienie „sleep” w tle
#ps –wyświetlenie listy procesów
#kill 2207 – usunięcie procesu 2207
#ps – ponowne wyświetlenie listy procesów
Rysunek 47. Przykład wykorzystania polecenia "kill"
Sterowanie zadaniami przez używaną powłokę (procesy pierwszo i
drugoplanowe)
Procesy interakcyjne dzielimy na dwa rodzaje: Procesy pierwszoplanowe – związane z terminalem (np. ls)
Procesy drugoplanowe – wykonywane w tle
Aby program był wykonywany w tle wystarczy na końcu polecenia dodać znak „&”
Przykład:
#(sleep 10; date) & - wyświetli datę po 10 sekundach
#gedit & – uruchamia edytor treści w tle
41 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Przykład zarządzania zadaniami w powłoce znajduje się w następnym rozdziale, gdzie będzie
uruchamiany edytor treści gedit, a następnie będziemy go przenosić z pierwszego planu do tła
i odwrotnie.
Wstrzymywanie procesów
Aby uruchomić wybrany proces wpisujemy w konsoli jego nazwę, przykładowo będzie to
edytor tekstu gedit.
Polecenie jobs – polecenie wyświetla aktualnie wykonywane zadania oraz ich status
Polecenie ^Z – oznacza w rzeczywistości skrót klawiszowy CTRL + Z i jego zadaniem jest
przerwanie wykonywanego zadania.
Polecenie ^C – polecenie zamyka uruchomiony proces
Polecenie bg %id lub bg – przenosi jeden lub wszystkie zatrzymane procesy do tła, a
następnie je uruchamia
Polecenie fg %id – przywraca proces z tła, blokując w ten sposób konsolę
Polecenie kill ID – kończy proces o podanym ID
Przykłady:
#gedit – uruchamia edytor tekstu
^Z – zatrzymuje działanie edytora
#jobs –l – wyświetla status programu
#bg – przenosi program do tła i uruchamia
#jobs –l – wyświetla status programu
#fg %1 – przywraca edytor z tła i blokuje w ten sposób terminal
Rysunek 48. Uruchamianie poleceń
^C – zamyka uruchomiony program
#gedit & - uruchamia programik w tle
#jobs –l – wyświetla informacje o procesie
#fg %1 – przywraca proces z tła
^Z – zatrzymuje działanie procesu odblokowując terminal
#jobs –l – wyświetla informacje o procesie
42 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 49. Uruchamianie poleceń cd.
#kill 1487 – usuwa proces
Monitorowanie procesów
Monitorowanie procesów może się odbywać za pomocą każdej z poniższych komend
Tabela 15. Komendy monitorowania procesów
Komenda Działanie
ps Wyświetla status i informacje na temat procesów
pgrep Szuka PID procesów
prstat Wyświetla statystyki wszystkich procesów
preap Wyłapuje procesy „Zombie”
pstop Zatrzymuje tymczasowo procesy
prun Kontynuuje wcześniej zatrzymane procesy
pwait Czeka aż skończy się proces
pwdx Pokazuje folder, w którym działa proces
pargs Wypisuje argumenty i wartości procesu
pfiles Wypisuje listę opisów procesu
pldd Lista dynamicznych bibliotek procesu
ptree Wypisuje drzewo procesu
pstack Debuguje wynik procesu
truss Śledzi wezwania i sygnały systemowe dla procesu
svcs Z opcją „-p” komenda wyświetla listę procesów należących do instancji usługi
Komenda pgrep – sprawdza aktywne procesy w systemie i sporządza raport ID procesów,
których atrybuty spełniają kryteria wpisane w komendzie. Może być używany do zmiany
połączenia komend „grep” i „ps” w celu pobrania „PID”.
43 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 50. Przykład użycia pgrep
Komenda prstat- wyświetla interwałowo informacje na temat wszystkich procesów.
#prstat 1 – wyświetla, co sekundę informacje(crtl + c , aby przerwać).
Komenda preap – czyści niedziałające procesy lub procesy zombie, które są bezużyteczne a
pobierają zasoby systemu.
#ps –efl|greap Z – wyszuka wadliwe procesy
#preap PID – usunie proces o identyfikatorze PID
Komendy pstop PID i prun PID – zatrzymują i uruchamiają podany proces.
Komenda pwait PID– usypia konsole do czasu zakończenia wskazanego procesu
Komenda pwdx – Pokazuje lokalizację wybranego procesu
Rysunek 51. Wyświetlenie wybranej lokalizacji procesu
Komenda pargs – wyświetla informacje o procesach bez limitu w porównaniu do komendy
ps
Rysunek 52. Wynik użycia komendy pargs dla procesu 1237
Komenda pfiles – wyświetla listę plików otwartych podczas działania procesu
44 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 53. Efekt działania polecenia pfiles
Komenda pldd – lista bibliotek wykorzystywanych przez proces
Rysunek 54. Lista bibliotek wykorzystywanych przez proces
Komenda ptree – wyświetla wszystkie dzieci i rodziców danego procesu
Rysunek 55. Efekt działania ptree
45 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Komenda pstack – śledzi uruchomiony proces
Rysunek 56. Wynik komendy pstack
Komenda truss – jedna z najbardziej pożytecznych komend, śledzi wezwania i sygnały
systemu wygenerowane przez proces. Przykładowo można śledzić wybrany proces:
Rysunek 57. Przykładowy wynik śledzenia procesu 333
Zadania do samodzielnego rozwiązania
Po uruchomieniu klikamy prawym przyciskiem na pulpicie i wybieramy opcję „Open
Terminal”.
Zad.1 Podstawowe wykorzystanie strumieni oraz potoków.
Wyświetl listę plików i folderów
#ls
Rysunek 58. Lista plików i folderów
Utwórz folder „Lab_procesy” i sprawdź czy folder został utworzony
Rysunek 59. Lista z nowo utworzonym folderem
46 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Przejdź do utworzonego folderu, a następnie upewnij się że jesteś w utworzonym folderze
Rysunek 60. Przejście do utworzonego folderu
Utwórz plik „lista_procesow.txt”
Rysunek 61. Tworzenie nowego pliku
Sprawdź czy został utworzony plik
Rysunek 62. Lista plików
Dodaj treść do pliku „Lista aktywnych procesów:”
Rysunek 63. Dodawanie treści do pliku
Sprawdź zawartość pliku „lista_procesow.txt”
Rysunek 64. Wyświetlenie zawartości pliku
Wyświetl listę procesów, następnie dodaj ją do pliku usuwając jeden z procesów o wybranym
identyfikatorze PID
Rysunek 65. Zapisywanie listy procesów do pliku
Wyświetl zawartość pliku
47 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 66. Zawartość pliku "lista_procesow.txt"
Zad.2. Operacje na procesach(sleep, kill, &)
Utwórz proces który wyświetli aktualną datę i datę po 10 sekundach
Rysunek 67. Wyświetlanie daty z opóźnieniem
Po wykonaniu poprzedniego zadania konsola została zablokowana na 10 sekund, przekształć
poprzednie polecenie tak, aby można było po wykonaniu polecenia użyć komendy „ls”
Rysunek 68. Uruchomienie procesu sleep w tle
Wyświetl listę procesów, a następnie utwórz proces jak w poprzednim poleceniu ustawiając
go na 2 minuty. Sprawdź ponownie listę procesów i sprawdź czy znajduje się tam
uruchomiony przez ciebie proces. Następnie usuń proces wykorzystując jego PID i ponownie
sprawdź listę procesów
48 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 69. Usuwanie utworzonego procesu
Zad.3. Sterowanie procesami(jobs, ^Z, ^C, bg, fg, kill)
Uruchom z poziomu terminala edytor tekstu „gedit”
Rysunek 70. Uruchomienie edytora tekstu
Po uruchomieniu edytora tekstu nie można wpisywać komend w terminalu dopóki proces
działa jako pierwszoplanowy. Zatrzymaj działanie programu(CTRL + Z)
Rysunek 71. Zatrzymanie działania programu
49 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Następnie wyświetl status uruchomionych zadań
Rysunek 72. Lista uruchomionych zadań
Uruchom ponownie program w tle i wyświetl jego status
Rysunek 73. Przeniesienie procesu na drugi plan
Przywróć program do działania w trybie pierwszoplanowym posługując się jego numerem z
polecenia „jobs”, a następnie poleceniem „CTRL + C” zakończ działanie programu
Rysunek 74. Przywrócenie programu na pierwszy plan
Uruchom ponownie program „gedit” w tle i wyświetl działające zadania
Rysunek 75. Uruchamianie procesu w tle
Przenieś proces z tła do pierwszego planu używając jego numeru i zatrzymaj jego działanie
Rysunek 76. Przeniesienie procesu z tła na pierwszy plan
50 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Wyświetl listę aktywnych procesów i usuń proces „gedit”
Rysunek 77. Lista aktywnych procesów
Rysunek 78. Usuwanie procesu
51 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Moduł 5: Wybrane programy użytkowe – Edytor Vi
Edytor Vi uruchamiany jest w oknie terminala. Przy jego pomocy możemy dokonywać
następujących operacji:
Tworzenie nowych plików;
Modyfikowanie istniejących plików;
Przeszukiwanie fragmentu tekstu w pliku;
Zmiana fragmentu tekstu na inny;
Przenoszenie lub kopiowanie fragmentu tekstu w pliku;
Usuwanie fragmentu tekstu w pliku.
Edytor ten działa w dwóch trybach pracy:
Tryb wstawiania: w tym trybie litera jest dodawana do tekstu w miejscu wskaźnika;
Tryb poleceń: w tym trybie wydajemy komendy, oraz edytujemy plik (np. litera x
kasuje znaki).
Edytor Vi uruchamia się poleceniem vi:
Rysunek 79. Uruchomienie edytora
Lub wyszczególniając istniejący plik do edycji, albo też nowy do utworzenia:
Rysunek 80. Uruchomienie pliku do edycji, lub tworzenie nowego
Rysunek 81. Okno edytora Vi
52 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Możliwe jest również podanie listy plików do edycji. Po zakończeniu edycji jednego,
uruchomi się edycja kolejnego.
Poniższe komendy są wykonywane w trybie poleceń.
Tabela 16. Opcje edytora Vi
Opcje Znaczenie
/ Wykonuje przeszukiwanie pliku do przodu
? Wykonuje przeszukiwanie pliku wstecz
: Wykonuje polecenia edytora ex w bieżącym wierszu
! Wykonuje powłokę w ramach vi
ZZ Zapisuje plik i zamyka edytor
h Przesuwa kursor w lewo
j Przesuwa kursor w dół
k Przesuwa kursor w górę
l Przesuwa kursor w prawo
nG Przesuwa kursor do n-tej linii
w Przesuwa kursor to następnego słowa
b Przesuwa kursor o jedno słowo wstecz
dw Usuwa słowo
ndw Usuwa n słów
d^ Usuwa wszystkie słowa do początku linii
dd Usuwa bieżącą linię
dG Usuwa wszystkie linie do końca pliku
D Usuwa wszystkie słowa do końca linii
x Usuwa bieżący znak
nx Usuwa n znaków w prawo
nY Szarpie n linii do bufora
p Wkleja po prawej stronie kursora
P Wkleja po lewej stronie kursora
Oddzielny zestaw poleceń, zwany poleceniami ex, mogą być wprowadzane przy użyciu
dwukropka w połączeniu z jednym z poniższych poleceń.
Tabela 17. polecenia ex
Opcje Znaczenie
:n Przesuwa kursor do n-tej linii
:$ Przesuwa kursor na koniec pliku
:s/a/b/g Zamienia wszystkie wystąpienia fragmentu tekstu a, na tekst b w
bieżącej linii
:%s/a/b/g Zamienia wszystkie wystąpienia fragmentu tekstu a, na tekst b w pliku
:wq Zapisuje plik i zamyka edytor
53 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
:q! Zamyka edytor bez zapisywania
Opcje menu takie jak File, Edit, View itp. Są przeznaczone dla terminala, w edytorze Vi nie
działają. Edytor Vi nie posiada takich elementów, wszystko jest obsługiwane za pomocą
klawiatury.
Wprowadzanie tekstu
Domyślnie edytor uruchamia się z włączonym trybem poleceń. Do przełączania między
trybami służy klawisz Esc.
Tabela 18. Opcje wstawiania tekstu
Opcje Znaczenie
i Wstawianie tekstu przed kursorem
a Wstawianie tekstu za kursorem
O Wstawianie tekstu tuż powyżej bieżącej linii, w nowym pustym wierszu
o Wstawianie tekstu tuż poniżej bieżącej linii, w nowym pustym wierszu
Rysunek 82. Wprowadzanie tekstu
Poruszanie się w pliku
Ponieważ edytor Vi nie posiada paska przewijania, oraz nie wspiera myszki posiada zestaw
klawisz służących do poruszania się w trybie poleceń.
54 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
W systemach Solaris, do poruszania się w pliku można również wykorzystać klawisze
strzałki. Jakby jednak nie działały, opcjonalne sterowanie przedstawia poniższa tabela.
Tabela 19. Opcje poruszania się w pliku
Opcje Znaczenie
h W lewo
j W dół
k W górę
l W prawo
w Jedno słowo w prawo
b Jedno słowo w lewo
0 (zero) Do początku linii
$ Do końca linii
^F Strona w przód
^B Strona wstecz
^D Połowa strony w dół
^U Połowa strony w górę
0G Pierwsza linia pliku
G Koniec pliku
Wstawianie innych plików
Wstawianie zawartości innych plików tekstowych odbywa się w trybie poleceń. Aby tego
dokonać wciskamy klawisz „:”. Kursor przechodzi do lewego dolnego rogu terminala.
Poniższy przykład wstawia zawartość pliku wstaw.txt do naszego pliku:
Rysunek 83. Wstawianie zawartości pliku do innego pliku
Rezultat operacji przedstawia poniższy rysunek
55 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 84. Wstawianie innych plików
Przeszukiwanie i podmienianie
Operacja przeszukiwania i zmiany ciągu znaków przeprowadzana jest w trybie poleceń,
komendy szukania wprowadzane są po „:” (dwukropku).
Podstawową ideą jest to, że edytor ma:
Przeszukać tekst w celu znalezienia starego wzorca;
Zamian go na nowy;
W edytorze vi służy do tego składnia:
s/stary_wzorzec/nowy_wzorzec/
Jednakże powyższa komenda zamieni tylko pierwszy wzorzec w danej linii.
Aby zmienić wzorzec we wszystkich liniach należy dodać selektor adresu precyzujący
zasięg linii tekstu od pierwszej (1) do ostatniej ($) oddzielając znaki przecinkiem.
56 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 85. Przeszukiwanie i podmienianie
W powyższym przykładzie zastąpione zostają tylko pierwsze wystąpienia wzorca w
linii. Aby zastąpić wszystkie wystąpienia we wszystkich liniach należy dodać jeszcze
przyrostek g
Rysunek 86. Zastąpienie wzorca w pliku
Wynikiem operacji jest zamienienie wszystkich wystąpień litery b na literę w.
Rysunek 87. Rozszerzone podmienianie
Jeśli chcemy cofnąć operację wciskamy klawisz u, zaraz po jej wykonaniu.
57 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Zapisywanie plików
Jeśli przy tworzeniu pliku podaliśmy już jego nazwę zapisywanie pliku odbywa się dwoma
sposobami.
Tabela 20. Opcje zapisywania plików
Opcje Znaczenie
:w Zapisuje plik i pozostaje w edytorze
:wq Zapisuje plik i zamyka edytor
Rysunek 88. Zapisywanie plików
ZZ zapisuje plik, jeśli został zmieniony, a następnie zamyka edytor bez potrzeby wpisywania
znaku : (dwukropka).
Jeśli przy otwieraniu wprowadzono więcej plików, wystarczy użyć :w aby zamknąć obecny,
oraz :n, aby przejść do następnego.
Aby wyjść bez zapisywania zmian wpisujemy komendę:
Rysunek 89. Zamknięcie edytora
Jeśli jednak przy otwieraniu edytora nie podaliśmy nazwy, wystarczy ją podać po komendzie
zapisu:
58 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 90. Zapisywanie jako...
Zadania do samodzielnego rozwiązania
1. Stwórz plik tekstowy o dowolnej nazwie zawierający kilka linijek tekstu, polecenie
vi nazwa_pliku.txt;
Rysunek 91. Wprowadzony tekst do pliku
2. Pomiędzy trzecią, a czwartą linijką utwórz pusty wiersz i wprowadź przykładowy
tekst;
59 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 92. Wprowadzenie nowego wiersza
3. Przejdź na początek linijki i usuń pierwszych 10 znaków, polecenie nx;
Rysunek 93. Wynik polecenia 10x
4. Zapisz plik i wyjdź z edytora, polecenie :wq;
Rysunek 94. Zapisanie pliku i wyjście z edytora
5. Stwórz drugi plik tekstowy o dowolnej nazwie, w treści wpisz swoje dane;
60 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 95. Podgląd pliku dane.txt
6. Na koniec pliku wstaw zawartość wcześniej utworzonego pliku tekstowego, polecenie
:r nazwa_pliku.txt;
Rysunek 96. Połączenie obu plików
7. Zapisz plik nie wychodząc z edytora, polecenie :w;
Rysunek 97. Wynik zapisywania pliku
8. Wybierając jedno słowo z utworzonego pliku, zamień wszystkie jego wystąpienia na
inne dowolne słowo, polecenie :1,$s/a/b/g;
61 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 98, Efekt podmiany wzorca
9. Zamknij edytor bez zapisywania zmian.
Rysunek 99. Zamknięcie pliku bez zapisu
62 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Moduł 6: Administrowanie użytkownikami
Pojęcie użytkownika jest centralną częścią systemu Solaris. Wszystkie procesy i pliki w
systemie Solaris są „własnością” określonego użytkownika, oraz są przypisane do
konkretnych grup użytkowników. Żadne dane, bądź działania w systemie nie mogę wystąpić
bez ważnego użytkownika lub grupy. Zarzadzanie użytkownikami i grupami, jako
administrator systemu Solaris może okazać się trudnym zadaniem – ponosi się
odpowiedzialność za przypisanie wszystkich udzielonych, bądź niedozwolonych przywilejów
dla użytkowników, lub grup użytkowników, a wiele z tych uprawnień niesie za sobą wielkie
ryzyko.
W przeszłości, podjętych zostało kilka prób opracowania rozszerzalnego, łatwego w
użytkowaniu graficznego interfejsu do zarządzania użytkownikami i grupami w systemie
Solaris. Do niedawna głównym systemem zarządzania z graficznym interfejsem
użytkowników, dostarczonym z systemem był admintool. Jednakże, wraz z wydaniem Admin
Pack dla systemu Solaris 8 zostało udostępnione nowe narzędzie – Solaris Management
Consol (SMC).
Użytkownicy
Wszyscy użytkownicy w systemie Solaris posiadają unikatowy identyfikator i cechy, które
mogą być używane do rozróżniania użytkowników między sobą, oraz do logicznego
powiązania użytkowników do grup. Większość fizycznych użytkowników systemu Solaris
posiada unikatową nazwą użytkownika, która zajmuje maksymalnie osiem znaków. Jak już
konto użytkownika zostanie utworzone, może zostać wykorzystane do następujących celów:
Zarządzanie powłokami,
Interaktywne wykonywanie aplikacji,
Planowanie uruchamiania aplikacji w określonym czasie i na konkretnych danych,
Dostęp do baz danych i innych usług systemowych.
Solaris posiada również predefiniowanych użytkowników (tj. root, daemon, bin, sys, Ip, adm,
uucp) do wykonywania różnego rodzaju rutynowych prac konserwacyjnych, tj.:
Alokacja zasobów systemu do wykonywania określonych zadań;
Uruchamianie serwera pocztowego;
Uruchamianie serwera Web;
Zarządzanie procesami.
Wiele innych cech użytkownika związane są z każdym użytkownikiem, w uzupełnieniu do
nazwy użytkownika i hasła. Te cechy to:
63 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Identyfikator użytkownika (UID) – unikalna liczba całkowita zaczynająca się od
użytkownika root (UID=0), kolejne przydzielane są zazwyczaj kolejno;
Elastyczny mechanizm rozróżniania różnych kategorii użytkowników, znany jako
grupy – grupy nie są tylko zestawem powiązanych użytkowników. System plików
Solaris pozwala przypisać do grup prawa czytania, zapisywania oraz wykonywania
plików, oprócz uprawnień przyznanych dla danego użytkownika;
Katalog domowy – domyślna lokalizacja przechowywania wszystkich plików
utworzonych przez danego użytkownika;
Rodzaj powłoki – używany do wydawania interaktywnych poleceń lub pisania
prostych programów;
Komentarz – przeważnie znajduje się tutaj pełna nazwa użytkownika.
Dodawanie użytkowników
Dodawanie użytkowników do systemu Solaris jest proste, jednakże operacja ta może być
wykonywana tylko przez użytkownika root. Są dwa sposoby dodawania użytkowników.
Pierwszy polega na edytowaniu pliku /etc/passwd. Prostszą metodą jest wykorzystanie
komendy useradd.
Tabela 21.Useradd - opcje wiersza polecenia
Opcje Znaczenie
-c Określa komentarz konta
-d Określa katalog domowy konta
-e Określa ważność konta
-f Określa interwał za zamknięcie konta
-g Określa grupę konta
-G Określa dodatkowe grupy konta
-k Określa katalog, który zawiera informacje szkieletu, które będą
kopiowane do nowego konta użytkownika
-m Tworzy katalog domowy użytkownika, jeśli nie istnieje
-s Określa pełną ścieżkę dostępu do powłoki logowania
-u Określa identyfikator użytkownika
#useradd -u uid -g gid -d katalog_domowy -s ścieżka_powłoki -c komentarz
nazwa_użytkownika
Dodawanie użytkownika o następujących parametrach:
Nazwa: jkowal
Komentarz: Jan Kowal
Powłoka: /usr/bin/bash
Składnia polecenia useradd wygląda następująco
64 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 100. dodawanie użytkownika poprzez terminal
W tym przypadku w linii poleceń podaliśmy identyfikator użytkownika oraz grupy. Jednakże
nie jest to wymagane, w systemach Solaris identyfikator jest definiowany, jako następna
wolna wartość na podstawie pliku /etc/passwd. Dla grup, domyślną wartością ID jest 1.
Powyższa komenda tworzy wpis w pliku /etc/passwd
Rysunek 101. Wyświetlony plik /etc/passwd
Aby dodać użytkownika przez SMC, uruchamiamy SMC wpisując w terminalu smc. W nowo
otwartym oknie wybieramy This Computer (172.0.0.1), Następnie System Configuration,
Users i Users Accounts.
Z paska zadań wybieramy Action->Add User->With Wizard…
65 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 102. Okno SMC
W pojawiającym okienku podajemy nazwę użytkownika oraz opcjonalnie pełną nazwę i
komentarz:
Rysunek 103. Dodawanie użytkownika
Klikamy Next, w następnym okienku ustawiamy identyfikator:
66 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 104. Ustawianie jego numeru ID
Następnie ustalamy hasło użytkownika:
Rysunek 105. Ustawianie hasła
Wybieramy grupę:
Rysunek 106. Wybór grupy
67 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Oraz katalog domowy:
Rysunek 107. Przypisanie katalogu domowego
Na końcu wyświetli się podsumowanie, klikamy Finish:
Rysunek 108. Okno podsumowujące
Modyfikowanie użytkowników
Komenda usermod przeznaczona jest do modyfikowania już utworzonych kont
użytkowników na systemach UNIX. Wykorzystuje dużo tych samych opcji wiersza poleceń,
co komenda useradd, dodatkowo wspiera kilka nowych.
Tabela 22. Usermod - opcje wiersza poleceń
Opcje Znaczenie
-l Zmiana nazwy użytkownika
-L Blokuje konto użytkownika (tylko Linux)
68 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
-m Zmiana katalogu użytkownika
-U Odblokowuje konto użytkownika (tylko Linux)
-u Zmiana identyfikatora użytkownika
Aby zmienić pole komentarza użytkownika jkowal, należy wpisać:
Rysunek 109. Zmiana parametrów konta
Aby modyfikować użytkownika przy pomocy SMC, klikamy na nim prawym przyciskiem
myszki i wybieramy Properties.
Rysunek 110. Modyfikowanie użytkownika
69 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
W tym miejscu możemy zmienić wszystkie parametry konta:
Rysunek 111. Okno właściwości użytkownika
Usuwanie użytkowników
Polecenie userdel usuwa użytkowników z systemu. Komenda ta wspiera tylko jedną opcję
wiersza poleceń, -r, co powoduje usunięcie użytkownika wraz z katalogiem domowym.
Aby usunąć wcześniej utworzonego użytkownika należy wpisać komendę:
Rysunek 112. Usuwanie konta użytkownika
Usuwanie użytkownika przy pomocy SMC sprowadza się do wybrania opcji Delete po
kliknięciu prawym przyciskiem myszki na danym użytkowniku
Rysunek 113. Usuwanie użytkownika
70 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
W pojawiającym się okienku można wybrać usunięcie katalogu domowego i skrzynki
pocztowej
Rysunek 114. Potwierdzenie usunięcia
Dodawanie grup
Za dodawanie grup odpowiada komenda groupadd. Dodaje ona wpis do pliku /etc/group.
Składnia tego polecenia wygląda następująco:
#groupadd -g gid -o nazwa_grupy
Tabela 23. Groupadd - opcje wiersza poleceń
Opcje Znaczenie
-g <gid> Przypisuje identyfikator grupy
-o Pozwala, by identyfikator był powtarzany (tj., kilka grup o różnych
nazwach posiada ten sam identyfikator)
Poniższy przykład doda nową grupą o nazwie akademia o identyfikatorze 1000:
Rysunek 115. Dodawanie grupy przez terminal
W pliku /etc/group powstał nowy wpis
71 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 116. Plik /etc/group
Aby dodać grupę za pomocą SMC przechodzimy kolejno do SMC->This Computer
(127.0.0.1)->System Configuration->Users->Groups. Z paska zadań wybieramy Action->Add
Group…
Rysunek 117. Dodawanie grupy
W powstałym oknie wpisujemy nazwę grupy, ustawiamy identyfikator, oraz możemy
przydzielić użytkowników do nowotworzonej grupy
72 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 118. Wprowadzanie parametrów
Modyfikowanie grup
Do modyfikowania parametrów grup służy polecenie groupmod. Składnia tego polecenia
wygląda następująco:
#groupmod -g gid -o -n nowa_nazwa nazwa_grupy
Tabela 24. Groupmod - opcje wiersza poleceń
Opcje Znaczenie
-g <gid> Przypisuje identyfikator grupy
-o Pozwala, by identyfikator był powtarzany (tj, kilka grup o różnych
nazwach posiada ten sam identyfikator)
-n <nowa_nazwa> Zmienia nazwę grupy
Poniższy przykład zmieni identyfikator grupy akademia na wartość 2000:
Rysunek 119. Zmiana parametrów grupy
Aby modyfikować grupę przy pomocy SMC klikamy na nią prawym przyciskiem myszki i
wybieramy Properties.
73 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 120. Okno właściwości grupy
Usuwanie grup
Do usuwania grup służy polecenie groupdel. Składnia przedstawia się następująco:
#groupdel nazwa_grupy
Poniższy przykład usunie grupę akademia:
Rysunek 121. Usuwanie grupy
Aby usunąć grupą przy pomocy SMC wybieramy Delete po kliknięciu prawym klawiszem
myszki na daną grupę
74 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 122. Usuwanie grupy
Zarządzanie hasłami
Wszystkie hasła przechowywane są w pliku /etc/shadow w postaci zaszyfrowanej.
Użytkownik beż ustawionego hasła posiada w nim następujący wpis
Rysunek 123. Plik /etc/shadow przed ustawieniem hasła
Aby ustawić, bądź zmienić hasło użytkownika poprzez terminal wykorzystywana jest funkcja
passwd.
Tabela 25. Opcje zarządzania hasłami
Opcje Znaczenie
-s <nazwa> Wyświetla atrybuty hasła dla poszczególnego użytkownika
-d <nazwa> Usuwa hasło dla danego użytkownika
-e <nazwa> Zmienia powłokę użytkownika
-f <nazwa> Zmusza użytkownika do zmiany hasła przy następnym logowaniu
-h <nazwa> Zmienia katalog domowy użytkownika
75 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
-l <nazwa> Blokuje konto użytkownika
-N <nazwa> Sprawia, że podane hasło dla danego użytkownika nie może być
wykorzystywane do logowania, nie blokuje konta
-u <nazwa> Odblokowuje konto użytkownika
Zmiana hasła dla użytkownika jkowal wygląda następująco:
Rysunek 124. Ustawianie hasła
Hasło w postaci zaszyfrowanej zostaje zapisane w pliku /etc/shadow. Powyższe ustawienie
hasła dodaje następującą linijkę w tym pliku:
Rysunek 125. Plik /etc/shadow po ustawieniu hasła
Do ustawienia, bądź zmiany hasła przy pomocy SMC postępujemy zgodnie z opisem jak przy
dodawaniu, bądź modyfikacji parametrów użytkownika z wykorzystaniem interfejsu SMC.
Zadania do samodzielnego rozwiązania
1. Stwórz nową grupę o dowolnych parametrach;
Rysunek 126. Utworzenie przykładowej grupy test
2. Stwórz nowego użytkownika jednocześnie przypisując go do tej grupy;
76 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 127. Utworzenie użytkownika user
3. Wyświetl informacje o nowo utworzonym użytkowniku z pliku /etc/passwd (komenda
cat);
Rysunek 128. Podgląd pliku /etc/passwd
4. Sprawdź utworzoną grupę i jej użytkowników, plik /etc/group;
Rysunek 129. Podgląd pliku /etc/group
5. Zmień grupę i opis utworzonemu użytkownikowi;
77 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 130. Zmiana parametrów konta user
6. Usuń utworzoną wcześniej grupę;
Rysunek 131. Usunięcie grupy test
7. Sprawdź wpis w pliku /etc/shadow odpowiadający utworzonemu użytkownikowi;
Rysunek 132. Podgląd pliku przed ustawieniem hasła
8. Wyloguj się z systemu, a następnie spróbuj się zalogować na nowo utworzone konto;
Rysunek 133. Wylogowywanie użytkownika
Logowanie, z powodu nie ustawionego hasła nie powiedzie się.
9. Zaloguj się jako root, ustaw hasło dla utworzonego użytkownika, z koniecznością
zmiany przy pierwszym logowaniu;
78 | Z a k ł a d S y s t e m ó w R o z p r o s z o n y c h - P o l i t e c h n i k a R z e s z o w s k a
Rysunek 134. Ustawianie hasła użytkownikowi user
10. Sprawdź zmiany w pliku /etc/shadow;
Rysunek 135. Podgląd pliku po ustawieniu hasła
11. Ponownie spróbuj zalogować się na utworzonego użytkownika;
Rysunek 136. Logowanie jako użytkownik user
12. Zaloguj się jako root, zablokuj użytkownika i spróbuj się zalogować na jego konto;
Rysunek 137. Blokowanie użytkownika
13. Zaloguj się jako root i usuń użytkownika wraz z katalogiem domowym.
Rysunek 138. Usuwanie użytkownika