Praca z plikami i poleceniami
- Po czym rozpoznać Unixa?
- Kot przebiegający po klawiaturze wpisuje poprawną komendę...
/* nadesłał: Grzegorz Mucha, IS 2012 */
DO PRZYGOTOWANIA
Samodzielnie należy przed tym laboratorium przygotować:
WPROWADZENIE
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ń.
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ć, przestawianie
opcje można scalać.
Opcje - przykłady
Format długi, krótki:
ls -a ; ls --all
Przestawianie:
ls -a -l ; ls -l -a
Argumenty:
ls --ignore=\*.png ; ls -I \*.png
Scalanie:
DOBRZE:
ls -al ; ls -la ; ls -alI \*.png
ŹLE!!!
ls -Ila \*.png
Praca z plikami
System plików ma strukturę drzewiastą:
/
/bin
/bin/bash
/home
/home/gjn
/home/gjn/plik
/home/gjn/katalog/plik
Praca z plikami
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/X11/XF86config.
Względna ścieżka określa położenie względem katalogu bieżącego.
~user
oznacza katalog domowy użytkownika user
(mechanizm na poziomie powłoki, nie systemu plików!)
Polecenia dotyczące plików
cp kopiowanie
mv przenoszenie, zmiana nazwy
rm usuwanie
touch zakładanie pustego, modyfikacja daty
file typ pliku
Polecenia dotyczące katalogów
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 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.
Prawa dostępu
Właściciele pliku
(others = all - user - group)
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 atrybutów
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
SUID, SGID i sTicky bit
$ 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 nowotworzone 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
Zmiana praw dostępu
chmod prawa nazwa_pliku
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
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
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
Zmiana właściciela
chown user plik
chgrp grupa plik
Zmienić właściciela może tylko root.
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
w ls -l
-rwxrwxrwx N uzytkownik grupa rozmiar data nazwa
Midnight Commander
Jest to program do zarządzania plikami. Obsługuje się go podobnie jak inne typu „commander”. Dodatkowo:
zmiana praw dostępu: Ctrl+X c
dostęp do klawiszy Fn przez ESC n
lynx-like motion w konfiguracji
wiele innych możliwości…
Z MC dostępney jest edytor mcedit.
ĆWICZENIA
1 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 opcji p m
, dla rm f
i R
dla poznanych powyżej opcji przetestować przestawianie i łączenie
znaleźć opcje ls, które przyjmują argumenty; przetestować je; na co należy zwrócić uwagę przy scalaniu?
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), można też spróbować ustawić inne języki, np. fr_FR
, czy de_DE
.
2 Pliki
prztestować 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 należy zakładać przy pomocy jednego z poleceń:
echo "jakis napis" > plik
touch plik
Wynik można sprawdzić przy pomocy tree.
poruszając sie 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?
3 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ć ćwiczenie podobne do powyższego, tak aby obserwować wpływ zmiany praw dostępu na możliwości dostępu do plików drugiej osoby
prawa dostępu na katalogach - ćwiczenie należy wykonywać w parach, próbując 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)
opcja -R
polecenia chmod powoduje rekursywną zmianę praw dostępu do zawartości katalogu.
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
4 Linki
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
5 MC
Uruchomić Midnight Commander, mc i zmienić prawa dostępu do wybranego pliku Ctrl+X c.
VARIA
Automatyczne generowanie listy obecności o poranku:
gjn:~$ who|awk '{print $1;}'|sort|uniq|xargs -i"{}" grep "{}" /etc/passwd|cut -d : -f5|cut -d, -f1|awk '{print $2,$1;}' |sed s/\ /,/g |sort >unix08-0800.cvs
Jak założyć swoją stronę domową na serwerze student?
$ cd
$ mkdir public_html
$ echo "to jest test strony uzytkownika: $USER" > public_html/index.html
$ chmod o+x .
$ chmod u+rwx,g=,o=x public_html
$ chmod a+r public_html/index.html