GNU bug report logs -
#79218
BUG: sudo rm -rf /* removes without --no-preserve-root
Previous Next
Full log
View this message in rfc822 format
Hi,
Doctorixx <jebpip2008 <at> gmail.com> writes:
> Hello coreutils maintainers,
>
> I noticed a potentially dangerous difference in how rm handles the / and /*
> patterns.
>
> Currently:
>
> $ sudo rm -rf /
> rm: it is dangerous to operate recursively on '/'
> rm: use --no-preserve-root to override this failsafe
>
> This prevents accidental deletion of the root directory.
>
> However:
>
> $ sudo rm -rf /*
>
> This command will proceed to remove the contents of /, effectively
> destroying the system, without any warning.
>
> While this is technically correct according to shell expansion rules, it
> may be surprising for some users. People might assume /* is just as
> protected as /, but the safeguard doesn’t apply.
The 'rm' command does not handle /* since globbing is handled by the
shell. So 'rm' has no way of knowing it is passed /*, it just sees file
names passed to the command-line. Here is an example:
$ cat main.c
#include <stdio.h>
#include <stdlib.h>
int
main (int argc, char **argv)
{
for (int i = 1; i < argc; ++i)
printf ("%s\n", argv[i]);
return EXIT_SUCCESS;
}
$ gcc main.c
$ ./a.out /*
/afs
/bin
/boot
/dev
/etc
/home
[...]
Collin
This bug report was last modified 29 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.