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