Chattr Command in Linux (File Attributes)
3 min read
In Linux, file attributes are meta-data properties that describe the file’s behavior. For example, an attribute can indicate whether a file is compressed or specify if the file can be deleted.
Some attributes like immutability can be set or cleared, while others like encryption are read-only and can only be viewed. The support for certain attributes depends on the filesystem being used.
This article explains how to use the
chattr command to change file attributes on Linux file systems.
chattr command takes the following general form:
chattr [OPTIONS] [OPERATOR][ATTRIBUTES] FILE...
The value of the
[OPERATOR] part can be one of the following symbols:
+- The plus operator tells the
chattrto add specified attributes to the existing ones.
-- The minus operator tells the
chattrto remove specified attributes from the existing ones.
=- The equal operator tells the
chattrto set specified attributes as the only attributes.
The operator is followed by one or more
[ATTRIBUTES] flags that you want to add or remove from the file attributes. Below is a list of a few common attributes and associated flags:
a- When this attribute is set, the file can only be opened in append mode for writing.
A- When a file with this attribute set is open, its atime record is not changed. atime (access time) is the last time the file was accessed/opened by some command or application.
e- This attribute denotes that the file is using extents for mapping the blocks on disk. The
eattribute cannot be modified with
i- This attribute indicates that the file is immutable, which means that the file cannot be deleted or renamed.
For a complete list of all file attributes and flags, type
man chattr in your terminal.
One of the common uses of
chattr is to set the immutable flag to a file or directory to prevent users from deleting or renaming the file.
You can view the file attributes with the
The output below shows that only the
e flag is set:
To make the file immutable, add the
i flag with the
+ operator to the existing attributes:
sudo chattr +i todo.txt
We’re using sudo because only root can change the immutable flag.
Confirm that the attribute is added:
To revert the changes and remove the immutable flag, use the
sudo chattr +i todo.txt
chattr, you can add or remove multiple attributes at once. For example, to make the file immutable and tell the kernel not to track the last accessed time, you would use:
sudo chattr +iA todo.txt
The last operator that you can use is the
= operator. For example, to set the
e attribute as the only attribute, you would run:
sudo chattr "=e" todo.txt
Notice that the operator and flag are enclosed in quotes, to avoid shell interpretation of the
chattr is a command-line tool for changing the file attributes on a Linux file system.
If you have any questions or feedback, feel free to leave a comment.