系统相关
首页 > 系统相关> > linux – xattr和chattr之间的区别

linux – xattr和chattr之间的区别

作者:互联网

xattr和chattr之间的关系和区别是什么?我想知道当我在Linux中设置chattr属性时Linux内核和inode元数据中发生了什么.

解决方法:

lsattr / chattr在Linux上处理的属性,其中一些可以存储在相当多的文件系统(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设置存储的不仅仅是标志.它们也附加到文件中,并且是键/值对,可以是(键和值)任意字节数组(尽管在某些文件系统上有大小限制).

密钥可以是例如:system.posix_acl_access或user.rsync.%stat.系统命名空间是为系统保留的(您不会使用setfattr更改POSIX ACL,但更多的是使用setfacl,POSIX ACL恰好至少在某些文件系统上存储为扩展属性),而用户命名空间可以使用应用程序(这里rsync使用它的–fake-super选项,当你不是超级用户时存储有关所有权或权限的信息).

同样,它们的存储方式是特定于文件系统的.请参阅WikiPedia以获取more information.

标签:inode,linux,xattr,files
来源: https://codeday.me/bug/20190809/1632506.html