次のようにファイル属性を設定しようとしています。
- 0644の権限を持つファイルfoo.txtを作成します
私がこれのためにsetxattrをしようとしているとき
if (setxattr("foo.txt", "user.test", "test", 4, XATTR_CREATE) == -1) perror("");
操作がサポートされていないため、エラーが発生します
有効にするものはありますか?これを解決する方法は?
から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.c
のサポートを有効にすると有効になるようです。ただし、NFS は依然として基盤となるファイル システムに依存しています。そのため、サーバー側でも拡張属性を有効にする必要があります。CONFIG_NFS_V3
CONFIG_NFS_V4
ext2 のマウント オプション
...
user_xattr|nouser_xattr
"user" をサポートします。拡張属性 (またはそうでない)。