Provided by: manpages-pl_4.26.0-1_all 

NAZWA
xattr - atrybuty rozszerzone
OPIS
Atrybuty rozszerzone są parami nazwa:wartość związanymi na stałe z plikami i katalogami, podobnie jak
zmienne środowiskowe są powiązane z procesami. Atrybut może być zdefiniowany lub niezdefiniowany. Jeśli
jest zdefiniowany, jego wartość może być pusta lub niepusta.
Atrybuty rozszerzone są rozszerzeniem zwykłych atrybutów, które są związane z wszystkimi i-węzłami w
systemie (tj. danymi stat(2)). Są często używane do zapewnienia dodatkowych funkcji w systemie plików —
przy użyciu atrybutów rozszerzonych mogą być zaimplementowane na przykład dodatkowe funkcje związanych z
bezpieczeństwem, takie jak listy kontroli dostępu (Access Control Lists - ACLs).
Użytkownicy z prawem przeszukiwania do pliku lub katalogu mogą użyć listxattr(2) do pobrania listy nazw
atrybutów zdefiniowanych dla danego pliku lub katalogu.
Dostęp do atrybutów rozszerzonych następuje jako do obiektów niepodzielnych. Odczytanie (getxattr(2))
pobiera całą wartość atrybutu i przechowuje go w buforze. Zapis (setxattr(2)) zastępuje poprzednią
wartość nową wartością.
Przestrzeń zajęta przez atrybuty rozszerzone może liczyć się do przydziałów dyskowych właściciela pliku i
grupy pliku.
Przestrzenie nazw atrybutów rozszerzonych
Nazwy atrybutów są łańcuchami ograniczonymi znakiem null. Nazwę atrybutu określa się zawsze jako nazwę w
pełni kwalifikowalną w postaci przestrzeń-nazw.atrybut, np. user.mime_type, trusted.md5sum,
system.posix_acl_access lub security.selinux.
Mechanizm przestrzeni nazw służy do definiowania różnych klas atrybutów rozszerzonych. Klasy te istnieją
z wielu powodów m.in uprawnienia i przywileje wymagane do zmiany atrybutów rozszerzonych mogą różnić się
między klasami.
Obecnie zdefiniowano (opisane poniżej) następujące klasy atrybutów rozszerzonych: bezpieczeństwa –
security, systemowe – system, zaufania – trusted i użytkownika – user. W przyszłości mogą być dodane
kolejne klasy.
Atrybuty rozszerzone bezpieczeństwa
Przestrzeń nazw atrybutów rozszerzonych bezpieczeństwa jest wykorzystywana przez moduły bezpieczeństwa
jądra, takie jak Security Enhanced Linux oraz do zaimplementowania przywilejów pliku (zob.
capabilities(7)). Uprawnienia do odczytu i zapisu atrybutów bezpieczeństwa zależą od zasad
zaimplementowanych dla każdego z atrybutów przez moduł bezpieczeństwa. Jeśli moduł bezpieczeństwa nie
jest załadowany, to wszystkie procesy mają prawo odczytu atrybutów rozszerzonych bezpieczeństwa, a prawo
do zapisu jest ograniczone do procesów z przywilejem CAP_SYS_ADMIN.
Systemowe atrybuty rozszerzone
Systemowe atrybuty rozszerzone są używane przez jądro do przechowywania obiektów systemowych takich jak
listy kontroli dostępu (ACL). Uprawnienia do odczytu i zapisu atrybutów systemowych zależą od zasad
zaimplementowanych dla każdego z atrybutów przez systemy plików w jądrze.
Atrybuty rozszerzone zaufania
Atrybuty rozszerzone zaufania są widoczne i dostępne tylko dla procesów z przywilejem CAP_SYS_ADMIN.
Atrybuty w tej klasie służą do implementowania mechanizmów w przestrzeni użytkownika (tj. poza jądrem),
które przechowują informacje w atrybutach rozszerzonych, do których zwykłe procesy nie powinny mieć
dostępu.
Atrybuty rozszerzone użytkownika
Atrybuty rozszerzone użytkownika mogą być przypisane plikom i katalogom w celu przechowywania dowolnych
informacji, takich jak: typ mime, zestaw znaków lub kodowanie pliku. Uprawnienia do dostępu do atrybutów
użytkownika są zdefiniowane w bitach uprawnień pliku: do pobrania atrybutu potrzebne jest uprawnienie do
odczytu, a do jego zmiany wymagane jest uprawnienie do zapisu.
Bity uprawnień zwykłych plików i katalogów są interpretowane w odmienny sposób od bitów uprawnień plików
specjalnych i dowiązań symbolicznych. W przypadku zwykłych plików i katalogów, bity uprawnień pliku
definiują dostęp do zawartości pliku, natomiast w przypadku plików specjalnych urządzeń definiują dostęp
do urządzenia opisanego plikiem specjalnym. Uprawnienia pliku dowiązań symbolicznych nie są używane przy
sprawdzaniu dostępu. Różnice te, w przypadku katalogów i plików specjalnych dostępnych do zapisu grupom
lub wszystkim, mogłyby pozwolić użytkownikom na używanie zasobów systemu plików w sposób niekontrolowany
przez przydziały dyskowe.
Z tego powodu, atrybuty rozszerzone użytkownika są dozwolone tylko w przypadku zwykłych plików i
katalogów, a dostęp do atrybutów rozszerzonych użytkownika jest ograniczony do właściciela oraz, w
przypadku katalogów z ustawionym bitem lepkości, użytkownika z odpowiednim przywilejem (opis bitu
lepkości znajduje się w podręczniku chmod(1)).
Różnice wynikające z systemów plików
Jądro oraz system plików może nałożyć limit maksymalnej liczby oraz rozmiaru atrybutów rozszerzonych
jakie można przypisać do pliku. Limitami wynikającymi z linuksowego wirtualnego systemu plików (VFS) są:
w przypadku nazw atrybutów – 255 bajtów, w przypadku wartości – 64 kB. Rozmiar zwracanej listy nazw
atrybutów jest natomiast ograniczony do 64 kB (zob. USTERKI w listxattr(2)).
Część systemów plików, takich jak Reiserfs (i historycznie ext2 oraz ext3) wymaga zamontowania systemu
plików z opcją montowania user_xattr, aby móc korzystać z atrybutów rozszerzonych przez użytkownika.
W aktualnych implementacjach systemów plików ext2, ext3 i ext4 całkowita przestrzeń używana przez nazwy i
wartości wszystkich atrybutów rozszerzonych pliku musi zmieścić się w pojedynczym bloku systemu plików
(jest to wartość 1024, 2048 lub 4096 bajtów, w zależności od rozmiaru bloku podanego w momencie tworzenia
systemu plików).
W implementacjach systemów plików Btrfs, XFS i Reiserfs nie istnieje praktyczny limit liczby atrybutów
rozszerzonych przypisanych do pliku, a algorytmy używane do przechowywania informacji o atrybutach
rozszerzonych na dysku są skalowalne.
W implementacjach systemów plików JFS, XFS i Reiserfs, ograniczenie bajtów użytych w wartości atrybutów
rozszerzonych, wynika wyłącznie z limitu narzuconego przez VFS.
W implementacji systemu plików Btrfs, całkowity rozmiar w bajtach używany przez nazwę, wartość i bajty
narzutu implementacji jest ograniczony do wartości rozmiaru węzła nodesize systemu plików (domyślnie
16 kB).
STANDARDY
Atrybuty rozszerzone nie są określone normą POSIX.1, lecz niektóre inne systemy (np. systemy BSD i
Solaris) udostępniają podobną funkcjonalność.
UWAGI
Ze względu na to, że systemy plików w których przechowywane są atrybuty systemowe, mogą być również
używane na architekturach z różną kolejnością bajtów oraz z różnym rozmiarem słowa maszynowego, należy
zwrócić uwagę, aby przechowywać wartości atrybutów w formacie niezależnym od architektury.
Niniejszy podręcznik nosił wcześniej nazwę attr(5).
ZOBACZ TAKŻE
attr(1), getfattr(1), setfattr(1), getxattr(2), FS_IOC_GETFLAGS(2const), FS_IOC_SETFLAGS(2const),
listxattr(2), removexattr(2), setxattr(2), acl(5), capabilities(7), selinux(8)
TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ
ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-
list@lists.sourceforge.net.
Linux man-pages 6.9.1 13 czerwca 2024 r. xattr(7)