Miesięcznik informatyków i menedżerów IT sektora publicznego

Artur Pęczak

Rozszerzone atrybuty plików

Rozszerzone atrybuty plików pozwalają dodawać własne metadane do obiektów na dysku. Mechanizm ten otwiera nowe możliwości zarządzania danymi w stosunku do podstawowych atrybutów używanych do kontrolowania dostępu do plików i folderów.

Do manipulowania dodatkowymi atrybutami (flagami) obiektów służą narzędzia chattr i lsattr, natomiast do ustawiania i odczytywania rozszerzonych atrybutów plików – narzędzia setfattr i getfattr z pakietu attr.

Punktem wyjścia do zrozumienia tematu jest przypomnienie podstawowych atrybutów systemu plikowego w systemie operacyjnym wykorzystywanych przez mechanizm list kontroli dostęp (Access Control List, ACL). Standardowa implementacja POSIX ACL, używana w Linuksie i wybranych odmianach BSD, stosuje atrybuty do opisu obiektów przechowywanych w systemie plikowym. Atrybuty te definiują właściciela obiektu na dysku, uprawnienia dostępu do niego, czasy dostępu i modyfikacji, jego nazwę i rozmiar oraz przechowują informację, czy mamy do czynienia z plikiem lub katalogiem. 

Kontrola uprawnień dostępu 

Listy kontroli dostępu definiują uprawnienia odczytu (read), zapisu (write) i wykonania (execute) oddzielnie dla użytkownika (user), grupy (group) i pozostałych (others). Jak zostało wspomniane, uprawnienia te przechowywane są w formie podstawowych atrybutów systemu plikowego. W atrybutach zapisywane są również znaczniki czasu dla plików i katalogów. Atrybut czas dostępu o pliku (atime) zawiera informację o czasie ostatniego dostępu do danych zawartych w pliku. Czas modyfikacji pliku (mtime) to data i godzina ostatniej zmiany w treści (zawartości) pliku. W atrybucie czas zmiany (ctime) odnotowywany jest czas zmiany atrybutów pliku, a więc każda zmiana właściciela, uprawnień dostępu, albo utworzenie lub usunięcie dowiązania symbolicznego do niego. Dla porządku dodajmy, że zmiana zawartości pliku (mtime) zmienia też informację o pliku, w rezultacie system plikowy modyfikuje również wartość atrybutu czas zmiany (ctime). 

Administrator powinien znać wymienione tutaj podstawowe atrybuty systemu plikowego oraz narzędzia do manipulowania nimi. Mowa jest zasadniczo o komendach chmod, chown oraz setfacl i getfacl z pakietu acl. Kwestie sterowania prawami dostępu w Linuksie nie są tematem niniejszego artykułu i nie będziemy się nimi dłużej zajmować. 

Flagi obiektów 

Wszystkie najważniejsze systemy plikowe dla Linuksa, w tym ext2/3/4, btrfs, ReiserFS, XFS, OCFS2 i JFS, obsługują zestaw predefiniowanych, dodatkowych atrybutów dających administratorowi szerszą kontrolę nad obiektami przechowywanymi na dyskach. Atrybuty te mają formę flag (ang. flags) zapisywanych jako rekord w i-węźle (i-node) danego obiektu w systemie. Do odczytywania i ustawiania dodatkowych atrybutów (flag) używa się narzędzi lsattr i chattr instalowanych domyślnie wraz z pakietem e2fsprogrs. Komenda chattr umożliwia zmianę atrybutów pliku. Operator + dodaje atrybut do obiektu, – usuwa go, zaś <=> powoduje, że stają się one jedynymi atrybutami, jakie posiadają pliki. 

Predefiniowane atrybuty (patrz: ramka: „Flagi (atrybuty) obiektów systemu plikowego obsługiwane przez chattr”) mają przypisane małe lub wielkie litery alfabetu. Podręcznik man wskazuje następujące atrybuty, które mogą być ustawiane przez chattr: tylko dopisywanie (a), bez aktualizacji atime (A), kompresja (c), bez kopiowania przy zapisie (C), bez zrzutów (d), synchroniczna aktualizacja katalogu (D), format ekstentu (e), niezmienny (i), dziennik danych (j), bezpieczne kasowanie (s), synchroniczna aktualizacja (S), brak łączenia końcówek (t), korzeń hierarchii katalogów (T) oraz niekasowalność (u). Oto przykład ich użycia: 

# chattr +i test.txt 
# lsattr test.txt ----i---------e--- test.txt 

W przykładzie komenda chattr +i dodaje atrybut immutable do pliku test.txt. Kolejne polecenie lsattr wyświetla zaś atrybuty ustawione dla tego pliku. Plik z atrybutem (i) nie może być zmieniany przez użytkownika ani superużytkownika (root) na żadnym z pól modyfikacji, tj. zmiany przechowywanych danych (zawartości), skasowania, zmiany nazwy, utworzenia dowiązania symbolicznego itd. Jeśli zachodzi potrzeba wprowadzenia zmian, niezbędne jest zdjęcie atrybutu (i) z pliku. Warto dodać, że nie wszystkie wymienione tutaj atrybuty są obsługiwane przez każdy system plikowy. Istnieją też atrybuty tylko do odczytu, np. błąd kompresji (E) i katalog indeksowany (I) ustawiane przez jądro systemu operacyjnego i możliwe do wyświetlenia przez lsattr, ale bez możliwości zmiany przez chattr. 

[…]

Autor zawodowo zajmuje się informatyką. Publikuje w magazynach komputerowych i serwisach internetowych.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma. Zapraszamy do składania zamówień na prenumeratę i numery archiwalne.
 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej