xattr(7) Miscellaneous Information Manual xattr(7) NAZWA xattr - atrybuty rozszerzone OPIS Atrybuty rozszerzone sa parami nazwa:wartosc zwiazanymi na stale z plikami i katalogami, podobnie jak zmienne srodowiskowe sa powiazane z procesami. Atrybut moze byc zdefiniowany lub niezdefiniowany. Jesli jest zdefiniowany, jego wartosc moze byc pusta lub niepusta. Atrybuty rozszerzone sa rozszerzeniem zwyklych atrybutow, ktore sa zwiazane z wszystkimi i-wezlami w systemie (tj. danymi stat(2)). Sa czesto uzywane do zapewnienia dodatkowych funkcji w systemie plikow -- przy uzyciu atrybutow rozszerzonych moga byc zaimplementowane na przyklad dodatkowe funkcje zwiazanych z bezpieczenstwem, takie jak listy kontroli dostepu (Access Control Lists - ACLs). Uzytkownicy z prawem przeszukiwania do pliku lub katalogu moga uzyc listxattr(2) do pobrania listy nazw atrybutow zdefiniowanych dla danego pliku lub katalogu. Dostep do atrybutow rozszerzonych nastepuje jako do obiektow niepodzielnych. Odczytanie (getxattr(2)) pobiera cala wartosc atrybutu i przechowuje go w buforze. Zapis (setxattr(2)) zastepuje poprzednia wartosc nowa wartoscia. Przestrzen zajeta przez atrybuty rozszerzone moze liczyc sie do przydzialow dyskowych wlasciciela pliku i grupy pliku. Przestrzenie nazw atrybutow rozszerzonych Nazwy atrybutow sa lancuchami ograniczonymi znakiem null. Nazwe atrybutu okresla sie zawsze jako nazwe w pelni kwalifikowalna w postaci przestrzen-nazw.atrybut, np. user.mime_type, trusted.md5sum, system.posix_acl_access lub security.selinux. Mechanizm przestrzeni nazw sluzy do definiowania roznych klas atrybutow rozszerzonych. Klasy te istnieja z wielu powodow m.in uprawnienia i przywileje wymagane do zmiany atrybutow rozszerzonych moga roznic sie miedzy klasami. Obecnie zdefiniowano (opisane ponizej) nastepujace klasy atrybutow rozszerzonych: bezpieczenstwa - security, systemowe - system, zaufania - trusted i uzytkownika - user. W przyszlosci moga byc dodane kolejne klasy. Atrybuty rozszerzone bezpieczenstwa Przestrzen nazw atrybutow rozszerzonych bezpieczenstwa jest wykorzystywana przez moduly bezpieczenstwa jadra, takie jak Security Enhanced Linux oraz do zaimplementowania przywilejow pliku (zob. capabilities(7)). Uprawnienia do odczytu i zapisu atrybutow bezpieczenstwa zaleza od zasad zaimplementowanych dla kazdego z atrybutow przez modul bezpieczenstwa. Jesli modul bezpieczenstwa nie jest zaladowany, to wszystkie procesy maja prawo odczytu atrybutow rozszerzonych bezpieczenstwa, a prawo do zapisu jest ograniczone do procesow z przywilejem CAP_SYS_ADMIN. Systemowe atrybuty rozszerzone Systemowe atrybuty rozszerzone sa uzywane przez jadro do przechowywania obiektow systemowych takich jak listy kontroli dostepu (ACL). Uprawnienia do odczytu i zapisu atrybutow systemowych zaleza od zasad zaimplementowanych dla kazdego z atrybutow przez systemy plikow w jadrze. Atrybuty rozszerzone zaufania Atrybuty rozszerzone zaufania sa widoczne i dostepne tylko dla procesow z przywilejem CAP_SYS_ADMIN. Atrybuty w tej klasie sluza do implementowania mechanizmow w przestrzeni uzytkownika (tj. poza jadrem), ktore przechowuja informacje w atrybutach rozszerzonych, do ktorych zwykle procesy nie powinny miec dostepu. Atrybuty rozszerzone uzytkownika Atrybuty rozszerzone uzytkownika moga byc przypisane plikom i katalogom w celu przechowywania dowolnych informacji, takich jak: typ mime, zestaw znakow lub kodowanie pliku. Uprawnienia do dostepu do atrybutow uzytkownika sa zdefiniowane w bitach uprawnien pliku: do pobrania atrybutu potrzebne jest uprawnienie do odczytu, a do jego zmiany wymagane jest uprawnienie do zapisu. Bity uprawnien zwyklych plikow i katalogow sa interpretowane w odmienny sposob od bitow uprawnien plikow specjalnych i dowiazan symbolicznych. W przypadku zwyklych plikow i katalogow, bity uprawnien pliku definiuja dostep do zawartosci pliku, natomiast w przypadku plikow specjalnych urzadzen definiuja dostep do urzadzenia opisanego plikiem specjalnym. Uprawnienia pliku dowiazan symbolicznych nie sa uzywane przy sprawdzaniu dostepu. Roznice te, w przypadku katalogow i plikow specjalnych dostepnych do zapisu grupom lub wszystkim, moglyby pozwolic uzytkownikom na uzywanie zasobow systemu plikow w sposob niekontrolowany przez przydzialy dyskowe. Z tego powodu, atrybuty rozszerzone uzytkownika sa dozwolone tylko w przypadku zwyklych plikow i katalogow, a dostep do atrybutow rozszerzonych uzytkownika jest ograniczony do wlasciciela oraz, w przypadku katalogow z ustawionym bitem lepkosci, uzytkownika z odpowiednim przywilejem (opis bitu lepkosci znajduje sie w podreczniku chmod(1)). Roznice wynikajace z systemow plikow Jadro oraz system plikow moze nalozyc limit maksymalnej liczby oraz rozmiaru atrybutow rozszerzonych jakie mozna przypisac do pliku. Limitami wynikajacymi z linuksowego wirtualnego systemu plikow (VFS) sa: w przypadku nazw atrybutow - 255 bajtow, w przypadku wartosci - 64 kB. Rozmiar zwracanej listy nazw atrybutow jest natomiast ograniczony do 64 kB (zob. USTERKI w listxattr(2)). Czesc systemow plikow, takich jak Reiserfs (i historycznie ext2 oraz ext3) wymaga zamontowania systemu plikow z opcja montowania user_xattr, aby moc korzystac z atrybutow rozszerzonych przez uzytkownika. W aktualnych implementacjach systemow plikow ext2, ext3 i ext4 calkowita przestrzen uzywana przez nazwy i wartosci wszystkich atrybutow rozszerzonych pliku musi zmiescic sie w pojedynczym bloku systemu plikow (jest to wartosc 1024, 2048 lub 4096 bajtow, w zaleznosci od rozmiaru bloku podanego w momencie tworzenia systemu plikow). W implementacjach systemow plikow Btrfs, XFS i Reiserfs nie istnieje praktyczny limit liczby atrybutow rozszerzonych przypisanych do pliku, a algorytmy uzywane do przechowywania informacji o atrybutach rozszerzonych na dysku sa skalowalne. W implementacjach systemow plikow JFS, XFS i Reiserfs, ograniczenie bajtow uzytych w wartosci atrybutow rozszerzonych, wynika wylacznie z limitu narzuconego przez VFS. W implementacji systemu plikow Btrfs, calkowity rozmiar w bajtach uzywany przez nazwe, wartosc i bajty narzutu implementacji jest ograniczony do wartosci rozmiaru wezla nodesize systemu plikow (domyslnie 16 kB). STANDARDY Atrybuty rozszerzone nie sa okreslone norma POSIX.1, lecz niektore inne systemy (np. systemy BSD i Solaris) udostepniaja podobna funkcjonalnosc. UWAGI Ze wzgledu na to, ze systemy plikow w ktorych przechowywane sa atrybuty systemowe, moga byc rowniez uzywane na architekturach z rozna kolejnoscia bajtow oraz z roznym rozmiarem slowa maszynowego, nalezy zwrocic uwage, aby przechowywac wartosci atrybutow w formacie niezaleznym od architektury. Niniejszy podrecznik nosil wczesniej nazwe attr(5). ZOBACZ TAKZE attr(1), getfattr(1), setfattr(1), getxattr(2), ioctl_iflags(2), listxattr(2), removexattr(2), setxattr(2), acl(5), capabilities(7), selinux(8) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. xattr(7)