rootでも削除できないファイルの作成
ja-manのpkg_addに失敗?したせいか、/var/tmp/以下にrootでも削除できないファイルができた。
調べてみたところ、実際そういうファイルは作成できるようだ。
http://blog.livedoor.jp/tuzzy92/archives/51935480.html
chflagsコマンドを使用して、システムの変更禁止フラグを設定することで削除できなくなる。
このシステムの変更禁止フラグはls -loで確認できる。
とりあえず元のファイルを作成
# touch a # ls -lo a -rw-r--r-- 1 root wheel - 0 Aug 17 19:39 a
設定
# chflags schg a # ls -lo a -rw-r--r-- 1 root wheel schg 0 Aug 17 19:39 a
削除してみるができない
# rm -f a rm: a: Operation not permitted
設定解除
# chflags noschg a # ls -lo a -rw-r--r-- 1 root wheel - 0 Aug 17 19:39 a
削除
# rm -f a # ls a ls: a: No such file or directory
削除できた。
インストール失敗で消せなくなったファイルの変更禁止フラグを確認してみる。
# find /var/tmp/ -name 'jman' |xargs ls -lo -r-sr-xr-x 1 man wheel schg 35256 Jul 10 21:31 /var/tmp/instmp.8PtGSM/bin/jman -r-sr-xr-x 1 man wheel schg 35256 Jul 10 21:31 /var/tmp/instmp.YPMbyi/bin/jman -r-sr-xr-x 1 man wheel schg 35256 Jul 10 21:31 /var/tmp/instmp.aLa7dH/bin/jman
変更禁止フラグが立っていた。変更禁止フラグを解除後に削除してみる。
# find /var/tmp/ -name 'jman' |xargs chflags noschg # find /var/tmp/ -name 'jman' |xargs ls -lo -r-sr-xr-x 1 man wheel - 35256 Jul 10 21:31 /var/tmp/instmp.8PtGSM/bin/jman -r-sr-xr-x 1 man wheel - 35256 Jul 10 21:31 /var/tmp/instmp.YPMbyi/bin/jman -r-sr-xr-x 1 man wheel - 35256 Jul 10 21:31 /var/tmp/instmp.aLa7dH/bin/jman # find /var/tmp/ -name 'jman' |xargs rm -rf # find /var/tmp/ -name 'jman' |xargs ls -lo
削除できた。