courses:unix:lab_files

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

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żytkownika user (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 w ls -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
  • 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.

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 opcji p m, dla rm f i R
  • 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, czy de_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.
  • courses/unix/lab_files.txt
  • Last modified: 8 months ago
  • by kkt