Rozszerzone atrybuty pliku

Z Wikipedii, wolnej encyklopedii

Rozszerzone atrybuty pliku – funkcje systemu plików, które pozwalają użytkownikom kojarzyć pliki komputerowe z metadanymi nieinterpretowanymi przez system plików, podczas gdy zwykłe atrybuty mają ściśle określony przez system plików cel (taki jak uprawnienia lub zapisy czasów tworzenia i modyfikacji). W przeciwieństwie do forków, które zwykle mogą być tak duże, jak maksymalny rozmiar pliku, rozszerzone atrybuty są zwykle ograniczone do wartości znacznie mniejszej niż maksymalny rozmiar pliku. Typowe zastosowania obejmują przechowywanie autora dokumentu, kodowanie znaków dokumentu tekstowego lub sumy kontrolnej, hashu kryptograficznego lub certyfikatu klucza publicznego oraz informacje dotyczące uznaniowej kontroli dostępu.

W systemach uniksopodobnych rozszerzone atrybuty są zwykle skracane jako xattr[1].

Implementacje[edytuj | edytuj kod]

AIX[edytuj | edytuj kod]

W systemie AIX system plików JFS2 v2 obsługuje rozszerzone atrybuty, które są dostępne za pomocą komendy getea[2]. Interfejsy API getea,[3], setea[4], listea[5], statea[6], i removeea[7] obsługują pobieranie, ustawianie, wyświetlanie, uzyskiwanie informacji i usuwanie rozszerzonych atrybutów.

OpenBSD[edytuj | edytuj kod]

Obsługa rozszerzonych atrybutów plików została usunięta z kodu źródłowego OpenBSD w 2005 r. Z powodu braku zainteresowania listami kontroli dostępu[8]

FreeBSD[edytuj | edytuj kod]

We FreeBSD 5.0 i nowszych systemy plików UFS1, UFS2 i ZFS obsługują rozszerzone atrybuty, używając rodziny wywołań systemowych extattr_[9]. Każdy zwykły plik może mieć listę rozszerzonych atrybutów. Każdy atrybut składa się z nazwy i powiązanych danych. Nazwa musi być ciągiem zakończonym zerem i istnieje w przestrzeni nazw identyfikowanej przez identyfikator przestrzeni nazw o małej liczbie całkowitych. Obecnie istnieją dwie przestrzenie nazw: użytkownik i system. Przestrzeń nazw użytkownika nie ma ograniczeń dotyczących nazewnictwa ani treści. Systemowa przestrzeń nazw jest używana głównie przez jądro do list kontroli dostępu i obowiązkowej kontroli dostępu.

Linux[edytuj | edytuj kod]

W systemie Linux systemy plików ext2, ext3, ext4, JFS, Squashfs, Yaffs2, ReiserFS, Reiser4, XFS, Btrfs, OrangeFS, Luster, OCFS2 1.6, ZFS i F2FS[10] obsługują rozszerzone atrybuty (w skrócie xattr), gdy są włączone w konfiguracji jądra. Każdy zwykły plik lub katalog może mieć rozszerzone atrybuty składające się z nazwy i powiązanych danych. Nazwa musi być ciągiem zakończonym zerem poprzedzonym identyfikatorem przestrzeni nazw i znakiem kropki. Obecnie istnieją cztery przestrzenie nazw: użytkownik, zaufany, bezpieczeństwo i system. Przestrzeń nazw użytkownika nie ma ograniczeń dotyczących nazewnictwa ani treści. Systemowa przestrzeń nazw jest używana głównie przez jądro do list kontroli dostępu. Bezpieczna przestrzeń nazw jest używana na przykład przez SELinux.

Obsługa koncepcji rozszerzonych atrybutów z wersji POSIX.1e, która została wycofana w 1997 r., Została dodana do Linuksa około 2002 r.[11][12] Od 2016 r. Nie są jeszcze szeroko stosowane przez programy Linux w przestrzeni użytkownika, ale są używane przez Beagle, OpenStack Swift, Dropbox, semantyczny framework metadanych KDE (Baloo), Chromium, Wget i cURL. Zestaw rekomendacji dotyczących ich używania jest dostępny na stronie freedesktop.org[13].

