Extended file attributes

Source: Wikipedia, the free encyclopedia.

Extended file attributes are

digital certificate, and discretionary access control
information.

In Unix-like systems, extended attributes are usually abbreviated as xattr.[1]

Implementations

AIX

In

AIX, the JFS2 v2 filesystem supports extended attributes, which are accessible using the getea command.[2] The getea,[3] setea,[4] listea,[5] statea,[6] and removeea[7]
APIs support fetching, setting, listing, getting information about, and removing extended attributes.

BeOS/Haiku

In the now-defunct BeOS and successors like Haiku, extended file attributes are widely used in base and third-party programs. The

OpenTracker, the file-managers of BeOS and Haiku respectively, both store the locations of file icons in attributes,[8] Haiku's "Mail" service stores all message content and metadata in extended file attributes,[9]
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

.

Linux

In

SELinux
, for example.

Support for the extended attribute concept from a POSIX.1e draft[citation needed] that had been withdrawn[12] in 1997 was added to Linux around 2002.[13][14] As of 2016, they are not yet in widespread use by user-space Linux programs, but are used by

Dropbox, KDE's semantic metadata framework (Baloo), Chromium, Wget and cURL
.

The Linux kernel allows extended attribute to have names of up to 255 bytes and values of up to 64 KiB,[15] as do XFS and ReiserFS, but ext2/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,[citation needed] 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.[16]

Extended attributes can be accessed and modified using the getfattr and setfattr commands from the attr package on most distributions.[17] The APIs are called getxattr and setxattr.

macOS

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.[citation needed] Any regular file may have a list of extended attributes. HFS+ supports an arbitrary number of named forks, and it is unknown if macOS
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 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,[18] getting,[19] setting,[20] and removing[21] extended attributes from files or directories using a Linux-like API. From the command line, these abilities are exposed through the xattr utility.[22]

Since macOS 10.5, files originating from the web are marked with com.apple.quarantine via extended file attributes.[23] 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.).[citation needed]

OpenBSD

Support for extended file attributes was removed from the

Access Control Lists.[24]

OS/2

In OS/2 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 filesystem of DOS. For compatibility with other operating systems using a FAT partition, OS/2 attributes are stored inside a single file "EA DATA. SF" 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

directory entry.[25]
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

computer icons
and keywords about the file. Programs written in the interpreted language
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[26]
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

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.[27]

Additionally, NTFS can store arbitrary-length extended attributes in the form of alternate data streams (ADS), a type of resource fork. Plugins for the file manager Total Commander, like NTFS Descriptions and QuickSearch eXtended support filtering the file list by or searching for metadata contained in ADS.[28][29] NTFS-3G supports mapping ADS to extended attributes in FUSE; it also maps file attributes that way.[30]

See also

References

  1. ^ xattr(7) – Linux Programmer's Manual – Overview, Conventions and Miscellanea
  2. AIX V7.2 documentation. IBM
    . Retrieved 2017-07-11.
  3. ^ "getea Subroutine". IBM AIX V7.2 documentation: Base Operating System and Extensions, Volume 1. IBM. Retrieved 2017-07-11.
  4. ^ "setea Subroutine". IBM AIX V7.2 documentation: Base Operating System and Extensions, Volume 2. IBM. Retrieved 2017-07-11.
  5. ^ "listea Subroutine". IBM AIX V7.2 documentation: Base Operating System and Extensions, Volume 1. IBM. Retrieved 2017-07-11.
  6. ^ "statea Subroutine". IBM AIX V7.2 documentation: Base Operating System and Extensions, Volume 2. IBM. Retrieved 2017-07-11.
  7. ^ "removeea Subroutine". IBM AIX V7.2 documentation: Base Operating System and Extensions, Volume 2. IBM. Retrieved 2017-07-11.
  8. ^ "Attributes". Haiku User Guide. Haiku, Inc. Retrieved 28 January 2021.
  9. ^ "Workshop: Managing Emails". Haiku User Guide. Haiku, Inc. Retrieved 28 January 2021.
  10. ^ extattr(2) – FreeBSD System Calls Manual
  11. ^ Kim, Jaegeuk (2012-10-05). "[PATCH 13/16] f2fs: add xattr and acl functionalities". Retrieved 2017-07-11.
  12. ^ Schaufler, Casey (2002-04-30). "Posix.1e?". Newsgroupcomp.security.unix.
  13. ^ "v2.5.3 git commit log". 2002-02-05. Retrieved 2017-07-11.
  14. ^ "Red Hat Enterprise Linux AS 3 Release Notes (x86 Edition)". Red Hat. 2003. Archived from the original on 2017-07-09. Retrieved 2017-07-11. EA (Extended Attributes) and ACL (Access Control Lists) functionality is now available for ext3 file systems. In addition, ACL functionality is available for NFS.
  15. ^ "linux/include/uapi/linux/limits.h". 2012-10-13. Retrieved 2017-07-11.
  16. ^ xattr(7) – Linux Programmer's Manual – Overview, Conventions and Miscellanea
  17. ^ "Commands for Manipulating Filesystem Extended Attributes". GNU Savannah. Retrieved 2017-07-11.
  18. ^ listxattr(2) – Darwin and macOS System Calls Manual
  19. ^ getxattr(2) – Darwin and macOS System Calls Manual
  20. ^ setxattr(2) – Darwin and macOS System Calls Manual
  21. ^ removexattr(2) – Darwin and macOS System Calls Manual
  22. ^ xattr(1) – Darwin and macOS General Commands Manual
  23. ^ "Launch Services Release Notes". developer.apple.com.
  24. ^ Dale Rahn (2005-07-03). "CVS log for src/sys/ufs/ufs/Attic/extattr.h".
  25. ^ a b Eager, Bob (2000-10-28). "Implementation of extended attributes on the FAT file system". Retrieved 2017-07-11.
  26. Solaris 11.4 Standards, Environments, Macros, Character Sets, and Miscellany Reference Manual
  27. MSDN
    . Retrieved 2017-07-11.
  28. ^ "NTFS Descriptions 1.2.1". TotalCmd.net. Retrieved 16 April 2018.
  29. ^ "QuickSearch eXtended". TotalCmd.net. Retrieved 16 April 2018.
  30. ^ "Extended Attributes". Tuxera. Archived from the original on 2020-08-14.