setxattr失败,不支持操作

Ven*_*S A 3 c linux

我试图设置文件属性如下:

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

    if (setxattr("foo.txt", "user.test", "test", 4, XATTR_CREATE) == -1)
        perror("");
    
    Run Code Online (Sandbox Code Playgroud)

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

有什么事要启用吗?怎么解决这个?

Ola*_*che 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.
Run Code Online (Sandbox Code Playgroud)

因此,您的文件系统不支持扩展属性(例如,ext [234],cifs,btrfs),或者在内核版本或挂载时禁用它们.

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

man mount

ext2的挂载选项
...
user_xattr | nouser_xattr
支持"user".扩展属性(或不).