Jądro Linux umożliwia rozszerzonym atrybutom mieć nazwy do 255 bajtów, i wartości wynoszące do 64Kb[14], tak jak XFS i ReiserFS, ale ext2 / 3 / 4 i btrfs nakładają dużo mniejsze ograniczenia, wymagając od wszystkich atrybutów (nazwy i wartości) jednego pliku, aby zmieściły się w jednym „bloku systemu plików” (zwykle 4 KiB).

Rozszerzone atrybuty mogą być dostępne i modyfikowane za pomocą komend attr, getfattr i setfattr z pakietu attr[15] w większości dystrybucji.

macOS[edytuj | edytuj kod]

Mac OS X 10.4 i nowsze wersje obsługują rozszerzone atrybuty, czyniąc użytek z atrybutów systemu plików HFS+ funkcji pliku B*-drzewa, która pozwala na nazwane forki. Chociaż nazwane forki w HFS+ obsługują dowolnie duże ilości danych poprzez ekstenty, obsługa rozszerzonych atrybutów systemu operacyjnego obsługuje tylko atrybuty wbudowane, ograniczając ich rozmiar do rozmiaru, który może zmieścić się w pojedynczym węźle B*-drzewa[potrzebny przypis]. Każdy zwykły plik może mieć listę rozszerzonych atrybutów. HFS+ obsługuje dowolną liczbę nazwanych forków i nie wiadomo, czy macOS narzuca jakiekolwiek ograniczenie liczby rozszerzonych atrybutów. Każdy atrybut składa się z nazwy i powiązanych danych. Nazwa jest ciągiem Unicode zakończonym zerem.

Interfejsy API systemu macOS obsługują wyświetlanie[16], pobieranie[17], ustawienie[18], i usuwanie[19] rozszerzonych atrybutów z plików lub katalogów. Z wiersza poleceń te umiejętności są udostępniane za pomocą narzędzia xattr[20].

Od macOS 10.5 pliki pochodzące z Internetu są oznaczone com.apple.quarantine za pomocą rozszerzonych atrybutów plików[21]. W niektórych starszych wersjach systemu macOS (takich jak Mac OS X 10.6) atrybuty rozszerzone przestrzeni użytkownika nie były zachowywane podczas zapisywania w popularnych aplikacjach Cocoa (TextEdit, Preview itp.). [ <span title="This claim needs references to reliable sources. (October 2012)">potrzebne źródło</span> ]

OS/2[edytuj | edytuj kod]

W wersji 1.2 systemu OS/2 i nowszych system plików HPFS został zaprojektowany z myślą o rozszerzonych atrybutach, ale wsparcie dla nich zostało również doposażone w systemie plików FAT systemu DOS. Aby zachować zgodność z innymi systemami operacyjnymi korzystającymi z partycji FAT, atrybuty OS/2 są przechowywane w jednym pliku „EA DATA. SF” znajdującym się w katalogu głównym. Ten plik jest zwykle niedostępny, gdy system operacyjny obsługujący rozszerzone atrybuty zarządza dyskiem, ale można nim dowolnie manipulować, na przykład pod DOS. Pliki i katalogi posiadające rozszerzone atrybuty wykorzystują jeden lub więcej klastrów w tym pliku. Logiczny numer klastra pierwszego używanego klastra jest przechowywany we wpisie pliku lub katalogu[22]. Te dwa bajty są używane do innych celów w systemie plików FAT32, dlatego też nie można zapisać rozszerzonych atrybutów OS/2 w tym systemie plików.

Części OS/2 w wersji 2.0 i późniejszych, takie jak Workplace Shell, używają kilku standardowych atrybutów rozszerzonych (zwanych także EA) do celów takich jak identyfikacja rodzaju pliku, komentarze, ikony i słów kluczowych dotyczących pliku. Programy napisane w interpretowanym języku Rexx przechowują już przeanalizowaną wersję kodu jako atrybut rozszerzony, aby umożliwić szybsze wykonanie.

Solaris[edytuj | edytuj kod]

