XATTR - Linux手册页

时间:2019-08-20 18:02:04  来源:igfitidea点击:

Linux程序员手册 第7部分
更新日期: 2020-06-09

名称

xattr-扩展属性

说明

扩展属性是与文件和目录永久关联的name:value对,类似于与流程关联的环境字符串。属性可以是定义的也可以是未定义的。如果已定义,则其值可以为空或非空。

扩展属性是对与系统中所有inode关联的普通属性的扩展(即stat(2)数据)。它们通常用于为文件系统提供其他功能-例如,可以使用扩展属性来实现其他安全功能,例如访问控制列表(ACL)。

具有文件或目录搜索权限的用户可以使用listxattr(2)检索为该文件或目录定义的属性名称列表。

扩展属性作为原子对象访问。读取(getxattr(2))会检索属性的整个值,并将其存储在缓冲区中。写入(setxattr(2))将所有以前的值替换为新值。

扩展属性消耗的空间可以计入文件所有者和文件组的磁盘配额。

Extended attribute namespaces

属性名称是以null终止的字符串。属性名称始终以完全限定的namespace.attribute形式指定,例如user.mime_typetrusted.md5sum,system.posix_acl_access或security.selinux。

命名空间机制用于定义扩展属性的不同类。存在这些不同的类有几个原因。例如,处理一个名称空间的扩展属性所需的权限和功能可能与另一名称空间不同。

当前,安全性,系统,可信和用户扩展属性类的定义如下。将来可能会添加其他类。

Extended security attributes

安全属性名称空间由内核安全模块(如"安全增强型Linux")使用,并用于实现文件功能(请参阅功能(7))。对安全属性的读写访问权限取决于安全模块为每个安全属性实施的策略。当未加载安全模块时,所有进程都具有对扩展安全属性的读取访问权限,而写访问权限仅限于具有CAP_SYS_ADMIN功能的进程。

System extended attributes

内核使用系统扩展属性来存储系统对象,例如访问控制列表。对系统属性的读写访问权限取决于内核中文件系统为每个系统属性实现的策略。

Trusted extended attributes

受信任的扩展属性仅对具有CAP_SYS_ADMIN功能的进程可见并且可访问。此类中的属性用于在用户空间(即内核外部)中实现将信息保留在普通进程不应该访问的扩展属性中的机制。

User extended attributes

可以将用户扩展属性分配给文件和目录,以存储任意附加信息,例如mime类型,字符集或文件编码。用户属性的访问权限由文件权限位定义:需要读取权限才能检索属性值,而需要写入者权限才能更改属性值。

常规文件和目录的文件权限位的解释与特殊文件和符号链接的文件权限位的解释不同。对于常规文件和目录,文件许可权位定义对文件内容的访问,而对于设备专用文件,它们定义对特殊文件所描述的设备的访问。在访问检查中不使用符号链接的文件许可权。这些差异将使用户以无法由组或世界可写特殊文件和目录的磁盘配额控制的方式消耗文件系统资源。

因此,用户扩展属性仅允许用于常规文件和目录,并且对用户扩展属性的访问仅限于所有者和具有具有粘性位的目录的适当功能的用户(请参见chmod(1)手册页粘性位的说明)。

Filesystem differences

内核和文件系统可能会限制可与文件关联的扩展属性的最大数量和大小。 VFS施加了以下限制:属性名称限制为255个字节,属性值限制为64 kB。可以返回的属性名称列表也限制为64 kB(请参阅listxattr(2)中的BUGS)。

某些文件系统,例如Reiserfs(以及以前的ext2和ext3),要求使用user_xattr挂载选项挂载文件系统,以便使用用户扩展属性。

在当前的ext2,ext3和ext4文件系统实现中,文件的所有扩展属性的名称和值使用的总字节数必须适合单个文件系统块(1024、2048或4096字节,具体取决于何时指定的块大小)。文件系统已创建)。

在Btrfs,XFS和Reiserfs文件系统实现中,对与文件关联的扩展属性的数量没有实际限制,并且用于在磁盘上存储扩展属性信息的算法是可伸缩的。

在JFS,XFS和Reiserfs文件系统实现中,EA值中使用的字节数限制是VFS施加的上限。

在Btrfs文件系统实现中,用于名称,值和实现开销字节的总字节数限制为文件系统节点大小的值(默认为16 kB)。

遵循规范

POSIX.1中未指定扩展属性,但是其他一些系统(例如BSD和Solaris)提供了类似的功能。

备注

由于存储扩展属性的文件系统也可能在具有不同字节顺序和机器字长的体系结构上使用,因此应注意以与体系结构无关的格式存储属性值。

该页面以前的名称为attr(5)。

另外参见

attr(1),getfattr(1),setfattr(1),getxattr(2),ioctl_iflags(2),listxattr(2),removexattr(2),setxattr(2),acl(5),capabilities(7), selinux(8)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/