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)

Metaznaki

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

  • 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

Właściciele pliku

  • 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)

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

  • 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 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

  • 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/
  • administrator może zmieniać właściciela chown i grupę chgrp pliku.

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

15 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.

16 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?

17 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
    

18 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

19 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
pl/dydaktyka/unix/lab_pliki_i_polecenia.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0