Unix - operacje na plikach

Poniższe operacje należy wykonywać w oknie emulatora terminala uniksowego, takiego jak xterm, gnome-terminal, xfce4-terminal, lub innego. W raporcie z wykonania zadania odnotuj tylko wykonane punkty zadania. W przypadku gdy w danym punkcie zadania pojawia się pytanie, lub polecenie sformułowania wniosku, wpisz do raportu również odpowiedź lub wniosek.

Zadania do wykonania

  1. Tworzenie plików i wyświetlanie informacji o plikach

    Poleceniem touch utwórz pusty plik o dowolnej nazwie i wyświetl informacje o 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 wpisać/dopisać coś do pliku poleceniami:

    echo Pierwszy wpis > nazwa_pliku
    echo Dodatkowy wpis >> nazwa_pliku
    

    Dla sprawdzenia, wyświetl treść pliku w terminalu poleceniem cat. Ponownie wyświetl informacje o pliku poleceniem ls z tymi samymi opcjami. Sprawdź zmieniającą się długość i czas ostatniej modyfikacji 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 nawiasy klamrowe typu:

    raport_{janek,ala,ela,ola}.txt
    

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

  4. Znaki specjalne w nazwach plików

    Następnie powtó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 żaden system uniksowy 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 (tzn. nie pozwala robić w nim poprawek), 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ę pobieżnie z dodatkowymi trzema bitami praw dostępu w podręczniku man chmod (setuid, setgid, i sticky bit). Poszukaj plików z ustawionymi bitami stuid/setgid w katalogu /usr/bin i sformułuj wniosek dlaczego pewne pliki mają te bity ustawione. Sprawdź ustawienie bitu sticky dla katalogu /tmp. Wypróbuj jego działanie (aby w pełni to sprawdzić, przydatna będzie współpraca z innym użytkownikiem systemu). Opisz wynik w raporcie.

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

  10. 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 samym pliku 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.

  11. 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 \( \).

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

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. :-(