コマンド
chflags
ファイルのフラグを変更する
BSD 系 UNIX にはパーミッションとは別にファイルフラグという仕組みがあり、変更禁止、追加禁止などの設定をすることができる。なお、ファイルフラグは chmod のパーミッションとは全く別のものである。
- arch アーカイブフラグ
- dump ダンプフラグ
- sappnd システムの追加専用フラグ
- schg システムの変更禁止フラグ
- uappnd ユーザの追加専用フラグ
- uchg ユーザの変更禁止フラグ
また、これらの先頭に no をつけるとフラグを消す意味がある。
ファイルを変更禁止にするには
元に戻すには
とする。例えば FreeBSD では /kernel は chflags schg /kernel とされているので、mv や rm する際は
# chflags noschg /kernel
# rm /kernel
などと、一旦フラグを OFF にしなければならない。他にも、init・chsh コマンドなどに schg フラグが立てられている。現在のファイルフラグの値は ls -lo で見ることができる。
% ls -lo /kernel /sbin/init /usr/bin/chsh
-r-xr-xr-x 1 root wheel schg 1301840 Jun 20 20:54 /kernel
-r-x------ 1 bin bin schg 204800 Oct 13 21:56 /sbin/init
-r-sr-xr-x 6 root bin schg 36864 Mar 4 1999 /usr/bin/chsh
なお、ファイルフラグは 4.4BSD から追加された。おそらくファイルフラグを実装しているのは FreeBSD・NetBSD・OpenBSD・BSDI のみだろうと思われる。