File attribute
File attributesare a type ofmetadatathat describe and may modify howfilesand/ordirectoriesin afilesystembehave. Typical file attributes may, for example, indicate or specify whether a file is visible, modifiable, compressed, or encrypted. The availability of most file attributes depends on support by the underlying filesystem (such asFAT,NTFS,ext4) where attribute data must be stored along with other control structures. Each attribute can have one of two states: set and cleared. Attributes are considered distinct from other metadata, such as dates and times,filename extensionsorfile system permissions.In addition to files,folders,volumesand other file system objects may have attributes.
DOS and Windows
[edit]Traditionally, inDOSandMicrosoft Windows,filesandfoldersaccepted four attributes:[1][2][3]
- Archive(A): When set, it indicates that the hosting file has changed since the lastbackupoperation. Windows' file system sets this attribute on any file that has changed. Backup software then has the duty of clearing it upon a successful full or incremental backup (not a differential one).
- Hidden(H): When set, indicates that the hosting file is hidden. MS-DOS commands like
dir
and Windows apps likeFile Explorerdo not show hidden files by default, unless asked to do so.[4] - System(S): When set, indicates that the hosting file is a critical system file that is necessary for the computer to operate properly. MS-DOS and Microsoft Windows use it to mark important system files. MS-DOS commands like
dir
and Windows apps like File Explorer do not show system files by default even when hidden files are shown, unless asked to do so. - Read-only(R): When set, indicates that a file should not be altered. Upon opening the file, file systemAPIusually does not grant write permission to the requesting application, unless the application explicitly requests it. Read-only attributes on folders are usually ignored, being used for another purpose.[5][6]
As new versions of Windows came out, Microsoft has added to the inventory of available attributes on theNTFSfile system,[7]including but not limited to:[8]
- Compressed(C): When set, Windowscompressesthe hosting file upon storage. For more information, seeNTFS § File compression.
- Encrypted(E): When set, Windowsencryptsthe hosting file upon storage to prevent unauthorized access. For more information, seeNTFS § Encryption.
- Not Content-Indexed(I): When set,Inde xing ServiceorWindows Searchdo not include the hosting file in their inde xing operation.
Other attributes that are displayed in the "Attributes" column of Windows Explorer[7]include:
- Directory(D): The entry is asubdirectory,containing file and directory entries of its own.
- Reparse Point(L): The file or directory has an associated re-parse point, or is asymbolic link.
- Offline(O): The file data is physically moved to offline storage (Remote Storage).
- Sparse(P): The file is asparse file,i.e., its contents are partially empty and non-contiguous.
- Temporary(T): The file is used for temporary storage.
In DOS,OS/2and Windows, theattrib
command incmd.exeandcommandcan be used to change and display the four traditional file attributes.[3][9]File Explorer in Windows can show the seven mentioned attributes but cannot set or clear the System attribute.[5]Windows PowerShell,which has become a component ofWindows 7and later, features two commands that can read and write attributes:Get-ItemProperty
andSet-ItemProperty
.[10]To change an attribute on a file onWindows NT,the user must have appropriatefile system permissionsknown asWrite AttributesandWrite Extended Attributes.[11]
Unix and POSIX
[edit]InUnixand Unix-like systems, includingPOSIX-conforming systems, each file has a 'mode' containing 9 bit flags controlling read, write and execute permission for each of the file's owner, group and all other users (seeFile-system permissions §Traditional Unix permissionsfor more details) plus thesetuidandsetgidbit flags and a'sticky' bit flag. The mode also specifies thefile type(regular file, directory, or some other special kind).
4.4BSD and derivatives
[edit]In4.4BSDand4.4BSD-Lite,files and directories (folders) accepted four attributes that could be set by the owner of the file or thesuperuser(the "User" attributes) and two attributes that could only be set by the superuser (the "System" attributes):[12]
- (User) No-dump:When set, it indicates that the file or directory should not be saved during abackupoperation.
- (User and System) Immutable:When set, indicates that the file or directory should not be altered. Attempts to open the file for writing, create a file within the directory, remove a file from the directory, rename a file within the directory, rename the file or directory, or remove the file or directory will fail with a permissions error.
- (User and System) Append-only:When set, indicates that the file should only be appended to.
- (User) Opaque:When set on a directory, indicates that the directory is opaque when viewed through aunion stack.
FreeBSDadded some additional attributes,[13]also supported byDragonFly BSD:[14]
- (User and System) No-unlink:When set, indicates that the file or directory should not be renamed or removed. Attempts to rename or remove the file or directory will fail with a permissions error.
FreeBSD also supports:[13]
- (System) No-archive:When set, indicates that the file or directory should not be archived.
- (System) Snapshot:When set, indicates that the file or directory is a snapshot file. This attribute is maintained by the system, and cannot be set, even by the super-user.
whereas DragonFly BSD supports:[14]
- (User and System) No-history:When set, indicates that history should not be retained for the file or directory.
- (User) Swapcache:When set, indicates that clean filesystem data for the file, or for the directory and everything underneath the directory, should be cached in swap space on asolid-state drive.
- (System) Swapcache:When set, indicates that clean filesystem data for the file, or for the directory and everything underneath the directory, shouldnotbe cached in swap space on a solid-state drive.
- (System) Archived:When set, indicates that the file or directory may be archived.
NetBSDadded another attribute,[15]also supported byOpenBSD:[16]
- (System) Archived:When set, indicates that the file or directory is archived.
macOSadded three attributes:
- (User) Hidden:When set, indicates that the file or directory should not, by default, be displayed in the GUI;lswill display it, however.[17]
- (System) Restricted:When set, indicates that the file or directory will be protected bySystem Integrity Protection
- (User and System) Compressed:Read-only attribute for files compressed usingHFS+Compression
In these systems, thechflags
andls
commands can be used to change and display file attributes. To change a "user" attribute on a file in 4.4BSD-derived operating systems, the user must be the owner of the file or the superuser; to change a "system" attribute, the user must be the superuser.
Linux
[edit]TheLinuxoperating system can support awide range of file attributesthat can be listed by thelsattr
command and modified, where possible, by thechattr
command.
Programs can examine and alter attributes usingioctloperations.[18]
Many Linux file systems support only a limited set of attributes, and none of them support every attribute thatchattr
can change. File systems that support at least some attributes includeext4,XFSandbtrfs.
Attribute | lsattrflag | chattroption | Semantics and rationale |
---|---|---|---|
Noatime updates
|
A
|
+A,-A
|
atimerecordis not modified when file is read/accessed. |
Append-only | a
|
+a,-a
|
Writing to file only allowed in append mode. |
Immutable | i
|
+i,-i
|
Prevents any change to file's contents or metadata: file/directory cannot be written to, deleted, renamed, or hard-linked. |
No dump | d
|
+d,-d
|
File is skipped by thedumpprogram |
Secure deletion | s
|
+s,-s
|
Requests that, when deleted, all file data blocks arefilled with zeroes. |
Synchronous updates | S
|
+S,-S
|
Changes are written synchronously to the underlying filesystem storage medium; equivalent to 'sync' mount option for affected files. |
OpenSolaris and derivatives
[edit]Support for "system attributes" (in which the operating system defines the meaning, unlike generalextended file attributes) was added to OpenSolaris in 2007 in support of the CIFS server.[19]It has been carried forward from there into both theOracle Solaris11 releases and the open sourceillumosproject.
In this implementation, awide range of attributescan be set via thechmod
command[20][21]and listed by thels
command.[22][23]
Programs can examine and alter attributes using thegetattrat
andsetattrat
functions.[24][25]
Currently theZFSfile system supports all defined attributes, and starting in Oracle Solaris 11.2, thetmpfsfile system supports a subset of attributes.[26]
Attribute | Compact flag forls&chmod | Semantics and rationale |
---|---|---|
appendonly
|
a
|
Writing to file only allowed in append mode. |
immutable
|
i
|
Prevents any change to file's contents or metadata (except access time): file/directory cannot be written to, deleted, or renamed. |
nodump
|
d
|
File should be skipped by backup programs |
nounlink
|
u
|
Prevents removing the file, but allows other changes. |
See also
[edit]References
[edit]- ^"Definition of: file attribute".PC Magazine.Ziff Davis.Retrieved14 October2020.
- ^"File attributes".Computer Hope.Retrieved2 December2012.
- ^ab"In Windows, what are file attributes, and how can I change them?".Knowledge Base.Indiana University.11 October 2011.Retrieved2 December2012.
- ^"What is a hidden file?".Windows 7 Help.Microsoft.Retrieved2 December2012.
- ^"Why is the readonly property on folders so strange?".
- ^ab"File Attribute Constants".MSDN.Microsoft.Retrieved17 July2018.
- ^"HOW TO: Use the File Attribute Management Script (Fileattributes.pl) in Windows 2000".Microsoft support.Microsoft.Retrieved2 December2012.
- ^"Definition of: DOS Attrib".PC Magazine.Ziff Davis.Archived fromthe originalon 2 March 2012.Retrieved2 December2012.
- ^"Use a PowerShell Cmdlet to Work with File Attributes".Hey, Scripting Guy! Blog.Microsoft. 26 January 2011.Retrieved3 December2012.
- ^"How to set, view, change, or remove special permissions for files and folders in Windows XP".Microsoft Support.Microsoft. 7 May 2007.Retrieved2 December2012.
- ^BSDSystem CallsManual –
- ^abFreeBSDSystem CallsManual –
- ^abDragonFly BSDSystem Calls and Error NumbersManual –
- ^NetBSDSystem CallsManual –
- ^OpenBSDSystem CallsManual –
- ^DarwinandmacOSSystem CallsManual –
- ^LinuxProgrammer'sManual– System Calls –
- ^Shellenbaum, Mark."Extensible Attribute Interfaces [PSARC/2007/315]".OpenSolaris ARC Material Archive.illumos.org.Retrieved10 March2023.
- ^"chmod(1)".Oracle Solaris 11.4 Reference Library: man pages section 1: User Commands.Oracle.Retrieved10 March2023.
- ^"chmod(1)".illumos man pages.illumos.org.Retrieved10 March2023.
- ^"ls(1)".Oracle Solaris 11.4 Reference Library: man pages section 1: User Commands.Oracle.Retrieved10 March2023.
- ^"ls(1)".illumos man pages.illumos.org.Retrieved10 March2023.
- ^"getattrat(3c)/setattrat(3c)".Oracle Solaris 11.4 Reference Library: man pages section 3: Basic Library Functions.Oracle.Retrieved10 March2023.
- ^"getattrat(3c)/setattrat(3c)".illumos man pages.illumos.org.Retrieved10 March2023.
- ^"sysattr(7)".Oracle Solaris 11.4 Reference Library: man pages section 7.Oracle.Retrieved10 March2023.
External links
[edit]- Definition of: DOS AttribArchived2012-03-02 at theWayback MachineonPC Magazine
- Hidden files in Unix-like operating systemsat theWayback Machine(archived October 17, 2007)
- File attribute constants,inC(-runtime-library), by Microsoft Learn, 10/26/2022
- File Attribute Constants,in (Win32-)C++,by Microsoft Learn, 06/09/2023