安全なrm safe-rm

safe-rmはrmのラッパコマンド。あらかじめ削除されてはまずいファイルやディレクトリを登録しておき(blacklist)、それらを削除しようとしたときは警告が表示される。ここではUbuntu8.10を使って行った。

マニュアルによると、/usr/local/bin/にrmとしてシンボリックリンクをはって使う記述があるので、それにしたがってやってみる。

パスを確認して/usr/local/binが/usr/binより前にあることを確認する。

$ echo $PATH

シンボリックリンク/usr/local/bin/rmを作成する。

$ sudo ln -s /usr/bin/safe-rm /usr/local/bin/rm

確認

$ which rm
/usr/local/bin/rm
$ file /usr/local/bin/rm
/usr/local/bin/rm: symbolic link to `/usr/bin/safe-rm'

safe-rmはrmと同じオプションを受け入れることが出きるので使うときにはrmコマンドと同じように使える。blacklistを登録するには、/etc/safe-rm.confか~/.safe-rmに記述する。1行に1ファイルor1ディレクトリを記述する。デフォルト状態(=空状態)では重要なファイルが適用されるので、このファイルを作らなくてもいい。デフォルトのblacklistは以下のようになっている。

/bin
/boot
/dev
/etc
/home
/initrd
/lib
/proc
/root
/sbin
/sys
/usr
/usr/bin
/usr/include
/usr/lib
/usr/local
/usr/local/bin
/usr/local/include
/usr/local/sbin
/usr/local/share
/usr/sbin
/usr/share

Ubuntuではインストール時に/etc/safe-rm.confが作られており以下のようになっている。

/bin
/boot
/dev
/etc
/home
/initrd
/lib
/proc
/root
/sbin
/sys
/usr
/usr/bin
/usr/include
/usr/lib
/usr/local
/usr/local/bin
/usr/local/include
/usr/local/sbin
/usr/local/share
/usr/sbin
/usr/share
/usr/src
/var

エントリがディレクトリの場合は、そのディレクトリのみが対象で配下のファイルは関係ないようだ。

実験。
/etc/iranaifile と /etc/iranaidir を/etc/safe-rm.conf追加する

$ sudo vi /etc/safe-rm.conf

作成して削除してみる。

$ sudo touch /etc/iranaifile
$ sudo mkdir /etc/iranaidir
$ sudo rm /etc/iranaifile
Skipping /etc/iranaifile
$ sudo rm -rf /etc/iranaidir/
Skipping /etc/iranaidir/
$

Leave a Reply

Your email address will not be published. Required fields are marked *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)