Subject: bug#15926: RFE: unlink command already uses 'unlink' call; make 'rm' use 'remove' call

From: Eric Blake <[email-masked]>
Date: Fri, 22 Nov 2013 19:32:36 -0700

On 11/22/2013 06:30 PM, Pádraig Brady wrote:
>> +
>> +# Pull rm(1) the teeth by intercepting the unlinkat() system call via the
> 
> s/the// ?

Pull the teeth from rm(1) by...

> 
> So the real case where this could not be handled (and what might
> actually catch users out) is when various synonyms of '/' are specified.
> i.e. // //. /./ /bin/..
> It would be good to have tests for those.

Careful on the // case, for systems like cygwin where // is a distinct
root from / (it has a separate inode, but should likewise be forbidden
to recursively delete from // - hmm, I don't know that I've ever been
brave enough to actually test whether --preserve-root preserves // on
cygwin).

Also, if a user does 'ln -s / root' and does 'rm -r root/.'
(technically, this should also be done for 'rm -r root/', but Linux
doesn't obey POSIX with regards to 'rm symlink-to-dir/').

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org