VFS_NFS4ACL_XATTR(8)

πŸ’– VFS_NFS4ACL_XATTR πŸ’–

okay bestie, so this is a section 8 manual page (yes, the system administration tools one, VFS_NFS4ACL_XATTR(8)) and it's about a lil VFS module called vfs_nfs4acl_xattr. buckle up, it's giving "saving NTFS-ACLs as NFS4 encoded blobs in extended attributes" and honestly? iconic. πŸŽ€


✨ NAME ✨

vfs_nfs4acl_xattr β€” save NTFS-ACLs as NFS4 encoded blobs in extended attributes πŸ¦‹


✨ SYNOPSIS ✨

vfs objects = nfs4acl_xattr

that's it. that's the whole vibe. no cap. πŸ’…


✨ DESCRIPTION ✨

This VFS module is part of the samba(7) suite, so it's already running with main character energy. πŸ‘‘

So like, the vfs_nfs4acl_xattr VFS module is basically the ✨interoperability layer✨ between two worlds: the SMB ACLs that clients expect, and an NFSv4 ACL implementation that a file system might provide. It's the translator bestie in the group chat, making everyone get along. 🫢

This module is stackable. slay.


✨ OPTIONS ✨

πŸ’œ nfs4:mode = [ simple | special ]

This one controls substitution of special IDs (OWNER@ and GROUP@) on NFS4 ACLs. And like, the use of mode simple is recommended, fr fr. In this mode, only non-inheriting ACL entries for the file owner and group are mapped to special IDs.

The following MODEs are understood by the module:

  • simple (default) β€” use OWNER@ and GROUP@ special IDs for non inheriting ACEs only. this is the one you want. periodt. πŸ’–
  • special (deprecated) β€” use OWNER@ and GROUP@ special IDs in ACEs for all file owner and group ACEs. it's giving legacy, we don't stan.

πŸ’œ nfs4:acedup = [dontcare|reject|ignore|merge]

This parameter configures how Samba handles duplicate ACEs encountered in NFS4 ACLs. And lowkey why does this matter? Because they allow creating duplicate ACEs with different bits for the same ID, which may confuse the Windows clients. the Windows clients are fragile, bestie. 😭

Following is the behaviour of Samba for different values:

  • dontcare β€” copy the ACEs as they come. just vibes, no thoughts.
  • reject (deprecated) β€” stop operation and exit with error on ACL set op. dramatic exit, honestly valid.
  • ignore (deprecated) β€” don't include the second matching ACE. we pretend we didn't see it. πŸ™ˆ
  • merge (default) β€” bitwise OR the 2 ace.flag fields and 2 ace.mask fields of the 2 duplicate ACEs into 1 ACE. fusion dance. ✨

πŸ’œ nfs4:chown = [yes|no]

This parameter allows enabling or disabling the chown supported by the underlying filesystem. 🚨 This parameter should be enabled with care as it might leave your system insecure. 🚨 that's the technical caveat and I am not sugarcoating it, bestie, that's a real risk, not a cute little quirk.

So some filesystems allow chown as a) giving b) stealing. It is the latter that is considered a risk. theft behavior. not the move. πŸ’€

Following is the behaviour of Samba for different values:

  • yes β€” Enable chown if as supported by the under filesystem.
  • no (default) β€” Disable chown. the safe lil default we love.

πŸ’œ nfs4acl_xattr:encoding = [nfs|ndr|xdr]

This parameter configures the marshaling format used in the ACL blob and the default extended attribute name used to store the blob. three flavors, pick your fighter. 🌈

  • When set to nfs β€” fetch and store the NT ACL in NFS 4.0 or 4.1 compatible XDR encoding. By default this uses the extended attribute "system.nfs4_acl". This setting also disables validate_mode.
  • When set to ndr (default) β€” store the NT ACL with POSIX draft NFSv4 compatible NDR encoding. By default this uses the extended attribute "security.nfs4acl_ndr".
  • When set to xdr β€” store the NT ACL in a format similar to NFS 4.1 RFC 5661 in XDR encoding. The main differences to RFC 5661 are the use of ids instead of strings as users and group identifiers and an additional attribute per nfsace4. By default this encoding stores the blob in the extended attribute "security.nfs4acl_xdr".

πŸ’œ nfs4acl_xattr:version = [40|41]

This parameter configures the NFS4 ACL level. Only 41 fully supports mapping NT ACLs and should be used. The default is 41. so like, just use 41. it's the moment. ⭐

πŸ’œ nfs4acl_xattr:default acl style = [posix|windows|everyone]

This parameter determines the type of ACL that is synthesized in case a file or directory lacks an ACL extended attribute. so it's the backup plan, the understudy, the "we need something" ACL.

  • When set to posix, an ACL will be synthesized based on the POSIX mode permissions for user, group and others, with an additional ACE for NT Authority\SYSTEM with full rights.
  • When set to windows, an ACL is synthesized the same way Windows does it, only including permissions for the owner and NT Authority\SYSTEM.
  • When set to everyone, an ACL is synthesized giving full permissions to everyone (S-1-1-0).

The default for this option is everyone. generous queen. πŸ‘‘

πŸ’œ nfs4acl_xattr:xattr_name = STRING

This parameter configures the extended attribute name used to store the marshaled ACL.

The default depends on the setting for nfs4acl_xattr:encoding. iykyk, it's a whole chain. 🧚

πŸ’œ nfs4acl_xattr:nfs4_id_numeric = yes|no (default: no)

This parameter tells the module how the NFS4 server encodes user and group identifiers on the network. With the default setting the module expects identifiers encoded as per the NFS4 RFC as user@domain.

When set to yes, the module expects the identifiers as numeric string.

The default for this options no. (yeah that's how the original says it, I'm not fixing it, I'm just reporting it β€” keeping the lore intact πŸ’–)

πŸ’œ nfs4acl_xattr:validate_mode = yes|no

This parameter configures whether the module enforces the POSIX mode is set to 0777 for directories and 0666 for files. If this constrained is not met, the xattr with the ACL blob is discarded. bye bye blob. πŸ’€

The default depends on the setting for nfs4acl_xattr:encoding: when set to nfs this setting is disabled by default, otherwise it is enabled.


✨ EXAMPLES ✨

A directory can be exported via Samba using this module as follows:

[samba_gpfs_share]
vfs objects = nfs4acl_xattr
path = /foo/bar

look at her go. πŸ¦‹βœ¨


✨ AUTHOR ✨

The original Samba software and related utilities were created by Andrew Tridgell. Samba is now developed by the Samba Team as an Open Source project similar to the way the Linux kernel is developed. legacies. respect. 🫢


okay that's the whole page bestie, you're officially certified in vfs_nfs4acl_xattr πŸ’… this was Samba 4.24.7-Ubuntu-4.24.7+dfs, dated 09/13/2026 β€” go forth and ACL responsibly, mwah πŸŽ€πŸ’–βœ¨

πŸ“¦ where this page comes from