3

我正在尝试将文件属性设置如下:

  1. 使用 0644 权限创建文件 foo.txt
  2. 当我试图为此设置xattr时

    if (setxattr("foo.txt", "user.test", "test", 4, XATTR_CREATE) == -1)
        perror("");
    

我收到错误,因为不支持操作

有什么可以启用的吗?如何解决这个问题?

4

1 回答 1

5

setxattr

返回值

   On success, zero is returned.  On failure, -1 is returned and errno is set
   appropriately.  
   ...  
   If extended attributes are not supported by the file system, or are disabled,
   errno is set to ENOTSUP.

因此,要么您的文件系统不支持扩展属性(例如,ext[234]、cifs、btrfs 支持),要么它们在内核构建或挂载时被禁用。

对于 NFS,在内核配置中没有单独的开关来启用扩展属性。从源代码来看,当您启用对orfs/nfs/dir.c的支持时,它似乎已启用。但是 NFS 仍然依赖于底层文件系统。因此,您还必须在服务器端启用扩展属性。CONFIG_NFS_V3CONFIG_NFS_V4

man mount

ext2 的挂载选项
...
user_xattr|nouser_xattr
支持“用户”。扩展属性(或没有)。

于 2013-02-14T10:37:14.100 回答