atom feed82 messages in org.freebsd.freebsd-hackersProtection from the dreaded "rm -fr /"
FromSent OnAttachments
Giorgos KeramidasOct 2, 2004 1:19 am 
Edwin GroothuisOct 2, 2004 1:33 am 
Michael ReifenbergerOct 2, 2004 1:34 am 
Giorgos KeramidasOct 2, 2004 1:39 am 
Giorgos KeramidasOct 2, 2004 1:51 am 
Ryan SommersOct 2, 2004 1:52 am 
Giorgos KeramidasOct 2, 2004 1:53 am 
Giorgos KeramidasOct 2, 2004 2:06 am 
Max LaierOct 2, 2004 2:24 am 
Giorgos KeramidasOct 2, 2004 3:19 am 
Greg BlackOct 2, 2004 3:57 am 
Ceri DaviesOct 2, 2004 4:22 am 
Ceri DaviesOct 2, 2004 4:25 am 
Max LaierOct 2, 2004 4:51 am 
Peter JeremyOct 2, 2004 5:43 am 
Dimitry AndricOct 2, 2004 7:48 am 
Simon L. NielsenOct 2, 2004 8:03 am 
Sean FarleyOct 2, 2004 8:41 am 
SamOct 2, 2004 8:54 am 
Jacques A. VidrineOct 2, 2004 9:46 am 
Tillman HodgsonOct 2, 2004 9:51 am 
Lee HarrOct 2, 2004 9:53 am 
Tillman HodgsonOct 2, 2004 9:55 am 
Giorgos KeramidasOct 2, 2004 10:10 am 
Giorgos KeramidasOct 2, 2004 10:55 am 
Giorgos KeramidasOct 2, 2004 10:56 am 
Tillman HodgsonOct 2, 2004 11:09 am 
Doug RussellOct 2, 2004 11:37 am 
David SchultzOct 2, 2004 11:50 am 
David SchultzOct 2, 2004 12:01 pm 
Michael ReifenbergerOct 2, 2004 12:16 pm 
Doug RussellOct 2, 2004 12:18 pm 
Michael ReifenbergerOct 2, 2004 12:26 pm 
Dmitry FrolovOct 2, 2004 12:37 pm 
Doug RussellOct 2, 2004 12:48 pm 
David SchultzOct 2, 2004 1:11 pm 
Michael ReifenbergerOct 2, 2004 1:49 pm 
Tillman HodgsonOct 2, 2004 2:05 pm 
Garance A DrosihnOct 2, 2004 2:22 pm 
Ceri DaviesOct 2, 2004 3:00 pm 
sor...@cydem.orgOct 2, 2004 3:11 pm 
Giorgos KeramidasOct 2, 2004 4:28 pm 
Giorgos KeramidasOct 2, 2004 4:28 pm 
David SchultzOct 2, 2004 5:19 pm 
M. Warner LoshOct 2, 2004 6:26 pm 
M. Warner LoshOct 2, 2004 6:28 pm 
M. Warner LoshOct 2, 2004 6:29 pm 
Giorgos KeramidasOct 2, 2004 6:53 pm 
Thomas David RiversOct 2, 2004 6:53 pm 
M. Warner LoshOct 2, 2004 7:07 pm 
Doug RussellOct 2, 2004 7:11 pm 
Tillman HodgsonOct 2, 2004 8:09 pm 
Tillman HodgsonOct 2, 2004 8:11 pm 
David SchultzOct 2, 2004 11:31 pm 
Sam LawranceOct 3, 2004 12:35 am 
Chris HowellsOct 3, 2004 5:07 am 
Mike MeyerOct 3, 2004 5:07 am 
Mike MeyerOct 3, 2004 5:07 am 
M. Warner LoshOct 3, 2004 10:37 am 
Greg ShenautOct 3, 2004 11:14 am 
Dmitry MorozovskyOct 3, 2004 11:28 am 
Thomas SparrevohnOct 3, 2004 11:40 am 
Dag-Erling SmørgravOct 3, 2004 1:33 pm 
Roman NeuhauserOct 3, 2004 2:59 pm 
M. Warner LoshOct 3, 2004 6:38 pm 
Mark MurrayOct 4, 2004 1:10 am 
Dmitry KarasikOct 4, 2004 3:15 am 
Dave HorsfallOct 4, 2004 3:27 am 
Giorgos KeramidasOct 4, 2004 3:49 am 
Stijn HoopOct 4, 2004 4:52 am 
Ceri DaviesOct 4, 2004 5:33 am 
Søren SchmidtOct 4, 2004 5:43 am 
Chris HowellsOct 4, 2004 6:16 pm 
Chris DillonOct 5, 2004 8:36 am 
SamOct 5, 2004 9:03 am 
Giorgos KeramidasOct 5, 2004 5:12 pm 
Giorgos KeramidasOct 5, 2004 5:42 pm 
Matthew DillonOct 5, 2004 6:30 pm 
Matthew DillonOct 5, 2004 6:56 pm 
Matthew DillonOct 5, 2004 11:39 pm 
Thomas SparrevohnOct 6, 2004 12:49 pm 
Lyndon NerenbergOct 28, 2004 5:31 am 
Subject:Protection from the dreaded "rm -fr /"
From:Giorgos Keramidas (kera@freebsd.org)
Date:Oct 2, 2004 1:39:43 am
List:org.freebsd.freebsd-hackers

On 2004-10-02 11:19, Giorgos Keramidas <kera@FreeBSD.org> wrote:

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

Here's a simpler diff, which I wrote after I looked a bit in the while-loop I had and realized it was really an obfuscated for-loop:

%%% 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:28:36 -0000 @@ -157,6 +157,7 @@ void rm_tree(char **argv) { + char **argv_tmp; FTS *fts; FTSENT *p; int needstat; @@ -164,6 +165,14 @@ int rval;

/* + * If one of the members of argv[] is the root directory abort the + * entire operation. + */ + for (argv_tmp = argv; *argv_tmp != NULL; argv_tmp++) + if (strcmp(*argv_tmp, "/") == 0) + errx(1, "recursive rm of / is not allowed"); + + /* * Remove a file hierarchy. If forcing removal (-f), or interactive * (-i) or can't ask anyway (stdin_ok), don't stat the file. */ %%%