.\" -*- nroff -*-
.TH CHATTR 1 "@E2FSPROGS_MONTH@ @E2FSPROGS_YEAR@" "E2fsprogs version @E2FSPROGS_VERSION@"
.SH NAME
chattr \- change file attributes on a Linux file system
.SH SYNOPSIS
.B chattr
[
.B \-RVf
]
[
.B \-v
.I version
]
[
.B \-p
.I project
]
[
.I mode
]
.I files...
.SH DESCRIPTION
.B chattr
changes the file attributes on a Linux file system.
.PP
The format of a symbolic
.I mode
is
.BR +-= [ aAcCdDeFijmPsStTux ].
.PP
The operator
.RB ' + '
causes the selected attributes to be added to the
existing attributes of the files;
.RB ' - '
causes them to be removed; and
.RB ' = '
causes them to be the only attributes that the files have.
.PP
The letters
.RB ' aAcCdDeFijmPsStTux '
select the new attributes for the files:
append only
.RB ( a ),
no atime updates
.RB ( A ),
compressed
.RB ( c ),
no copy on write
.RB ( C ),
no dump
.RB ( d ),
synchronous directory updates
.RB ( D ),
extent format
.RB ( e ),
case-insensitive directory lookups
.RB ( F ),
immutable
.RB ( i ),
data journaling
.RB ( j ),
don't compress
.RB ( m ),
project hierarchy
.RB ( P ),
secure deletion
.RB ( s ),
synchronous updates
.RB ( S ),
no tail-merging
.RB ( t ),
top of directory hierarchy
.RB ( T ),
undeletable
.RB ( u ),
and direct access for files
.RB ( x ).
.PP
The following attributes are read-only, and may be listed by
.BR lsattr (1)
but not modified by chattr:
encrypted
.RB ( E ),
indexed directory
.RB ( I ),
inline data
.RB ( N ),
and verity
.RB ( V ).
.PP
Not all flags are supported or utilized by all file systems; refer to
file system-specific man pages such as
.BR btrfs (5),
.BR ext4 (5),
.BR mkfs.f2fs (8),
and
.BR xfs (5)
for more file system-specific details.
.SH OPTIONS
.TP
.B \-R
Recursively change attributes of directories and their contents.
.TP
.B \-V
Be verbose with chattr's output and print the program version.
.TP
.B \-f
Suppress most error messages.
.TP
.BI \-v " version"
Set the file's version/generation number.
.TP
.BI \-p " project"
Set the file's project number.
.SH ATTRIBUTES
.TP
.B a
A file with the 'a' attribute set can only be opened in append mode for
writing.  Only the superuser or a process possessing the
CAP_LINUX_IMMUTABLE capability can set or clear this attribute.
.TP
.B A
When a file with the 'A' attribute set is accessed, its atime record is
not modified.  This avoids a certain amount of disk I/O for laptop
systems.
.TP
.B c
A file with the 'c' attribute set is automatically compressed on the disk
by the kernel.  A read from this file returns uncompressed data.  A write to
this file compresses data before storing them on the disk.  Note: please
make sure to read the bugs and limitations section at the end of this
document.  (Note: For btrfs, If the 'c' flag is set, then the 'C' flag
cannot be set. Also conflicts with btrfs mount option 'nodatasum')
.TP
.B C
A file with the 'C' attribute set will not be subject to copy-on-write
updates.  This flag is only supported on file systems which perform
copy-on-write.  (Note: For btrfs, the 'C' flag should be
set on new or empty files.  If it is set on a file which already has
data blocks, it is undefined when the blocks assigned to the file will
be fully stable.  If the 'C' flag is set on a directory, it will have no
effect on the directory, but new files created in that directory will
have the No_COW attribute set. If the 'C' flag is set, then the 'c' flag
cannot be set.)
.TP
.B d
A file with the 'd' attribute set is not a candidate for backup when the
.BR dump (8)
program is run.
.TP
.B D
When a directory with the 'D' attribute set is modified,
the changes are written synchronously to the disk; this is equivalent to
the 'dirsync' mount option applied to a subset of the files.
.TP
.B e
The 'e' attribute indicates that the file is using extents for mapping
the blocks on disk.  It may not be removed using
.BR chattr (1).
.TP
.B E
A file, directory, or symlink with the 'E' attribute set is encrypted by the
file system.  This attribute may not be set or cleared using
.BR chattr (1),
although it can be displayed by
.BR lsattr (1).
.TP
.B F
A directory with the 'F' attribute set indicates that all the path
lookups inside that directory are made in a case-insensitive fashion.
This attribute can only be changed in empty directories on file systems
with the casefold feature enabled.
.TP
.B i
A file with the 'i' attribute cannot be modified: it cannot be deleted or
renamed, no link can be created to this file, most of the file's
metadata can not be modified, and the file can not be opened in write mode.
Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE
capability can set or clear this attribute.
.TP
.B I
The 'I' attribute is used by the htree code to indicate that a directory
is being indexed using hashed trees.  It may not be set or cleared using
.BR chattr (1),
although it can be displayed by
.BR lsattr (1).
.TP
.B j
A file with the 'j' attribute has all of its data written to the ext3 or
ext4 journal before being written to the file itself, if the file system
is mounted with the "data=ordered" or "data=writeback" options and the
file system has a journal.  When the file system is mounted with the
"data=journal" option all file data is already journalled and this
attribute has no effect.  Only the superuser or a process possessing the
CAP_SYS_RESOURCE capability can set or clear this attribute.
.TP
.B m
A file with the 'm' attribute is excluded from compression on file
systems that support per-file compression.
.TP
.B N
A file with the 'N' attribute set indicates that the file has data
stored inline, within the inode itself. It may not be set or cleared
using
.BR chattr (1),
although it can be displayed by
.BR lsattr (1).
.TP
.B P
A directory with the 'P' attribute set will enforce a hierarchical
structure for project id's.  This means that files and directories created
in the directory will inherit the project id of the directory, rename
operations are constrained so when a file or directory is moved into
another directory, that the project ids must match.  In addition, a
hard link to file can only be created when the project id for the file
and the destination directory match.
.TP
.B s
When a file with the 's' attribute set is deleted, its blocks are zeroed
and written back to the disk.  Note: please make sure to read the bugs
and limitations section at the end of this document.
.TP
.B S
When a file with the 'S' attribute set is modified,
the changes are written synchronously to the disk; this is equivalent to
the 'sync' mount option applied to a subset of the files.
.TP
.B t
A file with the 't' attribute will not have a partial block fragment at
the end of the file merged with other files (for those file systems which
support tail-merging).  This is necessary for applications such as LILO
which read the file system directly, and which don't understand tail-merged
files.  Note: As of this writing, the ext2, ext3, and ext4 file systems do
not support tail-merging.
.TP
.B T
A directory with the 'T' attribute will be deemed to be the top of
directory hierarchies for the purposes of the Orlov block allocator.
This is a hint to the block allocator used by ext3 and ext4 that the
subdirectories under this directory are not related, and thus should be
spread apart for allocation purposes.   For example it is a very good
idea to set the 'T' attribute on the /home directory, so that /home/john
and /home/mary are placed into separate block groups.  For directories
where this attribute is not set, the Orlov block allocator will try to
group subdirectories closer together where possible.
.TP
.B u
When a file with the 'u' attribute set is deleted, its contents are
saved.  This allows the user to ask for its undeletion.  Note: please
make sure to read the bugs and limitations section at the end of this
document.
.TP
.B x
A file with the 'x' requests the use of direct access (dax) mode, if the
kernel supports DAX.  This can be overridden by the 'dax=never' mount
option.  For more information see the kernel documentation for dax:
<https://www.kernel.org/doc/html/latest/filesystems/dax.html>.
.IP
If the attribute is set on an existing directory, it will be inherited
by all files and subdirectories that are subsequently created in the
directory.  If an existing directory has contained some files and
subdirectories, modifying the attribute on the parent directory doesn't
change the attributes on these files and subdirectories.
.TP
.B V
A file with the 'V' attribute set has fs-verity enabled.  It cannot be
written to, and the file system will automatically verify all data read
from it against a cryptographic hash that covers the entire file's
contents, e.g. via a Merkle tree.  This makes it possible to efficiently
authenticate the file.  This attribute may not be set or cleared using
.BR chattr (1),
although it can be displayed by
.BR lsattr (1).
.PP
.SH AUTHOR
.B chattr
was written by Remy Card <Remy.Card@linux.org>.  It is currently being
maintained by Theodore Ts'o <tytso@alum.mit.edu>.
.SH BUGS AND LIMITATIONS
The 'c', 's',  and 'u' attributes are not honored
by the ext2, ext3, and ext4 file systems as implemented in the current
mainline Linux kernels.
Setting 'a' and 'i' attributes will not affect the ability to write
to already existing file descriptors.
.PP
The 'j' option is only useful for ext3 and ext4 file systems.
.PP
The 'D' option is only useful on Linux kernel 2.5.19 and later.
.SH AVAILABILITY
.B chattr
is part of the e2fsprogs package and is available from
http://e2fsprogs.sourceforge.net.
.SH SEE ALSO
.BR lsattr (1),
.BR btrfs (5),
.BR ext4 (5),
.BR mkfs.f2fs (8),
.BR xfs (5).
