Linuxコマンド chattr(ext2/ext3/ext4ファイルシステム上のファイル属性を変更)

ext2/ext3/ext4ファイルシステム(ext2fs)上のファイル属性(attribute) を変更するコマンドについて解説。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

使用方法

ext2/ext3/ext4ファイルシステムの「ファイル属性」はUNIXで使われるアクセス制御のパーミッションとは別に、ファイルシステム上に用意されている特殊な属性を示します。chattrはファイルシステム上にあるファイルのファイル属性を変更することができます。

モードに「+」を付加した場合は属性を足します。「-」を指定した場合は削除します。

書式

$ lsattr [オプション] モード ファイル名・・・

オプション

-R再帰的にディレクトリやその中身の属性を変更する。
ディレクトリを順番に訪れている途中でシンボリックリンクに出会った場合は、 これを無視する。
-fエラーメッセージの表示を抑制する
-V属性編句の詳細を表示する
オプション一覧表

モード(ファイル属性)

a追加することができるが変更することはできない。
cカーネルによりファイルシステムに置かれる時点で圧縮される。(自動的に圧縮)
ddumpコマンドのバックアップ対象外となる。
eファイル断片化を防ぐ機能を使う(「extent file writing」システム)
chattrでは変更できない
i追加/変更/削除できない
jマウント時にオプションで「data=orderd」か「data=writeback」が指定された場合、
ファイルに書き込む前にext3ジャーナルシステムに書き込むようにする。
s安全に削除する。削除されるとそのブロックの中身は0になる
u削除しても復旧が可能であることを示す
Aatime(access time)の更新が不可。アクセスしてもatimeは更新されない
C複数プロセスで同じファイルにアクセスした際のCopy on Write用
プライベーコピーを行わない
Dディレクトリの同期を更新する。設定されたディレクトリは更新されると
同時にディスクにも書き込む
E実験的な実装で圧縮プログラムが圧縮を失敗した際に付加されるフラグ。
chattrでは変更できない。
S更新されるとディスクにすぐに書き込む
TOrlovブロックアロケータが有効な際に使えるフラグ。
ディレクトリ階層のトップを示す。
属性

サンプル:属性を加算する

$  chattr +i sample1.txt

実行結果

[root@xxx work]$ chattr +i sample.txt 
[root@xxx work]$ lsattr sample.txt 
----i----------- sample.txt
[root@xxx work]$ rm -f sample.txt 
rm: cannot remove ‘sample.txt’: Operation not permitted
 #ファイルを削除することができない。

サンプル:属性を減算する

$  chattr -i sample1.txt

実行結果

[root@xxx work]$ lsattr sample.txt #sample.txtにiが付加されている。
----i----------- sample.txt
[root@xxx work]$ chattr -i sample.txt #i属性を外す
[root@xxx work]$ lsattr sample.txt
---------------- sample.txt
[root@xxx work]$ rm -f sample.txt  #ファイルを削除できるようになる。
[root@xxx work]$ ls -l
total 0
lrwxrwxrwx 1 root root   18 Apr 21 21:57 link_sample -> sample/sample2.txt
drwxr-xr-x 3 root centos 43 Apr 21 21:33 sample
[root@xxx work]$