Unix - operacje na plikach

Poniższe operacje należy wykonywać w oknie emulatora terminala uniksowego, takiego jak xterm, gnome-terminal, xfce4-terminal, lub innego.
  1. Tworzenie plików i podstawowe operacje na plikach

    Poleceniem touch utwórz pusty plik o dowolnej nazwie i wyświetl operacje na nim poleceniem ls z opcjami (po kolei): -1 -a -l -i -u

  2. Przeglądanie, zapisy i odczyty do plików

    Wywołując jakiś edytor plików tekstowych wpisz do pliku jakąś treść (co najmniej jeden wiersz zakończony znakiem NEWLINE). Jeśli nie da się wywołać żadnego edytora tekstowego, to można dopisać coś do pliku poleceniem:

    echo Jakas tresc >> nazwa_pliku

    Ponownie wyświetl informacje o pliku poleceniem ls z tymi samymi opcjami. Po jakimś czasie wyświetl treść pliku w terminalu poleceniem cat. Sprawdź zmieniającą się długość pliku poleceniem ls.

    Sprawdź jak można wyświetlić poleceniem ls czas ostatniej modyfikacji pliku, a jak można sprawdzić czas dostępu do pliku.

  3. Globbing - metaznaki w nazwach plików

    Wypróbuj wyświetlanie informacji o pliku poleceniem ls zadając nazwę pliku z metaznakami * ? oraz [], np. ls -l nazwa_p*u albo ls -l ?azwa_pliku.

    Następnie zapoznaj się z podobnym do globbingu mechanizmem rozwijania napisów zawierających {}.

    Na czym polega zasadnicza różnica w działaniu metaznaków globbingu * ? i [], oraz mechaniźmie {}?

  4. Znaki specjalne w nazwach plików

    Następnie potwórz ćwiczenie z tworzeniem, oglądaniem, i usuwaniem pliku, którego nazwa będzie ciągiem spacji, oraz napisem '-i' lub '-f'.

    Jeśli sądzisz, że to było łatwe, to spróbuj jeszcze poćwiczyć z plikami, których nazwy będą zawierały znak NEWLINE.

    Jeśli i to Ci się udało, to spróbuj rzeczy najtrudniejszej, to znaczy utworzyć plik zawierający w nazwie znak '/'. Uwaga: nie trać na to zbyt wiele czasu. Jest to znak niedozwolony i system nie powinien do tego dopuścić.

    W przyszłości, po napisaniu dowolnego skryptu wykonującego dowolne operacje na plikach, nie zapomnij go wypróbować na plikach tego typu, zawierających w nazwie kłopotliwe znaki.

    Usuń utworzone pliki z katalogu poleceniem rm.

  5. Prawa dostępu do plików

    Naucz się nadawać i zmieniać plikom prawa dostępu poleceniem chmod. Najwygodniejsze jest określanie praw dostępu w formie symbolicznej, np. =rw żeby nadać tylko dokładnie prawa odczytu i zapisu do pliku, albo +w żeby dodać prawo zapisu do istniejących.

    Eksperci często wolą podawać prawa dostępu w postaci numerycznej (ósemkowej), np. 644, co pozwala tylko definiować pełen wektor praw dostępu, ale robi wrażenie na początkujących użytkownikach.

  6. Semantyka praw dostępu do plików

    Sprawdź możliwość odebrania sobie praw dostępu do pliku, tzn. sprawdź czy jest to skuteczne, czy polecenia odczytu lub zapisu do pliku nie działają wtedy poprawnie.

    Sprawdź, jaki będzie efekt odebrania sobie praw dostępu do pliku jako właścicielowi, ale jednocześnie pozostawienia praw dostępu jako członkowi grupy. Jaki wniosek możesz sformułować?

    Powtórz to samo w odniesieniu do praw dostępu dla "wszystkich". Czy tu mechanizm praw dostępu działa spójnie z poprzednimi?

  7. Prawa dostępu w odniesieniu do katalogów

    Wykorzystując możliwość odbierania i nadawania samemu sobie praw dostępu, sprawdź działanie uprawnień 'r' i 'x' w odniesieniu do katalogów. Sprawdź co możesz zrobić z katalogiem, do którego nie będzie żadnego z tych praw, oraz z każdym z nich oddzielnie.

    W szczególności, sprawdź możliwość wykonywania operacji na plikach (odczytu, zapisu do pliku, oraz listowania informacji o pliku) istniejących w podkatalogu, z podawaniem pełnych nazw pliku (bez * ani ?), i bez wchodzenia do podkatalogu.

    Jaki możesz sformułować wniosek na temat działania praw dostępu 'r' i 'x' w odniesieniu do katalogu? Jaki wniosek można sformułować na temat braku prawa dostępu 'w' do katalogu?

  8. Mechanizm praw dostępu do plików - dodatkowe 3 bity

    Zapoznaj się z dodatkowymi trzema bitami praw dostępu i ich znaczeniem w odniesieniu do plików (oddzielnie plików wykonywalnych z atrybutem 'x', i zwykłych plików tekstowych bez niego) i katalogów. Wypróbuj ich działanie przez nadawanie i kasowanie tych bitów, sprawdzanie jak program ls wyświetla wektor praw dostępu, oraz jak działają te bity. Sformułuj wnioski.

  9. Maska tworzenia praw dostępu do plików - umask

    Zapoznaj się z maską praw dostępu do plików (poleceniem umask). Eksperymentując z różnymi ustawieniami maski, twórz nowe pliki (np. poleceniem touch), i sprawdzaj czy i w jakim stopniu system dostosowuje prawa dostępu do plików do zadanej maski.

    Jeśli chcesz utworzyć plik wykonywalny, aby sama operacja tworzenia pliku od razu nadawała mu uprawnienie 'x' to możesz w tym celu skompilować kompilatorem C jakiś prosty program, np. main(){}.

    Sformułuj wnioski na temat działania maski praw dostępu.

  10. Rozszerzone prawa dostępu do plików - listy ACL

    Sprawdź czy Twój system operacyjny obsługuje POSIX-owe listy praw dostępu ACL, a jeśli tak, to jakie polecenia do tego służą, i czy któryś z dostępnych systemów plików pozwala na tworzenie ACL. Zapoznaj się z poleceniami obsługującymi ACL na Twoim systemie. Np.:

      man -k acl
      man setfacl
      man getfacl
      man fs_listacl
      man fs_setacl
    

    Pracując w grupach dwuosobowych, utwórz plik, do którego inni użytkownicy nie będą mieli dostępu 'w', i nadaj to uprawnienie tylko jednej osobie, z którą współpracujesz. Wykonaj to ćwiczenie w drugą stronę, tzn. uzyskaj dostęp 'w' (i sprawdź działanie) do pliku kolegi/koleżanki, do którego dostęp typu właściciel, grupa, i inni jest dla Ciebie zabroniony.

    POSIX-owe listy ACL mają duże możliwości, począwszy od podstawowej funkcji, jaką jest możliwość nadawania praw dostępu dla indywidualnych użytkowników i grup, poprzez mechanizm maski, którą można szybko zablokować i odblokować prawa dostępu całej listy, a skończywszy na ustawianiu domyślnych praw dostępu dla katalogów i tworzonych w nich plików. Zapoznaj się przynajmniej pobieżnie z tymi możliwościami. Listy ACL nie są potrzebne w codziennej pracy, ale niekiedy pozwalają stworzyć strukturę praw dostępu, która byłaby niemożliwa przy użyciu podstawowych dziewięciu bitów.

  11. Dalsze operacje na plikach - linki

    Twórz pliki a następnie ich linki w katalogu bieżącym, podkatalogu, i katalogu nadrzędnym, z różnymi nazwami. Wykonuj różne operacje na poszczególnych linkach i sprawdź, efekty których odnoszą się do konkretnego linku, a które do całego pliku (wszystkich linków).

    Sformułuj na tej podstawie wniosek, które atrybuty pliku są zapisywane w katalogu, a które w bloku kontrolnym pliku (inode).

    Spróbuj utworzyć link (zwykły, tzn. twardy) do katalogu. Jeśli to się nie udało, to zastanów się i odpowiedz, dlaczego system nie dopuszcza takiej operacji.

  12. Linki symboliczne

    Twórz linki symboliczne do plików i katalogów. Zbadaj własności linków symbolicznych jako obiektów w systemie plików. Sprawdź jakie polecenia systemu wykonują operacje na obiekcie linku, a jakie na pliku do którego on linkuje. Sprawdź możliwość tworzenia i operowania na linku do nieistniejącego (lub okresowo nieistniejącego) linku. Sformułuj wnioski.

    Sprawdź możliwość tworzenia linków symbolicznych zawierających względną lub bezwzględną ścieżkę pliku, oraz linków zawierających tylko lokalną nazwę pliku, gdzie link będzie umieszczany w różnych katalogach. Sformułuj wnioski.

    Sprawdź możliwość tworzenia z wykorzystaniem linków symbolicznych cyklicznej struktury katalogów. Następnie uruchom różne polecenia systemowe zawierające opcję rekurencyjnego zagłębiania się do podkatalogów. Sformułuj wnioski na temat działania tych narzędzi na stworzonej strukturze cyklicznej, oraz istniejących możliwości kontrolowania tego zachowania.

  13. Program find

    Zapoznaj się z programem find i przećwicz niektóre jego możliwości. Na przykład, znajdź (jednym wywołaniem find) w katalogu /etc pliki o rozmiarze do 1kB utworzone w ciągu ostatnich 3 dni, oraz pliki nie większe niż 250 kB, utworzone nie mniej niż miesiąc, ale nie więcej niż trzy miesiące temu (dla uproszczenia: 30 i 90 dni temu).

    WSKAZÓWKA: zacznij od wyszukiwania plików z pojedynczymi kryteriami wyszukiwania, upewnij się, że dobrze je rozumiesz i uzyskujesz prawidłowe wyniki, i wtedy połącz kryteria wyszukiwania operatorami logicznymi -a i -o z wykorzystaniem nawiasów \( \).

  14. Program tar

    Zapoznaj się z programem tar i przećwicz archiwizowanie struktury katalogów z jego pomocą, a następnie odtwarzanie, zarówno całej zarchiwizowanej struktury, w tym z powrotem do pierwotnej lokalizacji w systemie plików, jak i w inne miejsce, oraz wybiórczo, pojedynczych plików. Zwróć uwagę, jak zapisywane są w archiwum pliki/katalogi zadane z pełną, bezwzględną ścieżką, a jak te zadane nazwą lokalną. Sprawdź jak odtwarzane z archiwum są atrybuty plików (np. jeśli odtwarza pliki inny użytkownik niż ich właściciel, i jeśli ma ustawioną jakąś istotnie różną maskę umask), jak odtwarzane są linki, itp.

    Sformułuj wniosek, jak tar archiwizuje pliki, z punktu widzenia ich późniejszego odtwarzania.

  15. Kopiowanie struktur katalogów

    Wykorzystując nabyte wiadomości o plikach, ich atrybutach, prawach dostępu, linkach, listach ACL, itp., utwórz niewielką, ale bogatą w atrybuty strukturę katalogów i plików. Następnie spróbuj znaleźć sposób przekopiowania całej struktury do jakiegoś innego katalogu.

    Wskazówka: podstawowym narzędziem do kopiowania plików jest program cp, a z opcją -r (rekurencyjnie) kopiuje on również struktury katalogów. Jednak czy przenosi on wiernie całą strukturę z jej "bogactwem"? Jeśli nie, to poszukaj narzędzia, które to potrafi. Podpowiedź: może tar? Jeśli nie to może cpio?

Uwaga ogólna

Ilekroć chcesz eksperymentować na swoim lub czyimś systemie na koncie roota (uid=0), wcześniej zgraj wszystkie dane z komputera (również te z partycji Windows, jeśli maszyna taką posiada) na nośniki zewnętrzne. Jednocześnie przygotuj się do reinstalacji systemu, zapisz najważniejsze ustawienia konfiguracyjne, zgraj hasła użytkowników, itp. :-(