setxattr失败,不支持操作

时间:2013-02-14 10:16:35

标签: c linux

我正在尝试按如下方式设置文件属性:

  1. 使用0644权限创建文件foo.txt
  2. 当我尝试setxattr为

    if (setxattr("foo.txt", "user.test", "test", 4, XATTR_CREATE) == -1)
        perror("");
    
  3. 我收到错误,因为操作不受支持

    有什么事要启用吗? 如何解决这个问题?

1 个答案:

答案 0 :(得分: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,没有单独的开关来启用内核配置中的扩展属性。当您启用对fs/nfs/dir.cCONFIG_NFS_V3的支持时,似乎已启用源CONFIG_NFS_V4。但NFS仍然依赖于底层文件系统。因此,您还必须在服务器端启用扩展属性。

来自man mount

  

安装ext2的选项
  ...
  的 user_xattr | nouser_xattr
  支持“用户”。扩展属性(或不)。