Odpowiedzi:
Atrybuty obsługiwane przez lsattr
/ chattr
w systemie Linux, a niektóre z nich mogą być przechowywane przez kilka systemów plików (ext2 / 3/4, reiserfs, JFS, OCFS2, btrfs, XFS, nilfs2, hfsplus ...), a nawet kwerendy w CIFS / SMB (w przypadku rozszerzeń POSIX) są flagami. Tylko bity, które można włączyć lub wyłączyć, aby wyłączyć lub włączyć atrybut (taki jak niezmienny lub archiwizować ...). Sposób ich przechowywania jest zależny od systemu plików, ale ogólnie jako rekord 16/32/64-bitowy w i-węźle.
Pełna lista flag znajduje się w rodzimych systemach plików Linux (ext2 / 3/4, btrfs ...), chociaż nie wszystkie flagi dotyczą wszystkich FS, a dla innych nienatywnych FS, Linux próbuje zmapować je na równoważne funkcje w odpowiednim systemie plików. Na przykład flaga symulowalna przechowywana przez OSX w systemach plików HFS + jest odwzorowana na odpowiednią flagę niezmienną w systemie Linux chattr
. Jaka flaga jest obsługiwana przez jaki system plików w ogóle nie jest udokumentowany. Często czytanie kodu źródłowego jądra jest jedyną opcją.
Z drugiej strony, rozszerzone atrybuty ustawione w systemie Linux setfattr
lub attr
w sklepie przechowują więcej niż flagi. Są one również dołączone do pliku i są parami klucz / wartość, które mogą być (zarówno kluczem, jak i wartością) dowolnymi tablicami bajtów (choć z ograniczeniem rozmiaru w niektórych systemach plików).
Kluczem może być na przykład: system.posix_acl_access
lub user.rsync.%stat
. Przestrzeń system
nazw jest zarezerwowana dla systemu (nie zmieniłbyś list ACL POSIX za pomocą setfattr
, ale więcej setfacl
, POSL ACL są po prostu przechowywane jako rozszerzone atrybuty przynajmniej w niektórych systemach plików), podczas gdy user
przestrzeń nazw może być używana przez aplikacje (tutaj rsync
używa tej --fake-super
opcji do przechowywania informacji o własności lub uprawnieniach, gdy nie jesteś superużytkownikiem).
Ponownie, sposób ich przechowywania zależy od systemu plików. Aby uzyskać więcej informacji, zobacz WikiPedia .
lsattr
/ chattr
działa dla ext
systemów innych niż pliki? Jeśli nie, to jak zmieniłbyś flagi na ext
systemach innych niż Linux? Również attr
strona podręcznika mówi, że jest napisany dla XFS (chociaż działa dla mnie ext4
). Wczoraj spędziłem dużo czasu na analizowaniu tego, trudno jest uzyskać dobre informacje. Proszę zobaczyć - unix.stackexchange.com/questions/118840/…
lsattr/chattr
są dla flag plików. Nie wszystkie flagi są obsługiwane przez wszystkie systemy plików, na przykład niektóre z nich, takie jak kompresja, nie będą działać na ext4, ale będą działać na btrfs.
reiserfs
.
Wszystko zostało ukryte. inode
Kiedy zmieniasz plik, faktycznie zmieniasz jego. Do inode
skryptu masz dobre polecenie:
stat --format=%a yourfile
Możesz użyć %variable
i zwrócić przydatne zinode
Ale twoja odpowiedź:
xattr
jest na MacOS i chattr
na Linuxie.
attr
polecenie jest przeznaczone dla systemów plików XFS, równoważne niezależne polecenie dla systemu plików tosetfattr