Architektura Systemów Informatycznych

Ćwiczenie 2 - Terminal, strumienie danych, uprawnienia dostępu

Terminal - obsługa i podstawowe polecenia

Oprócz interfejsu graficznego (GNOME) równie ważnym, jeśli nie ważniejszym, sposobem komunikacji z jądrem systemu (kernel) jest powłoka (shell) tekstowa. W Ubuntu rolę tę pełni Bash (Bourne again shell). Polecenia można wprowadzać przy pomocy Terminala (menu Programy/Akcesoria/Terminal).

Składnia poleceń w Bashu jest bardzo prosta:

polecenie parametry argumenty

gdzie:

polecenie
nazwa polecenia
parametry
opcje zmieniające domyślny sposób działania
argumenty
nazwy plików, katalogów lub zmienne, na których wykonywane jest dane działanie

Przykładowo poniższe polecenie:

ls  -l  /home

da efekt w postaci wyświetlenia na ekranie listy plików i katalogów (polecenie ls), w formie rozszerzonej (parametr -l), znajdujących się w katalogu /home (argument /home).

W następnej części ćwiczeń zostaną podane nazwy wielu poleceń. W większości przypadków posiadaja one liczne parametry umożliwiające sterowanie efektem ich działania. Aby uzyskać opis danego polecenie, przykłady zastosowania i przede wszystkim listę parametrów wystarczy skorzystać z jednego z kilku poleceń:

--help
dodanie parametru --help (dwa myślniki) do nazwy polecenia powoduje wyświetlenie składni i listy parametrów
man
-wyświetla opis i instrukcję do danego polecenia
info
podobnie jak man, z tym że opis jest obszerniejszy
apropos
przeszukuje strony instrukcji do wszystkich poleceń w poszukiwaniu danej frazy (np. nazwy polecenia). Użycie z nazwą polecenia i parametrem -e da listę poleceń powiązanych z podanym argumentem

Podstawowe komendy:

cd
zmiana katalogu (change directory), podanie dwóch kropek (..) jako argumentu powoduje przejście do wyższego katalogu. Domyślnie przenosi do katalogu użytkownika.
ls
wyświetla listę plików
mkdir
tworzy katalog
touch
tworzy plik
rmdir
usuwa katalog
rm
usuwa plik
cp
kopiuje plik lub katalog
mv
przemieszcza/zmienia nazwę pliku lub katalogu
cat
odczyt danych z pliku

Ścieżki dostępu

Polecenia w terminalu za domyślną ścieżkę dostępu przyjmują aktualny katalog. Jeśli jako argument chcemy podać inna lokalizację, można to uczynić na dwa sposoby - bezwzględnie, rozpoczynając od początku systemu plików czyli tzw, korzenia zapisywanego poprzez /, na przykład:

cd  /etc/apache2

lub względnie, przy czym w tym wypadku, jeśli dana ścieżka nie rozpoczyna się od korzenia to na jej początku umiesczony zostanie domyślnie aktualny katalog, czyli wywołanie w katalogu /home polecenia:

cd   apache2

spowoduje próbę zmiany lokalizacji na /home/apache2.

Specyficznym przypadkiem ścieżki względnej jest użycie dwóch kropek, przenoszących do katalogu nadrzędnego. W podanej powyżej sytuacji polecenie:

cd   ../apache2

spowodowałoby próbę zmiany lokalizacji na /apache2.

ZADANIE 2.1: Przy pomocy terminala utwórz katalog cw w folderze domowym. Przejdź do nowo utworzonego katalogu i stwórz cztery pliki, z których dwa będa plikami tekstowymi a dwa o dowolnym innym rozszerzeniu. Utwórz kolejny katalog o nazwie cw2. Przekopiuj do niego przy pomocy jednego polecenia oba pliki tekstowe. Zmień ich nazwy. Usuń z pierwszego katalogu źródłowe pliki.

Przekierowywanie strumieni danych

Rezultat danego polecenia np. cat wysyłany jest na standardowe wyjście, czyli w większości wypadków wyświetlany w terminalu. Można jednak sterować strumieniem danych. Na przykład:

ls  -l > lista.txt

spowoduje zapisanie rezultatu do pliku lista.txt. Jeśli plik istnieje zostanie nadpisany. Gdyby celem było dopisanie do już istniejącego, należałoby użyć składni:

ls  -l >> lista.txt

Niezmiernie użytecznym narzędziem jest tzw. potok (ang. pipe), oznaczany przez pionową kreskę. Sluży on do przesyłania danych pomiędzy poleceniami. Po zastosowaniu rezultat działania pierwszego polecenia nie jest wyświetlany, lecz przekazywany jako argument dla kolejnego. Na przykład:

man  ls | lpr

spowoduje wydrukowanie instrukcji do polecenia ls na domyślnej drukarce.

ZADANIE 2.2: W folderze cw2 utwórz plik tekstowy zawierający rozszerzona listę plików w katalogu cw. Dopisz do niej w tym samym formacie pliki z katalogu cw2. Wynik zapisz dodatkowo w postaci pliku PDF.

Uprawnienia dostępu

W systemach typu UNIX, pliki i katalogi mają trzy grupy uprawnień dostępu: dla właściela pliku, grupy użytkowników do której należy właściciel oraz dla wszystkich pozostałych. Szybki podgląd uprawnień zapewnia dłuższa wersja (parametr -l) polecenia wyświetlającego listę plików w katalogu (ls). Uprawnienia oznaczone są za pomocą liter a ich znaczenie jest nieco inne dla pliku oraz katalogu.

I tak, w zapisie plik/katalog prawa dostępu można opisać następująco:

-
brak uprawnień/brak uprawnień
r
odczyt/podgląd zawartości
w
zapis i zmiana pliku/tworzenie, kasowanie, zmiana nazw plików w katalogu
x
wykonywanie/wykonywanie, zmiany w plikach

Każda grupa użytkowników ma zatem uprawnienia określone przy pomocy trzech liter. Istnieje jednak skrótowy, liczbowy zapis uprawnień:

0 (---)
1 (--x)
2 (-w-)
3 (-wx)
4 (r--)
5 (r-x)
6 (rw-)
7 (rwx)

Taki format zapisu wykorzystuje polecenie chmod, służące właśnie do zmiany uprawnień:

chmod nowe_uprawnienia nazwa_pliku


ZADANIE 2.3: Zmień uprawnienia dostępu do katalogu cw2 na takie, aby umożliwić grupie głównego użytkownika tworzenie w nim nowych plików ale nie ich zmianę lub wykonywanie a głównemu użytkownikow zezwól na dowolne operacje. Zmień uprawnienia dowolnego pliku tekstowego w katalogu na cw2 na takie, aby uniemożliwić zmianę jego treści, przy jednoczesnym zezwoleniu na odczyt.

Autor: Michał Rzeszewski, Instytut Geokologii i Geoinformacji, UAM Poznań, mail: mrzeszewski@gmail.com
Creative Commons License
Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Na tych samych warunkach 2.5 Polska.