Linux – what does the “a” in chattr +ia do

filesystemslinuxpermissionsxattr

what does the a in chattr +ia <filename> do? and why would you add the a in combination with the i? note: I know the i is for immutable

Best Answer

  The  letters  `acdeijstuADST'  select the new attributes for the files:
  append only (a), compressed  (c),  no  dump  (d),  extent  format  (e),
  immutable (i), data journalling (j), secure deletion (s), no tail-merg‐
  ing (t), undeletable (u), no atime updates (A),  synchronous  directory
  updates  (D),  synchronous  updates (S), and top of directory hierarchy
  (T).

from the manpage for chattr

Files with this flag will fail to be opened for writing. This also blocks certain potentially destructive system calls such as truncate() or unlink().

$ touch foo
$ chattr +a foo
$ python
> file("foo", "w") #attempt to open for writing
[Errno 1] Operation not permitted: 'foo'
> quit()
$ truncate foo --size 0
truncate: cannot open `foo' for writing: Operation not permitted
$ echo "Appending works fine." >> foo
$ cat foo
Appending works fine.
$ rm foo
rm: cannot remove `foo': Operation not permitted
$ chattr -a foo
$ rm foo

This option is designed for log files.