用户命名空间与目录管理详解
1. 用户命名空间
用户命名空间是普通进程使用的标准命名空间,内核通过常规文件权限位来控制对该命名空间的访问。若要从现有键读取值,进程必须对给定文件有读取权限;若要创建新键或向现有键写入值,进程则需有写入权限。并且,只能为常规文件分配用户命名空间中的扩展属性,符号链接或设备文件不适用。在设计使用扩展属性的用户空间应用程序时,用户命名空间可能是首选。
2. 扩展属性操作
POSIX 定义了应用程序可对给定文件的扩展属性执行的四种操作:
- 给定一个文件,返回该文件所有已分配扩展属性键的列表。
- 给定一个文件和一个键,返回相应的值。
- 给定一个文件、一个键和一个值,将该值分配给该键。
- 给定一个文件和一个键,从该文件中移除该扩展属性。
对于每种操作,POSIX 提供了三种系统调用:
- 对给定路径名进行操作的版本;若路径指向符号链接,则对链接的目标进行操作(通常行为)。
- 对给定路径名进行操作的版本;若路径指向符号链接,则对链接本身进行操作(系统调用的标准 l 变体)。
- 对文件描述符进行操作的版本(标准 f 变体)。
3. 检索扩展属性
检索扩展属性是最简单的操作,即根据键返回文件中扩展属性的值。相关系统调用如下:
#include <sys/types.h>
#include <attr/xattr.h>
ssize_t getxattr (const char *path, const char *key,
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



