UNIX/Linuxの部屋 chflagsコマンドの使い方


※空白区切りで AND 検索 (例:「ファイル 削除」)

コマンド chflags ファイルのフラグを変更する

BSD 系 UNIX にはパーミッションとは別にファイルフラグという仕組みがあり、変更禁止、追加禁止などの設定をすることができる。なお、ファイルフラグは chmod のパーミッションとは全く別のものである。
  • arch アーカイブフラグ
  • dump ダンプフラグ
  • sappnd システムの追加専用フラグ
  • schg システムの変更禁止フラグ
  • uappnd ユーザの追加専用フラグ
  • uchg ユーザの変更禁止フラグ
また、これらの先頭に no をつけるとフラグを消す意味がある。

ファイルを変更禁止にするには
% chflags uchg file
元に戻すには
% chflags nouchg file
とする。例えば 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 のみだろうと思われる。
>> FreeBSDオンラインマニュアル(man) FreeBSD chflags(1)


頑張って書いたおすすめコンテンツ!
クラウドサービス徹底比較・徹底解説