To jest stara wersja strony!


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 danego pliku 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.

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.

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

Ć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 (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, a jak do domowego (3 sposoby)?
  • 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 MC

Uruchomić Midnight Commander, mc i zmienić prawa dostępu do wybranego pliku Ctrl+X c.

5 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

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.1382350119.txt.gz · ostatnio zmienione: 2019/06/27 15:55 (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