Interesting points, thanks!

Since shred cannot do anything useful with a symbolic link there are
only two (no, three) possible courses of action:

1. Dereference the link; shred the thing it points to.

2. Unlink the symbolic link

3. Refuse to do anything

At the moment then, shred does (1).  shred -u shreds the file and then
truncates it.   The -f option is not needed.

I think option (2) is inconsistent with the other things that shred
does; it scrambles things but (by default) doesn't delete them.

The principle of operation of shred(1) is that it is not reversible.
I always look extra carefully at stuff I'm putting in the shredder, to
make sure that really nobody needs it.    It might be reasonable to
require shred to refuse to do anything with a symbolic link unless the
-f option is given.  The rationale for this would essentially be that
the cost of a mistake on the part of the user is huge, and (so the
argument would go) this potentially changes the balance between "trust
the user" and "protect the user".  (Being Unix-y, coreutils goes in
mainly for "trust the user").

So interpreting your point a bit freely, I guess you'd prefer this:

shred symlink: yields an error message; nothing is done

shred -u symlink: likewise

shred -f symlink: shreds the file the symlink points to

shred -u -f symlink: shreds the file the symlink points to, truncates
the file, but leaves the symlink alone (this is the current behaviour
we see without options)


This change is not by any means obvious; for example, it removes the
current protection that you get in this case:

~/tmp$ rm -f foo bar
~/tmp$ echo hello > foo
~/tmp$ ln -s foo bar
~/tmp$ chmod 400 foo
~/tmp$ ls -l foo bar
lrwxrwxrwx 1 james james 3 2008-09-20 15:25 bar -> foo
-r-------- 1 james james 6 2008-09-20 15:25 foo
~/tmp$ shred bar
shred: bar: failed to open for writing: Permission denied

... if we are using -f to tell shred to follow the symbolic link,
there is no extra option needed for "yes, really shred a read-only
file".

Personally, I think that the loss of this last protection is worse
than the protective effect of not following symbolic links by default.
 So if these are the only possible options, I would prefer to leave
things as they are.

An alternative would be to add -P and -L options, but the current
default is like -L, so this change also would not be without problems.

Thanks,
James.


_______________________________________________
Bug-coreutils mailing list
Bug-coreutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-coreutils

Reply via email to