Extended file attributes are
file system features that enable users to associate
computer file
A computer file is a System resource, resource for recording Data (computing), data on a Computer data storage, computer storage device, primarily identified by its filename. Just as words can be written on paper, so too can data be written to a ...
s with
metadata
Metadata (or metainformation) is "data that provides information about other data", but not the content of the data itself, such as the text of a message or the image itself. There are many distinct types of metadata, including:
* Descriptive ...
not interpreted by the filesystem, whereas regular attributes have a purpose strictly defined by the filesystem (such as
permissions or records of creation and modification times). Unlike
forks, which can usually be as large as the maximum file size, extended attributes are usually limited in size to a value significantly smaller than the maximum file size. Typical uses include storing the author of a document, the
character encoding
Character encoding is the process of assigning numbers to graphical character (computing), characters, especially the written characters of human language, allowing them to be stored, transmitted, and transformed using computers. The numerical v ...
of a plain-text document, or a
checksum,
cryptographic hash or
digital certificate, and
discretionary access control information.
In
Unix-like
A Unix-like (sometimes referred to as UN*X, *nix or *NIX) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Uni ...
systems, extended attributes are usually abbreviated as xattr.
Implementations
AIX
In
AIX, the JFS2 v2 filesystem supports extended attributes, which are accessible using the command. The , , , , and APIs support fetching, setting, listing, getting information about, and removing extended attributes.
BeOS/Haiku
In the now-defunct
BeOS and successors like
Haiku
is a type of short form poetry that originated in Japan. Traditional Japanese haiku consist of three phrases composed of 17 Mora (linguistics), morae (called ''On (Japanese prosody), on'' in Japanese) in a 5, 7, 5 pattern; that include a ''kire ...
, extended file attributes are widely used in base and third-party programs.
The
Be File System allows the indexing and querying of attributes, essentially giving the filesystem
database
In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and a ...
-like characteristics. The uses of extended attributes in Be-like systems are varied: For example,
Tracker and
OpenTracker, the file-managers of BeOS and Haiku respectively, both store the locations of file icons in attributes, Haiku's "Mail" service stores all message content and metadata in extended file attributes, and the MIME types of files are stored in their attributes. Extended file attributes can be viewed and edited in Be-like systems' GUI through the file-manager, often Tracker or derivatives thereof.
FreeBSD
In
FreeBSD
FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
5.0 and later, the
UFS1, UFS2, and ZFS filesystems support extended attributes, using the family of system calls. Any regular file may have a list of extended attributes. Each attribute consists of a name and the associated data. The name must be a
null-terminated string, and exists in a namespace identified by a small-integer namespace identifier. Currently, two namespaces exist: user and system. The user namespace has no restrictions with regard to naming or contents. The system namespace is primarily used by the kernel for
access control list
In computer security, an access-control list (ACL) is a list of permissions associated with a system resource (object or facility). An ACL specifies which users or system processes are granted access to resources, as well as what operations are ...
s and
mandatory access control.
Linux
In
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
, the
ext2
ext2, or second extended file system, is a file system for the Linux kernel (operating system), kernel. It was initially designed by French software developer Rémy Card as a replacement for the extended file system (ext). Having been designed ...
,
ext3
ext3, or third extended filesystem, is a journaling file system, journaled file system that is commonly used with the Linux kernel. It used to be the default file system for many popular Linux distributions but generally has been supplanted by ...
,
ext4,
JFS,
Squashfs
Squashfs is a compressed read-only file system for Linux. Squashfs compresses files, inodes and directories, and supports block sizes from 4 KiB up to 1 MiB for greater compression. Several compression algorithms are supported. Squashfs is ...
,
UBIFS,
Yaffs2,
ReiserFS,
Reiser4,
XFS,
Btrfs,
OrangeFS,
Lustre,
OCFS2 1.6,
ZFS
ZFS (previously Zettabyte File System) is a file system with Volume manager, volume management capabilities. It began as part of the Sun Microsystems Solaris (operating system), Solaris operating system in 2001. Large parts of Solaris, includin ...
, and
F2FS filesystems support extended attributes (abbreviated ''xattr'') when enabled in the kernel configuration. Any regular file or directory may have extended attributes consisting of a name and associated data. The name must be a
null-terminated string prefixed by a
namespace
In computing, a namespace is a set of signs (''names'') that are used to identify and refer to objects of various kinds. A namespace ensures that all of a given set of objects have unique names so that they can be easily identified.
Namespaces ...
identifier and a dot character. Currently, four namespaces exist: user, trusted, security and system. The user namespace has no restrictions with regard to naming or contents. The system namespace is primarily used by the kernel for
access control list
In computer security, an access-control list (ACL) is a list of permissions associated with a system resource (object or facility). An ACL specifies which users or system processes are granted access to resources, as well as what operations are ...
s. The security namespace is used by
SELinux, for example.
Support for the extended attribute concept from a POSIX.1e draft that had been withdrawn in 1997 was added to Linux around 2002.
As of 2016, they are not yet in widespread use by user-space Linux programs, but are used by
Beagle,
OpenStack Swift,
Dropbox
Dropbox is a file hosting service operated by the American company Dropbox, Inc., headquartered in San Francisco, California, that offers cloud storage, file synchronization, personal cloud, and Client (computing), client software. Dropbox w ...
,
KDE
KDE is an international free software community that develops free and open-source software. As a central development hub, it provides tools and resources that enable collaborative work on its projects. Its products include the KDE Plasma gra ...
's semantic metadata framework (Baloo),
Chromium
Chromium is a chemical element; it has Symbol (chemistry), symbol Cr and atomic number 24. It is the first element in Group 6 element, group 6. It is a steely-grey, Luster (mineralogy), lustrous, hard, and brittle transition metal.
Chromium ...
,
Wget,
cURL, and
Snapcraft.
The Linux kernel allows extended attribute to have names of up to 255 bytes and values of up to 64 KiB,
as do
XFS and
ReiserFS, but
ext2
ext2, or second extended file system, is a file system for the Linux kernel (operating system), kernel. It was initially designed by French software developer Rémy Card as a replacement for the extended file system (ext). Having been designed ...
/
3/
4 and
btrfs impose much smaller limits, requiring all the attributes (names and values) of one file to fit in one "filesystem block" (usually 4 KiB). Per POSIX.1e, the names are required to start with one of ''security'', ''system'', ''trusted'', and ''user'' plus a period. This defines the four namespaces of extended attributes.
Extended attributes can be accessed and modified using the
getfattr
and
setfattr
commands from the
attr
package on most distributions. The APIs are called and .
macOS
Mac OS X 10.4 and later support extended attributes by making use of the
HFS+ filesystem Attributes File
B*-tree feature which allows for named forks. Although the named forks in HFS+ support arbitrarily large amounts of data through extents, the OS support for extended attributes only supports inline attributes, limiting their size to that which can fit within a single B*-tree node. Any regular file may have a list of extended attributes. HFS+ supports an arbitrary number of named forks, and it is unknown if
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
imposes any limit on the number of extended attributes.
Each attribute consists of a name and the associated data. The name is a
null-terminated Unicode
Unicode or ''The Unicode Standard'' or TUS is a character encoding standard maintained by the Unicode Consortium designed to support the use of text in all of the world's writing systems that can be digitized. Version 16.0 defines 154,998 Char ...
string. No namespace restrictions are present (making this an ''open xattr'' system) and the convention is to use a reverse DNS string (similar to
Uniform Type Identifiers) as the attribute name.
macOS supports listing, getting, setting, and removing extended attributes from files or directories using a Linux-like API. From the command line, these abilities are exposed through the ''xattr'' utility.
Since macOS 10.5, files originating from the web are marked with
com.apple.quarantine
via extended file attributes. In some older versions of macOS (such as
Mac OS X 10.6), user space extended attributes were not preserved on save in common
Cocoa applications (TextEdit, Preview etc.).
OpenBSD
Support for extended file attributes was removed from the
OpenBSD
OpenBSD is a security-focused operating system, security-focused, free software, Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt created OpenBSD in 1995 by fork (software development), forking NetBSD ...
source code in 2005 due to a lack of interest in
Access Control Lists.
OS/2
In
OS/2
OS/2 is a Proprietary software, proprietary computer operating system for x86 and PowerPC based personal computers. It was created and initially developed jointly by IBM and Microsoft, under the leadership of IBM software designer Ed Iacobucci, ...
version 1.2 and later, the
High Performance File System was designed with extended attributes in mind, but support for them was also retro-fitted on the
FAT
In nutrition science, nutrition, biology, and chemistry, fat usually means any ester of fatty acids, or a mixture of such chemical compound, compounds, most commonly those that occur in living beings or in food.
The term often refers specif ...
filesystem of DOS.
For compatibility with other operating systems using a FAT partition, OS/2 attributes are stored inside a single file "" located in the root directory. This file is normally inaccessible when an operating system supporting extended attributes manages the disk, but can be freely manipulated under, for example, DOS. Files and directories having extended attributes use one or more
clusters inside this file. The logical cluster number of the first used cluster is stored inside the owning file's or directory's
directory entry.
These two bytes are used for other purposes on the FAT32 filesystem, and hence OS/2 extended attributes cannot be stored on this filesystem.
Parts of OS/2 version 2.0 and later such as the
Workplace Shell uses several standardized extended attributes (also called ''EAs'') for purposes like identifying the filetype, comments,
computer icons and keywords about the file.
Programs written in the interpreted language
Rexx
Rexx (restructured extended executor) is a high-level programming language developed at IBM by Mike Cowlishaw. Both proprietary and open-source software, open source Rexx interpreter (computing), interpreters exist for a wide range of comput ...
store an already
parsed version of the code as an extended attribute, to allow faster execution.
Solaris
Solaris version 9 and later allows files to have "extended attributes", which are actually
forks; the maximum size of an "extended attribute" is the same as the maximum size of a file, and they are read and written in the same fashion as files. Internally, they are actually stored and accessed like normal files, so their names cannot contain "/" characters and their ownership and permissions can differ from those of the parent file.
Version 4 of the
Network File System supports extended attributes in much the same way as Solaris.
Windows NT
On
Windows NT
Windows NT is a Proprietary software, proprietary Graphical user interface, graphical operating system produced by Microsoft as part of its Windows product line, the first version of which, Windows NT 3.1, was released on July 27, 1993. Original ...
, limited-length (255
ASCII
ASCII ( ), an acronym for American Standard Code for Information Interchange, is a character encoding standard for representing a particular set of 95 (English language focused) printable character, printable and 33 control character, control c ...
character names, 65535 byte values) extended attributes are supported by
FAT
In nutrition science, nutrition, biology, and chemistry, fat usually means any ester of fatty acids, or a mixture of such chemical compound, compounds, most commonly those that occur in living beings or in food.
The term often refers specif ...
,
HPFS, and
NTFS
NT File System (NTFS) (commonly called ''New Technology File System'') is a proprietary journaling file system developed by Microsoft in the 1990s.
It was developed to overcome scalability, security and other limitations with File Allocation Tabl ...
, but without support through the
Win32 API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
. This was implemented as part of the
OS/2 subsystem. They are notably used by the
NFS server of the
Interix POSIX subsystem in order to implement Unix-like permissions. The
Windows Subsystem for Linux added in the
Windows 10 Anniversary Update uses them for similar purposes, storing the Linux file mode, owner, device ID (if applicable), and file times in the extended attributes.
Additionally,
NTFS
NT File System (NTFS) (commonly called ''New Technology File System'') is a proprietary journaling file system developed by Microsoft in the 1990s.
It was developed to overcome scalability, security and other limitations with File Allocation Tabl ...
can store arbitrary-length extended attributes in the form of
alternate data streams (ADS), a type of
resource fork
A resource fork is a fork of a file on Apple's classic Mac OS operating system that is used to store structured data. It is one of the two forks of a file, along with the data fork, which stores data that the operating system treats as unstruct ...
. Plugins for the file manager
Total Commander
__NOTOC__
Total Commander is an orthodox file manager, i.e. it features two file list panels (selectable via tab key) and a Command-line interface, command line. It supports Tab (interface), multiple tabs for each panel.
Total Commander is deve ...
, like ''NTFS Descriptions'' and ''QuickSearch eXtended'' support filtering the file list by or searching for metadata contained in ADS.
NTFS-3G supports mapping ADS to extended attributes in
FUSE; it also maps file attributes that way.
See also
*
Attribute–value pair
*
File attribute
References
{{Computer files
Computer file systems
Metadata