Praca z plikami i poleceniami
Przygotuj się do laboratorium
- Zdobądź dane dostępowe do serwera SPK – jeżeli ich nie pamiętasz (albo nie wiesz czy masz konto), pomogą w tym administratorzy (dane kontaktowe)
- Zapoznaj się z poleceniem chmod (przejrzyj manual do polecenia chmod i/lub stronę w wikipedii)
Wiedza
1. Pomoc
- Znasz już manuala: man
- Pracę z manualem warto zacząć od
man man
- Jeżeli z poleceniem związanych jest więcej niż jedna strona podręcznika, można wyświetlić krótki opis każdej z nich za pomocą:
man -f man
Odpowiednikiem tego wywołania jest:
whatis man
- Aby obejrzeć po kolei wszystkie strony dotyczące zadanego hasła:
man -a man
- Zbiór stron man można przeszukiwać według słów kluczowych:
man -k manual
Powyższe polecenie jest równoważne użyciu:
apropos manual
- Aby obejrzeć stronę związaną z danym hasłem z zadanej sekcji manuala:
man 1 man
2. Uruchamianie programów
- Pliki programów są przechowywane w systemie plików.
- Każdy plik programu w systemie ma nazwę (case sensitive).
- Program jest uruchamiany przez powłokę poprzez podanie nazwy jego pliku.
- Powłoka zapewnia mechanizmy kontroli pracy uruchamianych zadań (ang. job), programów.
- Powłoka zapewnia mechanizmy przekazywania wyników pracy zadań.
3. Argumenty poleceń
- Polecenia mogą przyjmować argumenty.
- Argumenty mogą być obowiązkowe (np. nazwa pliku) lub opcjonalne (tzw. opcje).
- Niektóre opcje przyjmują dodatkowe argumenty (obowiązkowe, lub opcjonalne).
- Nazwy opcji maja format długi i krótki.
- Argumenty są case sensitive.
- Spis opcji programu jest podany w man lub przez opcje
-h|--help
- Kolejność można zmieniać.
- Krótkie opcje można scalać.
- Przykłady wykorzystania opcji:
ls --all # format długi ls -a # format krótki # zmiana kolejności opcji: ls -a -l ls -l -a # przekazanie argumentów ls --ignore=\*.png # format długi ls -I \*.png # format krótki # scalanie opcji ls -al # OK ls -la # OK ls -alI \*.png # OK ls -Ila \*.png # ŹLE!
4. Praca z plikami
System plików ma strukturę drzewiastą:
/ /bin /bin/bash /home /home/gjn /home/gjn/plik /home/gjn/katalog/plik
- Jest zawsze tylko jedna taka struktura podczas pracy systemu.
- W związku z tym zawsze jest bezwzględny początek systemu plików: /
- Inne systemy mogą być włączane jako kolejne gałęzie.
- Katalog bieżący: .
Katalog nadrzędny: .. - Katalog jest plikiem!
Nazewnictwo:
- Wszystkie pliki i katalogi mają nazwy będące ciągami znaków alfanumerycznych.
- Nazwy mogą być długie i są case sensitive.
- Katalogi rozdziela się znakiem / (ang. slash).
- Ścieżka dostępu to nazwa pliku pozwalająca na jego umiejscowienie.
- Pełna (bezwzględna) ścieżka określa jego położenie względem początku drzewa, zaczyna się od /, np.
/etc/init.d/cups
. - Względna ścieżka określa położenie względem katalogu bieżącego.
~user
oznacza katalog domowy użytkownikauser
(mechanizm na poziomie powłoki, nie systemu plików!)
5. Polecenia dotyczące plików i katalogów
Pliki:
- cp kopiowanie
- mv przenoszenie, zmiana nazwy
- rm usuwanie
- touch zakładanie pustego, modyfikacja daty
- file typ pliku
Katalogi:
- cd zmiana bieżącego
- pwd podanie bieżącego
- mkdir zakładanie
- rmdir usuwanie (pustego!)
- ls pokazywanie zawartości
- du pokazywanie objętości (również pliku)
W nazwach plików do których użytkownik odwołuje się w powłoce można używać 2 metaznaków (znaków specjalnych), które zastępują ciągi znaków w nazwie pliku (ścieżce dostępu):
- znak
?
zastępuje dokładnie jeden znak, - znak
*
zastępuje ciąg znaków o dowolnej (w tym zerowej) długości.
6. Prawa dostępu
- Każdy plik ma określone prawa dostępu regulujące jaki dostęp mają do niego użytkownicy.
- Podstawowe atrybuty pliku określają możliwości jego:
- odczytu read
- zapisu write
- uruchamiania execute
- Każdy plik ma właściciela i jest przypisany do grupy właścicieli.
- Z tego punktu widzenia użytkownicy systemu dzielą się na:
- właściciela user
- grupę właścicieli group
- pozostałych użytkowników others (others = all - user - group)
7. Atrybuty pliku
- Wynik polecenia
ls -l
:-rwxrwxrwx N uzytkownik grupa rozmiar data nazwa
- Prawa dostępu:
- rwx rwx rwx TYPE USER GROUP OTHERS
- Typy plików:
TYPE: - d b c l p s
- Przykład:
$ ls -l cruise -rw-r--r-- 1 tom staff 683 Jul 4 2000 cruise $ ls -l /tmp/cruise -rwxr-xr-x 1 tom staff 783 Jul 4 2000 /tmp/cruise
8. SUID, SGID i sTicky bit
- SUID - set user id - pozwala na uruchomienie programu z prawami właściciela tego pliku
$ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 31704 lis 14 15:41 /usr/bin/passwd
- SGID - set group id - pozwala na uruchomienie danego pliku z prawami grupy tego pliku
- SGID - set group id - w przypadku katalogu, sprawia, że nowo-tworzone pliki, należą do tej grupy, do której należy katalog, a nie do grupy z uprawnieniami której pracuje użytkownik
- sTicky bit - pliki w katalogu z ustawionym sticky bit mogą być usuwane lub zmieniane tylko przez właściciela danego pliku lub katalogu
$ ls -l | grep tmp drwxrwxrwt 22 root root 12288 lis 14 15:41 tmp
9. Zmiana praw dostępu
- Prawa dostępu zmienia się przy pomocy polecenia chmod (ang. change mode):
chmod prawa nazwa_pliku
- gdzie prawa:
ugoa +-= rwx [, ugoa +-= rwx]
- Na przykład:
chmod u+r cruise; chmod u-w cruise chmod g+x,o-r cruise chmod u+s,g+s,+t tmp/
- Numeryczne prawa dostępu
r=4, w=2, x=1 su=4, sg=2, t=1 chmod NNNN plik
- Na przykład:
chmod 755 plik chmod u=rwx,g=rx,o=rx plik chmod 644 plik chmod u=rw,g=r,o=r plik chmod 44 plik chmod 0044 plik
- Administrator może zmieniać właściciela chown i grupę chgrp pliku:
chown user plik chgrp grupa plik
10. Domyślne prawa, umask
$ umask 0022 $ umask -S u=rwx,g=rx,o=rx $ touch nowy1 ; ls -l nowy1 -rw-r--r-- 1 gjn gjn 0 Feb 26 20:39 nowy1 $ umask 700 ; touch nowy2 ; ls -l nowy2 ----rw-rw- 1 gjn gjn 0 Feb 26 20:40 nowy2 $ umask 077 ; touch nowy3 ; ls -l nowy3 -rw------- 1 gjn gjn 0 Feb 26 20:40 nowy3 $ umask 000 ; touch nowy4 ; ls -l nowy4 -rw-rw-rw- 1 gjn gjn 0 Feb 26 20:40 nowy4
11. Prawa do katalogów
- write → zapis do katalogu
- read → odczyt zawartości (spisu plików!), możliwość wykonania ls
- execute → dostęp do zawartości (plików), możliwość wykonania cd
Przykład:
$ chmod a=rx katalog $ ls katalog plik $ cd katalog $ cd .. $ chmod a=r katalog ; ls katalog plik $ cd katalog sh: cd: katalog: Permission denied $ chmod a=x katalog ; cd katalog $ ls ls: .: Permission denied
12. Dowiązania symboliczne
- są wskaźnikami, skrótami do plików,
- pozwalają na udostępnianie pliku pod różnymi nazwami, w różnych katalogach,
- tworzenie przy pomocy
ln -s
:ln -s plik dowiazanie
- polecenie
ls -L
wyświetla pliki na które wskazuje link symboliczny. - bez opcji
-s
→ dowiązania sztywne, - liczba dowiązań sztywnych do pliku to
N
wls -l
-rwxrwxrwx N uzytkownik grupa rozmiar data nazwa
13. Midnight Commander
Jest to program do zarządzania plikami. Obsługuje się go podobnie jak inne typu “commander”. Dodatkowo:
- zmiana praw dostępu:
C-x c
- notacja C-x oznacza: wciśnij równocześnie Ctrl+X (więcej na kolejnych zajęciach)
- dostęp do klawiszy Fn (np. F1) przez Esc+N (np. Esc+1)
- lynx-like motion w konfiguracji
- wiele innych możliwości…
Z MC dostępny jest edytor: mcedit.
Ćwiczenia
I. Polecenia
- sprawdzić w manualu opis poleceń ls(1) cp(1) mkdir(1) rm(1)
- jakie opcje tych poleceń wyświetlają opis argumentów?
- w przypadku ls przetestować działanie opcji
l a A F d R
, w przypadku mkdir opcjip m
, dla rmf
iR
- dla poznanych powyżej opcji przetestować zmianę kolejności i łączenie
- znaleźć opcje ls, które przyjmują argumenty; przetestować je; na co należy zwrócić uwagę przy łączeniu?
- należy sprawdzić, czy nie są zdefiniowane aliasy zmieniające pracę używanych poleceń (polecenie un/alias)
- przy czytaniu manuala można przełączyć sesję na pracę w języku polskim przy pomocy
export LANG=pl_PL.UTF-8
(o ile jest dostępny dla danej strony), można też spróbować ustawić inne języki, np.fr_FR.UTF-8
, czyde_DE.UTF-8
.
II. Pliki
- przetestować działanie wszystkich poznanych poleceń do obsługi plików i katalogów
- jak przejść do katalogu domowego na różne sposoby?
- w katalogu domowym założyć taką strukturę katalogów i plików:
unix/ unix/lab2/ unix/lab2/alfa/ unix/lab2/alfa/one unix/lab2/beta/ unix/lab2/beta/two unix/lab2/beta/prima/ unix/lab2/beta/prima/three
- pliki można zakładać przy pomocy jednego z poleceń:
echo "jakis napis" > plik # tworzy plik o nazwie "plik" z zawartoscia "jakis napis" touch plik # tworzy pusty plik o nazwie "plik"
- wynik można sprawdzić przy pomocy tree (o ile jest dostępne w systemie)
- poruszając się po stworzonej strukturze należy przetestować działanie poleceń cd i pwd wykorzystując bezwzględne i względne ścieżki dostępu, a tym katalogi specjalne
.
i..
- przetestować działanie metaznaków (gwiazdka, pytajnik) z poleceniem ls w katalogu
/usr/bin
- jak przejść do katalogu poprzedniego?
- jak przejść do katalogu domowego podanego użytkownika?
III. Prawa dostępu
- przeczytać podręcznik do chmod i sprawdzić sposób działania polecenia
- przetestować zmiany praw dostępu na plikach stworzonych w strukturze
unix/lab2
- odczyt testować przy pomocy
cat plik
- zapis przy pomocy
echo “cos” » plik
- uruchamianie przy pomocy
./plik
- wykonać ćwiczenia w parach (wykonanie ćwiczeń w parach uzależnione jest od aktualnej konfiguracji systemu)
- ćwiczenie podobne do powyższego, aby obserwować wpływ zmiany praw dostępu na możliwości dostępu do plików drugiej osoby
- prawa dostępu na katalogach - próbuj czytać pliki w katalogach drugiej osoby: czym różni się read od execute? sprawdzić działanie pwd, ls i cd przy różnych kombinacjach tych praw (szczególnie: tylko read, tylko execute)
- jakie muszą być spełnione warunki aby użytkownik A mógł tworzyć katalogi w katalogu, który należy do użytkownika B, a co wystarczy do zapisu plików w katalogu?
- prawa numeryczne: sposób działania i użycie; czym się różnią od symbolicznych?
- numeryczne prawa dostępu a polecenie umask, sprawdzić działanie dla różnych wartości.
- oglądnąć bity SUIG/sTicky na plikach/katalogach:
ls -ld /tmp ls -l /usr/bin/passwd
IV. Linki
- przeczytać opis do ln(1)
- stworzyć dowiązania symboliczne do plików przy pomocy
ln -s
:ln -s plik dowiazanie
- co się dzieje przy czytaniu, zapisywaniu, uruchamianiu dowiązania?
- co przy jego usuwaniu?, a co przy usuwaniu samego pliku?
- sprawdzić działanie dowiązań do katalogów; jak działa pwd, co dają opcje
P L
V. Midnight Commander
- Uruchomić Midnight Commander, mc i zmienić prawa dostępu do wybranego pliku za pomocą
C-x c
.