Solaris w wersji 9 i nowszych pozwala plikom mieć „rozszerzone atrybuty”, które w rzeczywistości są forkami; maksymalny rozmiar „atrybutu rozszerzonego” jest taki sam, jak maksymalny rozmiar pliku, i są one odczytywane i zapisywane w taki sam sposób jak pliki. Wewnętrznie są one faktycznie przechowywane i dostępne jak normalne pliki, więc ich nazwy nie mogą zawierać znaków „/”[23] a ich własność i uprawnienia mogą się różnić od tych w pliku nadrzędnym.

Wersja 4 systemu plików NFS obsługuje rozszerzone atrybuty w taki sam sposób, jak Solaris.

Windows NT[edytuj | edytuj kod]

W systemie Windows NT rozszerzone atrybuty o ograniczonej długości są obsługiwane przez FAT[22], HPFS i NTFS. Zostało to zaimplementowane jako część podsystemu OS/2. Są one w szczególności wykorzystywane przez serwer NFS podsystemu Interix POSIX w celu implementacji uprawnień uniksopodobnych. Podsystem Windows dla systemu Linux dodany w Windows 10 Anniversary Update wykorzystuje je do podobnych celów, przechowując tryb pliku systemu Linux, właściciela, identyfikator urządzenia (jeśli dotyczy) i czasy plików w atrybutach rozszerzonych[24].

Ponadto NTFS może przechowywać atrybuty rozszerzone o dowolnej długości w postaci alternatywnych strumieni danych (ADS), rodzaju forka zasobu. Wtyczki menedżera plików Total Commander, takie jak NTFS Descriptions i QuickSearch eXtended, obsługują filtrowanie listy plików lub wyszukiwanie metadanych zawartych w strumieniach ADS.[25][26]

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

  1. xattr(7) – strona podręcznika systemu Linux
  2. IBM Knowledge Center [online], www.ibm.com [dostęp 2020-03-13] (ang.).
  3. IBM Knowledge Center [online], www.ibm.com [dostęp 2020-03-13] (ang.).
  4. IBM Knowledge Center [online], www.ibm.com [dostęp 2020-03-13] (ang.).
  5. IBM Knowledge Center [online], www.ibm.com [dostęp 2020-03-13] (ang.).
  6. IBM Knowledge Center [online], www.ibm.com [dostęp 2020-03-13] (ang.).
  7. IBM Knowledge Center [online], www.ibm.com [dostęp 2020-03-13] (ang.).
  8. CVS log for src/sys/ufs/ufs/Attic/extattr.h [online], cvsweb.openbsd.org [dostęp 2020-03-13].
  9. extattr(2) – strona podręcznika systemu FreeBSD
  10. Linux-Kernel Archive: [PATCH 13/16] f2fs: add xattr and acl functionalities [online], lkml.iu.edu [dostęp 2020-03-13].
  11. kernel/git/tglx/history.git – Linux kernel history [online], git.kernel.org [dostęp 2020-03-13].
  12. Red Hat Enterprise Linux AS 3 Release Notes [online], redhat.com [dostęp 2024-04-25] [zarchiwizowane z adresu 2015-12-21].
  13. CommonExtendedAttributes [online], www.freedesktop.org [dostęp 2020-03-13].
  14. limits.h\linux\uapi\include – kernel/git/torvalds/linux.git – Linux kernel source tree [online], git.kernel.org [dostęp 2020-03-13].
  15. attr – Summary [Savannah] [online], savannah.nongnu.org [dostęp 2020-03-13] (ang.).
  16. listxattr(2) – strona podręcznika systemu Linux
  17. getxattr(2) – strona podręcznika systemu Linux
  18. setxattr(2) – strona podręcznika systemu Linux
  19. removexattr(2) – strona podręcznika systemu Linux
  20. xattr(1) – strona podręcznika systemu Linux
  21. Launch Services Release Notes [online], developer.apple.com [dostęp 2020-03-13] (ang.).
  22. a b Implementation of extended attributes on the FAT file system [online], www.tavi.co.uk [dostęp 2020-03-13].
  23. fsattr(5) – strona podręcznika systemu Linux
  24. WSL File System Support | Microsoft Docs [online], blogs.msdn.microsoft.com [dostęp 2020-03-13] (ang.).
  25. NTFS Descriptions 1.2.1 – Total Commander [online], totalcmd.net [dostęp 2020-03-13].
  26. QuickSearch eXtended – - Total Commander [online], totalcmd.net [dostęp 2020-03-13].