Answers:
在Linux上由lsattr
/ 处理的属性chattr
,其中一些属性可以由相当多的文件系统存储(ext2 / 3/4,reiserfs,JFS,OCFS2,btrfs,XFS,nilfs2,hfsplus ...),甚至可以通过CIFS查询/ SMB(带有POSIX扩展名时)是标志。仅比可以打开或关闭以禁用或启用属性的位(如不可变或存档 ...)。它们的存储方式是特定于文件系统的,但通常作为inode中的16/32/64位记录。
在Linux本机文件系统(ext2 / 3/4,btrfs ...)上可以找到标志的完整列表,尽管并非所有标志都适用于所有FS,对于其他非本机FS,Linux会尝试将它们映射到等效文件相应文件系统中的功能。例如,OSX在HFS +文件系统上存储的simmutable标志被映射到Linux中相应的不可变标志chattr
。几乎没有文档说明什么文件系统支持什么标志。通常,读取内核源代码是唯一的选择。
另一方面,在Linux 上setfattr
或attr
Linux上设置的扩展属性存储的不仅仅是标志。它们也附加到文件,并且是键/值对,可以是(字节和值)字节的任意数组(尽管在某些文件系统上大小受限制)。
密钥可以是例如:system.posix_acl_access
或user.rsync.%stat
。该system
命名空间保留给系统(你不会有改变POSIX的ACL setfattr
,但多与setfacl
,POSIX的ACL只是碰巧被存储为至少某些文件系统的扩展属性),而user
命名空间可以通过应用程序使用(这里rsync
使用它作为--fake-super
选项,以在您不是超级用户时存储有关所有权或权限的信息。
同样,它们的存储方式是特定于文件系统的。有关更多信息,请参见WikiPedia 。
lsattr
/ chattr
非工作的ext
文件系统?如果不是,您将如何ext
在Linux的非系统上更改标志?另外,attr
手册页说,这是对XFS写入(即使它为我的作品上ext4
)。昨天我实际上花了很长时间研究这个问题,很难获得好的信息。请参阅-unix.stackexchange.com/questions/118840/…–
lsattr/chattr
用于文件标志。并非所有文件系统都支持所有标志,例如,其中某些标志(例如压缩)不适用于ext4,但适用于btrfs。
reiserfs
。
attr
命令适用于XFS文件系统,等效的文件系统独立命令是setfattr