概要
スーパーユーザー(root)ですら消せないファイルの作りかたです。
ファイルアクセス権限系のテストを行う際に使えます。
内容
ぱっと思いつくのは chmod 000 でアクセス権限をすべて無効化する方法ですが、これではファイルやディレクトリは何事もなく消せてしまいます。代わりに chattr というコマンドを使います。
※chattr コマンドが見つからない場合は yum install -y e2fsprogs でインストールしておきます。
消せないファイルを作るには以下のように i 属性を追加してコマンドを実行します。
# chattr +i ファイル名
i 属性を追加したファイルを削除しようとすると怒られます。
# touch test
# chattr +i test
# rm -f test
rm: `test' を削除できません: 許可されていない操作です
再び削除できるようにするには i 属性を取り除きます。
# chattr -i test
# rm -f test
chattr コマンドは ext2/ext3/ext4 ファイルシステムで利用する拡張属性を設定するためのコマンドです。
i は変更不可をあらわす属性になっています。ほかにも以下のような属性があります。
| 属性 | 説明 |
|---|---|
| a | 書き込みの際に追加モードでしかオープンできない |
| A | ファイルにアクセスしても atime レコード(アクセス時刻)を更新しない |
| c | ファイルを圧縮する |
| d | dump(8)プログラムの起動時にバックアップしない |
| D | ディレクトリの変更時に同期的にディスクに書き込む |
| e | 拡張フォーマットを使用する |
| i | 内容の変更、削除、名前の変更、リンクの作成を禁止する |
| j | データをジャーナルに書き出す |
| s | ファイル削除の際に割り当てられているブロックの中身を0で初期化する |
| S | ファイルの変更時に同期的にディスクに書き込む |
| t | ファイルをマージした際にフラグメントを末尾に作らない |
| T | Orlovブロックアロケータのためのディレクトリ階層のトップとして扱う |
| u | 削除を禁止する |
設定されている属性の情報を確認するには lsattr コマンドを使用します。
# touch test
# chattr +i test
# lsattr
----i----------- ./test
i 属性が設定されていることが確認できます。