Setfattr: Writing Extended Filesystem Attributes, Managing Metadata Namespaces, and Hardening Storage Geometries in Production
[ALERT 02:41:19] node-compute-084: Ingestion worker fatal error: operation not permitted (EPERM)
[ALERT 02:41:22] ceph-mds-02: Subtree migration thrashing detected on rank 0; MDS load imbalance > 400%
[ALERT 02:41:25] container-runtime: Failed to initialize rootfs overlay layer: opaque whiteout resolution failed
Bleary-eyed and clutching cold coffee, the systems administrator opens a terminal session to diagnose the damage. Traditional troubleshooting scripts reveal nothing out of the ordinary. Standard directory listings show pristine 0755 file permissions and standard root:root ownership. Disk space is sitting comfortably below thirty percent utilization, inodes are plentiful, access control lists show no restrictive masks, and SELinux reports an enforcing but standard profile. Yet, the operating system kernel refuses to execute binaries, and storage nodes throw bewildering Operation not permitted errors.
The breakdown is caused by a blind spot in classic Unix management: standard file attributes like file permissions, ownership IDs, and timestamps tell only half the story on a modern Linux server. Beneath standard file metadata lies an auxiliary metadata dimension known as Extended Attributes (xattrs). Modern container runtimes, distributed filesystems, and security modules rely on this hidden layer to orchestrate everything from image layer isolation to storage striping and binary capabilities. When this metadata is stripped or corrupted during a deployment, standard administrative tools fail to see why the system is broken. The dedicated tool built to inspect, modify, and govern this space is setfattr(1).
To attach custom operational metadata directly to any file without modifying its data or invalidating its checksum, use setfattr with the -n (name) and -v (value) flags:
# Attach a release tracking identifier directly to an application configuration file
setfattr -n user.deployment.release_id -v "rel-2026.08.v4-prod" /etc/application/gateway.json
You can immediately inspect and confirm the persisted metadata with its companion utility, getfattr(1):
# Read back extended attributes stored in the user namespace
getfattr -d -m "^user\." /etc/application/gateway.json
# file: etc/application/gateway.json
user.deployment.release_id="rel-2026.08.v4-prod"
What Extended Attributes Do in Plain English
In plain English, setfattr attaches arbitrary key-value pairs directly to a file or directory's filesystem inode. Rather than creating sidecar database entries, appending comments to source code, or touching file content—which would alter cryptographic signatures—extended attributes live in the filesystem's dedicated metadata allocation blocks. The operating system kernel enforces, indexes, and surfaces these attributes across four isolated namespaces, making them the foundational backbone for container isolation, storage load balancing, and fine-grained process security.
Core Flags and Command-Line Syntax
The syntax for setfattr is designed for precise, surgical metadata management as well as large-scale recursive directory updates.
| Flag | Parameter Syntax | Architectural Function |
|---|---|---|
-n |
--name=NAME |
Specifies the fully qualified attribute name, including its mandatory kernel namespace prefix (such as user., trusted., security., or system.). |
-v |
--value=VAL |
Assigns the raw literal string or binary value to the attribute specified by -n. |
-x |
--remove=NAME |
Deletes the named extended attribute and reclaims its metadata allocation space from the inode. |
-h |
--no-dereference |
Modifies the extended attribute of a symbolic link directly rather than following the link to its target file. |
-R |
--recursive |
Traverses directory subtrees recursively, applying the attribute modification to all subordinate files and folders. |
--restore=FILE |
--restore=FILE |
Parses and restores extended attributes in bulk from a structured dump file generated by getfattr(1) (--dump). |
--raw |
(Direct) | Treats the attribute value as raw binary data without interpreting escape sequences. |
Architectural Fundamentals of Extended Attributes
To wield setfattr effectively in production environments, it is essential to understand the journey an attribute takes through the Linux kernel Virtual Filesystem (VFS) and how it physically lives on disk.
setfattr / getfattr / libattr / Container Runtimes"] UserSpace -->|"System Call: setxattr() / lsetxattr()"| VFS["Virtual Filesystem (VFS) Layer
Namespace Validation & Privilege Checks (CAP_SYS_ADMIN, DAC)"] VFS -->|"xattr_handler->set()"| FSDriver["Filesystem Driver (ext4 / XFS / Btrfs)"] FSDriver --> Inode["Physical Inode Block
Standard POSIX Metadata (Mode, UID, GID, mtime)
Fast Inline Inode Space"] Inode -->|"If payload exceeds inline threshold"| ExtBlock["External Dedicated xattr Block (4096B)
Hash Tables & Reference-Counted Allocation"]
The Four Kernel Namespaces
The Linux kernel segregates extended attributes into four distinct namespaces, detailed in xattr(7). Each namespace enforces strict access controls, kernel execution hooks, and security boundaries:
Discretionary Access (DAC)
Standard users with write permission"] Root --> Trusted["trusted.
Privileged Userspace
Requires CAP_SYS_ADMIN (e.g. OverlayFS)"] Root --> Security["security.
LSM Contexts & Capabilities
SELinux, Smack, POSIX File Caps"] Root --> System["system.
Kernel & OS Internals
POSIX ACLs & Default Masks"]
user.(User Extended Attributes): Designed for general-purpose user-space applications to store arbitrary metadata (such as document indexing information, character encodings, or cryptographic checksums). Access is governed by standard Discretionary Access Control (DAC) file permissions: a process must possess write permission on the target inode to modify attributes in this namespace. On older Linux filesystems (e.g., ext2, early ext3), this namespace required explicit activation via theuser_xattrmount option in/etc/fstab, though it is enabled by default in modern kernels on ext4, XFS, and Btrfs.trusted.(Trusted Extended Attributes): Accessible exclusively by processes possessing theCAP_SYS_ADMINcapability within the initial user namespace. Unprivileged users cannot read or write to this namespace, regardless of DAC file permissions. This isolation makestrusted.the standard architectural domain for lower-level userspace daemons and kernel mechanisms—such as the Linux OverlayFS driver—which stores whiteout markers and directory opacity flags here.security.(Security Extended Attributes): Managed by Linux Security Modules (LSM) such as SELinux, AppArmor, and Smack, as well as the kernel's POSIX file capability subsystem (security.capability). Writing to this namespace requires dedicated kernel privileges (e.g.,CAP_SETFCAPfor capabilities, or active SELinux policy clearance). When a binary executes, the kernel readssecurity.capabilitydirectly from the inode to compute permitted process capabilities.system.(System Extended Attributes): Utilized by the kernel to bind low-level system properties to inodes. The primary real-world consumer of this namespace is the POSIX Access Control List subsystem (system.posix_acl_accessandsystem.posix_acl_default), allowing fine-grained multi-user permission graphs beyond standardrwxrwxrwxprimitives.
Inode Storage Mechanics: Inline vs. External Attribute Blocks
Extended attributes do not float unattached; they require physical filesystem blocks. Filesystems implement sophisticated strategies to store these pairs without incurring catastrophic I/O penalties:
- Inline (In-Inode) Attributes: Standard filesystems allocate inodes with sizes larger than the legacy 128-byte structures (e.g., ext4 typically uses 256-byte or 512-byte inodes; XFS uses 512-byte inodes by default). The delta between the core inode metadata (
struct ext4_inode) and the physical on-disk boundary—governed by thei_extra_isizefield—serves as fast inline storage. When attributes are small,setfattrwrites directly into this inline space, resulting in zero additional disk seeks during read operations. - External Extended Attribute Blocks: If the cumulative size of attribute names and values exceeds the available inline inode space, the filesystem allocates an external 4KB metadata block (tracked by
i_file_aclin ext4 or a dedicated attribute fork in XFS B-trees). In ext4, these external blocks are reference-counted and deduplicated across inodes sharing identical attribute sets. However, once an external block is saturated or if individual attribute values exceed filesystem-specific limits (typically 4KB to 64KB depending on filesystem and kernel page sizes),setfattrreturnsENOSPCorE2BIG.
Five Production-Grade Real-World Use Cases
Use Case 1: Cryptographic Provenance and Build Provenance Tagging in the user. Namespace
Scenario
A financial engineering pipeline produces high-frequency trading binary release artifacts. Security compliance mandates that every compiled ELF executable deployed to bare-metal servers must maintain immutable build provenance—including its source Git commit SHA, compiler version, build pipeline run ID, and authorized release manager—directly attached to the file. Modifying the binary itself would invalidate cryptographic code-signing signatures, making the user. xattr namespace the ideal out-of-band metadata carrier.
Exact Command Invocation
During the artifact deployment phase, the release script invokes setfattr to bind the provenance schema to the binary:
setfattr -n user.build.git_sha -v "a8f5c9e2b10d4a73e6f98124b5d3c801e74f62a9" /opt/releases/bin/engine && \
setfattr -n user.build.pipeline_id -v "https://ci.internal.infra/pipelines/build-89412" /opt/releases/bin/engine && \
setfattr -n user.build.compiler -v "gcc-13.2.0-x86_64-linux-gnu" /opt/releases/bin/engine && \
setfattr -n user.build.timestamp -v "2026-08-19T14:32:00Z" /opt/releases/bin/engine
Terminal Output Verification
To verify the provenance metadata using getfattr:
getfattr -d -m "^user\.build\." /opt/releases/bin/engine
# file: opt/releases/bin/engine
user.build.compiler="gcc-13.2.0-x86_64-linux-gnu"
user.build.git_sha="a8f5c9e2b10d4a73e6f98124b5d3c801e74f62a9"
user.build.pipeline_id="https://ci.internal.infra/pipelines/build-89412"
user.build.timestamp="2026-08-19T14:32:00Z"
Line-by-Line Explanation
user.build.compiler="gcc-13.2.0-x86_64-linux-gnu": Records the exact cross-compilation toolchain version used to generate the ELF binary.user.build.git_sha="a8f5c9e2b10d4a73e6f98124b5d3c801e74f62a9": Links the binary back to the exact commit state in the source control management tree.user.build.pipeline_id="https://ci.internal.infra/pipelines/build-89412": Identifies the non-repudiable CI/CD build run URL that generated the artifact.user.build.timestamp="2026-08-19T14:32:00Z": Captures the ISO-8601 UTC build instantiation moment.
What the Sysadmin Does Next
The engineer incorporates this verification into the node startup daemon. An initialization hook executes getfattr to extract user.build.git_sha, matches it against an immutable transparency ledger via an internal cryptographic attestation service, and halts service initialization if the metadata is missing or mismatched.
Use Case 2: Tuning Distributed Storage Performance via CephFS Directory Pinning and Striping Layouts
Scenario
An enterprise running a petabyte-scale CephFS distributed filesystem encounters severe CPU saturation on Metadata Server (MDS) rank 0, while rank 1 sits idle. Simultaneously, high-throughput ingest jobs targeting /mnt/cephfs/analytics/telemetry are bottlenecked because the default layout writes data in narrow, single-OSD object chunks. Systems architects must dynamically pin the telemetry subtree to MDS rank 1 and stripe newly created files across 16 Object Storage Daemons (OSDs) with a 4MB stripe unit to parallelize network I/O across storage nodes.
Exact Command Invocation
The engineer applies Ceph-specific virtual extended attributes directly to the parent directory:
# Pin the directory subtree to Metadata Server (MDS) rank 1
setfattr -n ceph.dir.pin -v 1 /mnt/cephfs/analytics/telemetry
# Set layout striping: 4MB stripe units across 16 parallel OSDs
setfattr -n ceph.dir.layout.stripe_unit -v 4194304 /mnt/cephfs/analytics/telemetry
setfattr -n ceph.dir.layout.stripe_count -v 16 /mnt/cephfs/analytics/telemetry
setfattr -n ceph.dir.layout.object_size -v 67108864 /mnt/cephfs/analytics/telemetry
Terminal Output Verification
To confirm that the Ceph kernel client or FUSE driver recognized and applied the virtual layout attributes:
getfattr -d -m "^ceph\." /mnt/cephfs/analytics/telemetry
# file: mnt/cephfs/analytics/telemetry
ceph.dir.layout.object_size="67108864"
ceph.dir.layout.pool="cephfs_data"
ceph.dir.layout.stripe_count="16"
ceph.dir.layout.stripe_unit="4194304"
ceph.dir.pin="1"
Line-by-Line Explanation
ceph.dir.layout.object_size="67108864": Configures the target RADOS object size to 64MB (67,108,864 bytes) before rolling over to a new object set.ceph.dir.layout.pool="cephfs_data": Confirms the underlying RADOS data pool backing the directory.ceph.dir.layout.stripe_count="16": Enforces that new file payloads will be striped across 16 different OSDs concurrently.ceph.dir.layout.stripe_unit="4194304": Sets the individual stripe fragment to 4MB (4,194,304 bytes), matching high-throughput sequential block allocation buffers.ceph.dir.pin="1": Instructs the Ceph MDS cluster to migrate the metadata authority for this directory and its children to MDS rank 1, offloading rank 0.
What the Sysadmin Does Next
The engineer verifies that Ceph MDS subtrees have successfully migrated by executing ceph mds metadata and monitoring ceph status. Subsequent file creation inside the directory immediately inherits these striping and pinning policies without requiring a remount of the distributed storage volume.
Use Case 3: Container Union Filesystem Management: Setting trusted.overlay.opaque for OverlayFS Layer Masking
Scenario
An engineer is building a custom, high-performance OCI container image creation utility without relying on full container runtimes. In Linux OverlayFS, when an upper layer deletes an entire directory tree that exists in a lower layer and replaces it with a fresh directory of the same name, standard file operations would improperly merge the contents. To prevent lower-layer directory bleeding, the layer builder must mark the upper directory as "opaque" using the trusted.overlay.opaque extended attribute.
conf.d/ (new)"] end subgraph Lower ["Lower Base Layer (/lower/etc/nginx)"] LFiles["MASKED & BLOCKED (Opaque Boundary)
legacy.conf (hidden)
old_certs/ (hidden)"] end Upper --> Merged Lower -.->|"Masked by opaque attribute"| Merged
Exact Command Invocation
The engineer flags the newly created directory inside the upper layer rootfs as an opaque whiteout boundary before assembling the union mount:
# Mark the upper layer directory as opaque to prevent directory merging
setfattr -n trusted.overlay.opaque -v "y" /var/lib/containers/layers/upper/etc/nginx
(Note: In unprivileged user namespace environments running Rootless OverlayFS, the kernel handles user.overlay.opaque instead.)
Terminal Output Verification
To verify the opaque state of the directory layer:
getfattr -n trusted.overlay.opaque /var/lib/containers/layers/upper/etc/nginx
# file: var/lib/containers/layers/upper/etc/nginx
trusted.overlay.opaque="y"
Line-by-Line Explanation
# file: var/lib/containers/layers/upper/etc/nginx: The target directory within the upper container layer.trusted.overlay.opaque="y": Explicitly informs the kernel'soverlay.kofilesystem driver that directory lookups must terminate at this layer. The kernel will not merge or enumerate any inodes from/etc/nginxpresent in underlying lower layers.
What the Sysadmin Does Next
The administrator tests the union mount using mount -t overlay overlay -o lowerdir=/var/lib/containers/layers/lower,upperdir=/var/lib/containers/layers/upper,workdir=/var/lib/containers/layers/work /var/lib/containers/merged. A directory listing of /var/lib/containers/merged/etc/nginx confirms that only upper-layer files appear, confirming that deprecated files from the lower layer are completely masked.
Use Case 4: Bootstrapping Offline Container RootFS Environments: Setting SELinux Contexts and POSIX Capabilities
Scenario
An infrastructure security engineer is constructing an immutable, minimal appliance rootfs image inside an offline loopback mount (/mnt/target_rootfs). Because the build host runs a different distribution from the target appliance, standard userspace utilities like setcap or restorecon fail or complain about missing policy paths. The engineer must directly inject:
1. An SELinux security context into the security.selinux attribute of the Nginx binary.
2. A raw Linux capability set (CAP_NET_BIND_SERVICE) into the security.capability attribute of the binary, allowing it to bind to privileged TCP port 80 without executing as root.
Exact Command Invocation
The engineer applies the SELinux label and the binary-encoded capability struct directly using setfattr:
# 1. Assign the strict SELinux executable context
setfattr -n security.selinux -v "system_u:object_r:httpd_exec_t:s0" /mnt/target_rootfs/usr/sbin/nginx
# 2. Inject VFS Version 2 CAP_NET_BIND_SERVICE capability in hexadecimal format
# Magic 0x02000001 (VFS_CAP_REVISION_2), Permitted/Effective bit 0x00000400 (CAP_NET_BIND_SERVICE)
setfattr -n security.capability -v 0x0100000200040000000000000000000000000000 /mnt/target_rootfs/usr/sbin/nginx
Terminal Output Verification
To verify both security attributes on the offline binary:
getfattr -d -m "^security\." -e hex /mnt/target_rootfs/usr/sbin/nginx
# file: mnt/target_rootfs/usr/sbin/nginx
security.capability=0x0100000200040000000000000000000000000000
security.selinux=0x73797374656d5f753a6f626a6563745f723a68747470645f657865635f743a733000
To cross-verify the capability in human-readable form using getcap:
getcap /mnt/target_rootfs/usr/sbin/nginx
/mnt/target_rootfs/usr/sbin/nginx cap_net_bind_service=ep
Line-by-Line Explanation
security.capability=0x01000002...: Encodes a 20-bytestruct vfs_cap_data.0x01000002sets the revision toVFS_CAP_REVISION_2with the effective bit active, and byte 4 (0x04) enables bit 10 (CAP_NET_BIND_SERVICE).security.selinux=0x737973...: Hexadecimal representation of the ASCII stringsystem_u:object_r:httpd_exec_t:s0\0, which assigns the mandatory SELinux type enforcement context.
What the Sysadmin Does Next
The engineer unmounts the loopback image and boots the target container or virtual machine in SELinux enforcing mode (enforcing=1). The Nginx service starts under an unprivileged user ID (uid=1000), binds successfully to port 80/443 without invoking sudo, and operates without triggering SELinux Access Vector Cache (AVC) audit denials.
Use Case 5: High-Throughput Metadata Sanitization: Batch Stripping Legacy Attributes During Data Migration
Scenario
A multi-terabyte dataset containing over 50 million files is migrated from a legacy Windows/Samba storage array to a Linux NVMe cluster running ext4. The migration process copied obsolete Windows and Samba metadata attributes (user.DOSATTRIB, user.SAMBA_PAI, user.MimeType) to every file. These legacy attributes waste significant metadata space, forcing ext4 to allocate external 4KB xattr blocks for millions of inodes, degrading directory traversal speeds and inode cache efficiency. The sysadmin must execute an automated sanitization sweep across the storage volume.
Core Inode (256B) -> Points to External 4KB Block
Bloated with user.DOSATTRIB & user.SAMBA_PAI"] Cmd["find /data/storage -type f -exec setfattr -x user.DOSATTRIB -x user.SAMBA_PAI {} +"] After["Inode After Sanitization
Core Inode (256B) [External Block Freed]
Clean, High-Density Inode Geometry"] Before --> Cmd --> After
Exact Command Invocation
To safely strip legacy attributes in batch across millions of files, the engineer utilizes find paired with setfattr -x:
# Strip obsolete Samba and DOS attributes across the filesystem tree
find /data/storage/production -type f -exec setfattr -x user.DOSATTRIB -x user.SAMBA_PAI {} + 2>/dev/null
To selectively clean non-standard user attributes across an entire directory while preserving critical production tags:
# Capture existing attributes, filter out unwanted keys, and restore cleanly
getfattr -R -d -m "^user\." /data/storage/production > /var/backups/xattrs_pre_clean.dump
sed -i '/user\.DOSATTRIB/d; /user\.SAMBA_PAI/d' /var/backups/xattrs_pre_clean.dump
Terminal Output Verification
To verify that the target files have been sanitized and that the obsolete keys are completely removed:
getfattr -d -m "^user\." /data/storage/production/financial_report_2024.pdf
(If no attributes remain in the user. namespace, getfattr returns zero records and exits cleanly):
# (No output returned; attributes successfully purged)
Line-by-Line Explanation
find /data/storage/production -type f: Traverses the target storage subtree, isolating regular file inodes.-exec setfattr -x user.DOSATTRIB -x user.SAMBA_PAI {} +: Aggregates file paths into maximum argument batches, issuingsetfattr -xsystem calls in bulk to delete both specified keys.2>/dev/null: SuppressesENOATTR(attribute not found) warnings for files that did not carry the legacy attributes.
What the Sysadmin Does Next
The engineer measures the freed metadata blocks and reclaims filesystem fragmentation by running an online filesystem trim or evaluating inode density via e2fsck -D during the next scheduled maintenance window. Subsequent directory scans show significant speed improvements due to reduced inode footprint and lower VFS inode-table memory pressure.
Edge Cases, Security Boundaries, and Failure Modes
When manipulating extended attributes with setfattr, operations can fail at the VFS, driver, or storage levels. Understanding these failure modes prevents catastrophic data pipeline stalls.
| Error Returned | Root Cause | Practical Remediation |
|---|---|---|
EOPNOTSUPP"Operation not supported" |
Filesystem lacks extended attribute support, or network filesystem (NFS) lacks RFC 8276 negotiation. | Mount the filesystem with the user_xattr mount option in /etc/fstab, upgrade to NFSv4.2, or use modern ext4/XFS filesystems. |
EPERM / EACCES"Operation not permitted" |
Insufficient process capability to modify restricted namespaces (trusted. or security.). |
Execute with sudo, grant CAP_SYS_ADMIN or CAP_SETFCAP capabilities, or check SELinux domain transition policies. |
ENOSPC / E2BIG"No space left on device" / "Argument list too long" |
Physical inode space exhausted, or attribute value exceeds the 64KB Linux kernel VFS ceiling. | Compress attribute payloads, trim obsolete attributes, or store larger structured metadata payloads in dedicated application files. |
| Silent Attribute Dropping "Attributes vanish on copy" |
Archival tools (cp, tar, rsync) default to copying only standard file data and omitting out-of-band metadata. |
Always supply explicit flags: cp --preserve=xattr, tar --xattrs --xattrs-include='*', and rsync -X (or --xattrs). |
1. The EOPNOTSUPP (Operation Not Supported) Trap
One of the most frequent errors encountered with setfattr is:
setfattr: /mnt/legacy/file.txt: Operation not supported
This error surfaces when the underlying filesystem driver does not implement the VFS xattr_handler interface. Common triggers include:
* Network Filesystems (NFS): Standard NFSv3 and basic NFSv4 exports do not support extended attributes unless both the server and client support and negotiate RFC 8276 (Native Extended Attributes in NFSv4.2).
* FAT/exFAT and ISO9660: Legacy file allocation table formats have no structural concept of extended attributes.
* Missing Mount Options: On older kernels (ext3/early ext4), filesystems mounted without the explicit user_xattr mount option in /etc/fstab will reject modifications within the user. namespace while continuing to permit security. or system. operations.
2. Privilege Boundaries and Namespace Isolation (EPERM)
Extended attribute namespaces enforce strict capabilities. Modifying attributes without the necessary privileges results in:
setfattr: /opt/app/bin: Operation not permitted
- The
trusted.Namespace: RequiresCAP_SYS_ADMINin the initial user namespace. An unprivileged user—or even a user mapped torootinside an unprivileged Docker/LXC container user namespace—cannot write totrusted.overlay.*. - The
security.Namespace: Writingsecurity.capabilityrequiresCAP_SETFCAP. Writingsecurity.selinuxrequires administrative clearance from the active SELinux policy engine. - Sticky Directory Protection: If a directory has the sticky bit (
+t) enabled (e.g.,/tmp), an unprivileged user cannot modify extended attributes on files owned by other users, even if they possess write access to the directory.
3. Inode Saturation and the ENOSPC / E2BIG Ceiling
Extended attributes are constrained by physical inode and kernel memory limits:
* The 64KB Kernel Ceiling: The Linux VFS imposes an absolute upper limit of 64 kilobytes (65,536 bytes) on the size of an individual extended attribute value, regardless of filesystem type.
* Inode Block Exhaustion (ENOSPC): If a file resides on an ext4 filesystem where all data blocks are consumed, attempting to add a large extended attribute that requires allocating an external 4KB block fails with ENOSPC, even if the file’s data itself was not modified.
* Attribute Count Limits (E2BIG): Attempting to set too many distinct attributes on a single inode on filesystems with fixed metadata space (such as compact XFS inodes or ext4 filesystems with small 128-byte inodes) can fail with Argument list too long (E2BIG).
4. Data Loss via Standard Archive Utilities (The Silent Omission Bug)
Extended attributes are stored out-of-band relative to file data. Consequently, standard archive and transfer tools will silently discard extended attributes unless explicitly instructed to preserve them:
- GNU
cp: By default,cp -apreserves permissions and timestamps, but historically requires--preserve=xattrto guarantee extended attribute propagation across filesystems. - GNU
tar: Standardtar -czfomits extended attributes entirely. You must specifytar --xattrs --xattrs-include='*'to captureuser.,trusted., andsecurity.namespaces. rsync: Standardrsync -avdoes not copy xattrs. You must supply-X(or--xattrs) to replicate extended attribute metadata over the wire.
Today's Takeaway
Extended attributes represent the hidden control plane of modern Linux storage, enabling everything from distributed CephFS striping policies to container image isolation and granular security capability enforcement. Take five minutes right now on your local machine to inspect the hidden metadata on your core binaries by running getfattr -d -m - /usr/bin/ping /usr/bin/sudo or getcap -r /usr/bin 2>/dev/null. You will immediately see how the Linux kernel relies on extended attributes (security.capability) rather than traditional setuid bits to grant privileged networking capabilities safely. Mastering setfattr bridges the gap between surface-level sysadmin tasks and true kernel-level systems architecture.