built-in utilities">

Next: , Previous: Traversing symlinks, Up: Common options   [Contents][Index]


2.11 / (ルート) を特別扱いする

ある種のコマンドは、ディレクトリ階層全体に対して破壊的な作用を及ぼす可能性がある。 たとえば、しかるべき特権を持ったユーザが、‘rm -rf / tmp/junk’ を誤って実行したら、システム全体のすべてのファイルが消えてしまうかもしれないのだ。 そうしたコマンドの使用が正当であることは、めったにないので、GNU の rm は、/ に還元されるようないかなるディレクトリに対しても、通常では、操作を拒否するようになっている。 もし、本当にシステムのすべてのファイルを消去しようと思うのなら、 --no-preserve-root オプションを使用すればよい。 とは言え、ほとんどの用途で、デフォルトの動作 (明示的に指定するには、 --preserve-root オプションを使う) の方が安全である。

chgrp, chmod, chown などのコマンドも、ディレクトリ階層全体に対して破壊的な作用を及ぼす可能性がある。 従って、こうしたコマンドもまた、上記のオプションをサポートしている。 こうしたコマンドは、rm とは違って、ファイルを実際に削除してしまうわけではないが、 / から再帰的に働くときは、一層危険だと言うこともできる。 と言うのは、たいていの場合、処理速度がずっと早いので、 注意力のあるユーザがコマンドを中断できるより前に、rm の場合より、もっと多くのファイルに被害を与えてしまうからだ。Unix の習慣も POSIX の規格も、こうしたコマンドが / から再帰的に働くことを要求している。 それ故、デフォルトが --no-preserve-root になっているのだが、 こうしたコマンドは、--preserve-root オプションを使った方が、ほとんどの用途でより安全である。 面倒ならば、エイリアスか、シェル関数を作って、--preserve-root を指定しておけばよいのだ。

また、--preserve-root を指定すると、/ を指しているシンボリックリンクの参照をたどる場合でも、chgrpchown が、/ のグループや所有者を変更しなくなることも、憶えておいていただきたい。 (訳注: chgrpchown の解説を見ていただけばわかるが、 これは、--recursive (-R) を同時に使っているときの話である。)