Protection from the dreaded "rm -fr /"
M. Warner Losh
imp at bsdimp.com
Sun Oct 3 10:38:19 PDT 2004
In message: <20041003030946.GV35869 at seekingfire.com>
Tillman Hodgson <tillman at seekingfire.com> writes:
: On Sat, Oct 02, 2004 at 07:29:51PM -0600, M. Warner Losh wrote:
: > In message: <20041002210554.GS35869 at seekingfire.com>
: > Tillman Hodgson <tillman at seekingfire.com> writes:
: > : It'll never work, though, that's the thing. At some point it'll rm
: > : something it itself needs and error out. There isn't a way to use `rm
: > : -rf /` that /doesn't/ result in foot-shooting.
: >
: > No. You are wrong. if you rm -rf in a chroot, then it won't result
: > in foot shooting, necessarily, like it would outside a chroot.
:
: If you're chrooted, where is the rm binary and associated libraries?
: They're in the chroot, in a branch off hte virtual / tree root.
rm doesn't have to live in the chroot. Consider
chroot /some/path/to/a/chroot rm -rf /
in this case, everything under the /some/path/to/a/chroot would be
removed. However, the rm that's running is outside of the chroot.
This is typically how chroot commands are run, often from shell
scripts.
: `rm -rf /`, even in chroot, won't delete everything that the command
: looks like it will.
It can delete just about everything, see above.
: At the very least the final unlink, that of /
: itself, will likely result in undefined behaviour.
Purhaps, but that's not rm's job: to protect you from something that
might be undefined. unlink(2) is undefined for remote file systems as
well. Maybe it will work, maybe it won't.
: Where do the dev's
: go if there's no / to root them in? etc etc.
Doesn't matter. Irrelevant. The chroot might not have a devfs
mounted in it, or any dev nodes at all. /dev isn't required for
most operations.
Warner
More information about the freebsd-hackers
mailing list