FreeBSDでは、パーミッションで許可されていても消せないファイルがある
この記事は、FreeBSD初心者向けです。
BSD系 ( FreeBSD を含む ) OS では、パーミッションがすべて書き込み可(許可)となってしても消せないファイルがあります。
通常、UNIX系 ( Linux系も含む ) のOSでは、chmodでファイル、ディレクトリのパーミッション ( アクセス権 ) の設定を行うことで、
ファイル、ディレクトリのアクセス制御を行う、管理・運営することができます。
BSD系 のOSでは、さらに、ファイルフラグ の設定を行うことができます。
chflags
ここでは、SSHでログインするまでを簡単に解説します。
パーミッションが許可されていても消せないファイルの対処
まず、タイトルの対処について簡単に解説しておきます。
スーパーユーザなのにパーミッションが許可されていても消せないファイルがあるというのは、以下のような状態です。
$ ls -l
total 2
-rw-rw-rw- 1 root wheel 5 2月 3 11:38 sample.txt
$ rm -f sample.txt
rm: sample.txt: Operation not permitted
|
このオペレーションを行っているのは、もちろんスーパーユーザであるrootです。
lsコマンドで見る限り、パーミッションの設定は、すべてのユーザに対して読み書き可になっています。
それでも Operation not permitted つまり、許可されていない操作 なので消せない状態です。
これは、以下の手順で簡単に消せます。
- ファイルフラグの設定を確認する。
ファイルフラグの設定内容はは、ls コマンドの -ol オプションを指定することで表示することができます。
$ ls -ol
total 2
-rw-rw-rw- 1 root wheel schg 5 2月 3 11:38 sample.txt
|
ここでは、schg というファイルフラグが設定されています。
もし、ファイルフラグが設定されてない場合、上記のエリアは、– (ハイホン) が出力されます。
- ファイルフラグの解除を行う。
上記の例では、schg というファイルフラグが設定されていました。
このファイルフラグを解除するには、設定されているファイルフラグ名の前に no を付加 ( ここの例では、noschg となる ) したパラメータを指定し、 chflagsコマンドで解除することができます。
$ chflags noschg sample.txt
$ ls -ol
total 2
-rw-rw-rw- 1 root wheel - 5 2月 3 11:38 sample.txt
|
- ファイルを削除する。
ファイルフラグが上記のように解除されたら、削除できるはずなので、rm コマンドで削除しましょう。
$ rm -f sample.txt
$ ls -ol
total 0
|
いちいちファイルフラグを調べるのは億劫かもしれません。そんなときは、
chflagsコマンドの パラメータ に
0 を指定することで、無条件にファイルフラグを解除することができます。
$ ls -ol
total 2
-rw-rw-rw- 1 root wheel schg 5 2月 3 11:56 sample.txt
$ chflags 0 sample.txt
$ ls -ol
total 2
-rw-rw-rw- 1 root wheel - 5 2月 3 11:56 sample.txt
|
chflagsで設定・解除できるファイルフラグ
chflagsで設定・解除できるファイルフラグ名と設定・解除に指定するパラメータ、および簡単な解説を以下に一覧でまとめてみました。
今回は、簡単ながらファイルフラグについて書いてみました。
最近は、Linuxばかり扱うことが多くて、この種のBSD独特の機能を忘れてしまっています。しばらく扱いだすとまた思い出してはきますが、今回は、忘れないように備忘録としても記事にしておきました。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
関連記事 :
コメントを投稿 :