Table of Contents

chattr is a not-well known command, but it can do very useful things with files attributes. In this post I will show you some examples.

Installation

chattr is part of the e2fsprogs package, which is usually already installed on most Linux systems.

Usage

The basic syntax of chattr is:

chattr [options] [mode] <files>

To list the attributes of a file, use lsattr:

lsattr <files>
  • -R to do recursive listing.

Options

The most relevant option is -R to recursively change attributes of directories and their contents.

Mode (attributes)

The format of a mode consist of:

  • +, - or =: add attributes (+), remove them (-) or set only the specified ones (=).
  • One or more of the following letters: aAcCdDeFijmPsStTux. Check chattr man page for a full explanation of all available attributes.

For example:

# Add an attribute
chattr +i some_file
# Remove an attribute
chattr -i some_file

Now, I am going to explain some of the available attributes:

  • a: the file can only be opened in append mode. Only a superuser can set or clear this attribute.
$ echo "Hola" > test1
$ sudo chattr +a test1
$ echo "Adios" > test1
bash: test1: Operation not permitted
$ echo "Adios" >> test1
$ cat test1
Hola
Adios
  • A: don’t change access time when the file is accessed.
  • i: the file cannot be modified, deleted or renamed, and no link can be created using this file. The file cannot be opened in write mode. Only a superuser can set or clear this attribute.
$ sudo chattr +i test1
$ echo "Hasta luego" >> test1
bash: test1: Operation not permitted

Some attributes such as c (compress), s (overwrite with zeros when deleted) and u (save contents when deleted) don’t work on ext2/3/4 filesystems.

If you have any suggestion, feel free to contact me via social media or email.