| From | Sent On | Attachments |
|---|---|---|
| Giorgos Keramidas | Oct 2, 2004 1:19 am | |
| Edwin Groothuis | Oct 2, 2004 1:33 am | |
| Michael Reifenberger | Oct 2, 2004 1:34 am | |
| Giorgos Keramidas | Oct 2, 2004 1:39 am | |
| Giorgos Keramidas | Oct 2, 2004 1:51 am | |
| Ryan Sommers | Oct 2, 2004 1:52 am | |
| Giorgos Keramidas | Oct 2, 2004 1:53 am | |
| Giorgos Keramidas | Oct 2, 2004 2:06 am | |
| Max Laier | Oct 2, 2004 2:24 am | |
| Giorgos Keramidas | Oct 2, 2004 3:19 am | |
| Greg Black | Oct 2, 2004 3:57 am | |
| Ceri Davies | Oct 2, 2004 4:22 am | |
| Ceri Davies | Oct 2, 2004 4:25 am | |
| Max Laier | Oct 2, 2004 4:51 am | |
| Peter Jeremy | Oct 2, 2004 5:43 am | |
| Dimitry Andric | Oct 2, 2004 7:48 am | |
| Simon L. Nielsen | Oct 2, 2004 8:03 am | |
| Sean Farley | Oct 2, 2004 8:41 am | |
| Sam | Oct 2, 2004 8:54 am | |
| Jacques A. Vidrine | Oct 2, 2004 9:46 am | |
| Tillman Hodgson | Oct 2, 2004 9:51 am | |
| Lee Harr | Oct 2, 2004 9:53 am | |
| Tillman Hodgson | Oct 2, 2004 9:55 am | |
| Giorgos Keramidas | Oct 2, 2004 10:10 am | |
| Giorgos Keramidas | Oct 2, 2004 10:55 am | |
| Giorgos Keramidas | Oct 2, 2004 10:56 am | |
| Tillman Hodgson | Oct 2, 2004 11:09 am | |
| Doug Russell | Oct 2, 2004 11:37 am | |
| David Schultz | Oct 2, 2004 11:50 am | |
| David Schultz | Oct 2, 2004 12:01 pm | |
| Michael Reifenberger | Oct 2, 2004 12:16 pm | |
| Doug Russell | Oct 2, 2004 12:18 pm | |
| Michael Reifenberger | Oct 2, 2004 12:26 pm | |
| Dmitry Frolov | Oct 2, 2004 12:37 pm | |
| Doug Russell | Oct 2, 2004 12:48 pm | |
| David Schultz | Oct 2, 2004 1:11 pm | |
| Michael Reifenberger | Oct 2, 2004 1:49 pm | |
| Tillman Hodgson | Oct 2, 2004 2:05 pm | |
| Garance A Drosihn | Oct 2, 2004 2:22 pm | |
| Ceri Davies | Oct 2, 2004 3:00 pm | |
| sor...@cydem.org | Oct 2, 2004 3:11 pm | |
| Giorgos Keramidas | Oct 2, 2004 4:28 pm | |
| Giorgos Keramidas | Oct 2, 2004 4:28 pm | |
| David Schultz | Oct 2, 2004 5:19 pm | |
| M. Warner Losh | Oct 2, 2004 6:26 pm | |
| M. Warner Losh | Oct 2, 2004 6:28 pm | |
| M. Warner Losh | Oct 2, 2004 6:29 pm | |
| Giorgos Keramidas | Oct 2, 2004 6:53 pm | |
| Thomas David Rivers | Oct 2, 2004 6:53 pm | |
| M. Warner Losh | Oct 2, 2004 7:07 pm | |
| Doug Russell | Oct 2, 2004 7:11 pm | |
| Tillman Hodgson | Oct 2, 2004 8:09 pm | |
| Tillman Hodgson | Oct 2, 2004 8:11 pm | |
| David Schultz | Oct 2, 2004 11:31 pm | |
| Sam Lawrance | Oct 3, 2004 12:35 am | |
| Chris Howells | Oct 3, 2004 5:07 am | |
| Mike Meyer | Oct 3, 2004 5:07 am | |
| Mike Meyer | Oct 3, 2004 5:07 am | |
| M. Warner Losh | Oct 3, 2004 10:37 am | |
| Greg Shenaut | Oct 3, 2004 11:14 am | |
| Dmitry Morozovsky | Oct 3, 2004 11:28 am | |
| Thomas Sparrevohn | Oct 3, 2004 11:40 am | |
| Dag-Erling Smørgrav | Oct 3, 2004 1:33 pm | |
| Roman Neuhauser | Oct 3, 2004 2:59 pm | |
| M. Warner Losh | Oct 3, 2004 6:38 pm | |
| Mark Murray | Oct 4, 2004 1:10 am | |
| Dmitry Karasik | Oct 4, 2004 3:15 am | |
| Dave Horsfall | Oct 4, 2004 3:27 am | |
| Giorgos Keramidas | Oct 4, 2004 3:49 am | |
| Stijn Hoop | Oct 4, 2004 4:52 am | |
| Ceri Davies | Oct 4, 2004 5:33 am | |
| Søren Schmidt | Oct 4, 2004 5:43 am | |
| Chris Howells | Oct 4, 2004 6:16 pm | |
| Chris Dillon | Oct 5, 2004 8:36 am | |
| Sam | Oct 5, 2004 9:03 am | |
| Giorgos Keramidas | Oct 5, 2004 5:12 pm | |
| Giorgos Keramidas | Oct 5, 2004 5:42 pm | |
| Matthew Dillon | Oct 5, 2004 6:30 pm | |
| Matthew Dillon | Oct 5, 2004 6:56 pm | |
| Matthew Dillon | Oct 5, 2004 11:39 pm | |
| Thomas Sparrevohn | Oct 6, 2004 12:49 pm | |
| Lyndon Nerenberg | Oct 28, 2004 5:31 am |
| Subject: | Protection from the dreaded "rm -fr /" | |
|---|---|---|
| From: | Giorgos Keramidas (kera...@FreeBSD.org) | |
| Date: | Oct 2, 2004 1:19:19 am | |
| List: | org.freebsd.freebsd-hackers | |
John Beck, who works for Sun, has posted an entry in his blog yesterday about "rm -fr /" protection, which I liked a lot: http://blogs.sun.com/roller/page/jbeck/20041001#rm_rf_protection
His idea was remarkably simple, so I went ahead and wrote this patch for rm(1) of FreeBSD:
%%% Index: rm.c =================================================================== RCS file: /home/ncvs/src/bin/rm/rm.c,v retrieving revision 1.47 diff -u -r1.47 rm.c --- rm.c 6 Apr 2004 20:06:50 -0000 1.47 +++ rm.c 2 Oct 2004 08:06:21 -0000 @@ -157,6 +157,7 @@ void rm_tree(char **argv) { + char **argv_tmp; FTS *fts; FTSENT *p; int needstat; @@ -164,6 +165,17 @@ int rval;
/* + * If one of the members of argv[] is the root directory abort the + * entire operation. + */ + argv_tmp = argv; + while (*argv_tmp != NULL) { + if (strcmp(*argv_tmp, "/") == 0) + errx(1, "rm of / is not allowed"); + argv_tmp++; + } + + /* * Remove a file hierarchy. If forcing removal (-f), or interactive * (-i) or can't ask anyway (stdin_ok), don't stat the file. */ %%%
To test it, I used a minimal chroot with /bin, /lib and /libexec copied over from my real / partition:
# mkdir -p /tmp/chroot/bin ; cp -Rp /lib /libexec /tmp/chroot # cp /bin/sh /bin/ls /tmp/chroot/bin # cp /a/freebsd/src/bin/rm/rm /tmp/chroot/bin # env PS1='chroot# ' chroot /tmp/chroot /bin/sh chroot# rm -fr / rm: recursive rm of / is not allowed chroot# exit #
It seems to work nicely here. I'm not sure if the overhead of traversing argv[] twice is a bug price to pay for the protection this adds, but if a lot of people like it I'll commit it when I get the approval of src-committers :-)
- Giorgos





