Ответы:
Атрибуты обрабатываются в lsattr
/ chattr
в Linux и некоторые из них могут храниться в нескольких файловых системах (ext2 / 3/4, reiserfs, JFS, OCFS2, btrfs, XFS, nilfs2, hfsplus ...) и даже запрашиваться через CIFS / SMB (когда используется расширение POSIX) - это флаги. Только биты, которые можно включить или отключить, чтобы отключить или включить атрибут (например, неизменяемый или архивный ...). Как они хранятся, зависит от файловой системы, но обычно в виде 16-битной / 32-битной записи в inode.
Полный список флагов можно найти в собственных файловых системах Linux (ext2 / 3/4, btrfs ...), хотя не все флаги применимы ко всем FS, а для других не собственных FS Linux пытается сопоставить их с эквивалентными функции в соответствующей файловой системе. Например, флаг simmutable, который хранится в OSX в файловых системах HFS +, сопоставляется с соответствующим неизменяемым флагом в Linux chattr
. Какой флаг поддерживается какой файловой системой, практически не документирован. Часто чтение исходного кода ядра является единственным вариантом.
С другой стороны, расширенные атрибуты, установленные с помощью setfattr
или attr
в Linux, хранят больше, чем флаги. Они также прикреплены к файлу и представляют собой пары ключ / значение, которые могут быть (как ключом, так и значением) произвольными массивами байтов (хотя с ограничением размера в некоторых файловых системах).
Ключ может быть, например: system.posix_acl_access
или user.rsync.%stat
. Пространство system
имен зарезервировано для системы (вы не изменили бы списки ACL для POSIX setfattr
, но более того setfacl
, ACL для POSIX просто хранятся как расширенные атрибуты, по крайней мере, в некоторых файловых системах), тогда как user
пространство имен может использоваться приложениями (здесь rsync
использует его для своей --fake-super
опции, чтобы хранить информацию о владельце или разрешениях, когда вы не являетесь суперпользователем).
Опять же, как они хранятся, зависит от конкретной файловой системы. Смотрите WikiPedia для получения дополнительной информации .
lsattr
/ не chattr
для ext
файловых систем? Если нет, то как бы вы изменили флаги на не- ext
системах в Linux? Также на attr
странице руководства написано, что она написана для XFS (хотя она у меня работает ext4
). Я на самом деле потратил много времени на изучение вчерашнего дня, трудно найти хорошую информацию. Пожалуйста, смотрите - unix.stackexchange.com/questions/118840/…
lsattr/chattr
для файловых флагов. Не все флаги поддерживаются всеми файловыми системами, например, некоторые из них, такие как сжатие, не будут работать на ext4, но будут работать на btrfs.
reiserfs
.
Все было обработано. inode
Когда вы меняете файл, вы действительно меняете его. inode
Для скриптов у вас есть хорошая команда:
stat --format=%a yourfile
Вы можете использовать %variable
и вернуть полезное изinode
Но твой ответ:
xattr
находится на MacOS и chattr
на коробке Linux.
attr
команда предназначена для файловых систем XFS, эквивалентная независимая от файловой системы командаsetfattr