[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kfm-devel
Subject:    Re: make_it_cool_branch: kdelibs/kio
From:       Stephan Kulow <coolo () kde ! org>
Date:       2000-01-28 10:40:17
[Download RAW message or body]

David Faure wrote:
> 
> > David misunderstood me :)
> :)
> 
> This starts to be a discussion, let's use mail :-)
> 
> > ... My concern was more that the fact we can list / doesn't mean we can
> >  remove it. So we shouldn't remove everything we could list without
> checking
> >  we can. But then the question arises how do we check we can remove it?
> I see. Hmmm.
> I guess we'll end up opening the sources of rm :-)
> 
> "rm -rf /" does not list everything recursively and then abort in the
> middle. I guess this is because it simply checks the permissions on whatever
> we're trying to remove (here "/") FIRST.
> 
> And if you 'rm -rf ~/tmp' which you own, and if in ~/tmp there is something
> you can't delete, it will start (no permissions problems on the target,
> ~/tmp),
> then remove everything else, and abort on that file you can't delete.
> 
> ==> We need to check we can remove the 'target', i.e. the URL(s) passed in
> del().
> But only the target, not the contained files.
> Of course, this applies to directories only. For files, we delete right away
> and
> get the error code of unlink anyway.
> 
> > But then the question arises how do we check we can remove it?
> I guess we could call rmdir(), and check the error code, even knowing it's
> not empty.
> ENOTEMPTY => we just have to delete what's inside first.
> EACCES => "Write access to the directory containing pathname was not allowed
> for the
>               process's effective uid, or one of the directories in
> pathname  did  not
>               allow search (execute) permission."
> Eh ! Doesn't this do the job for us ?
> Well, not over FTP of course.
> 
> Calling stat on the parent dir and checking the permissions would be a more
> general solution, but then it means checking user, group, other, suid bits,
> ...
> 
Another example: you call del on
file:/rootsfiles.tgz#tar:/tmp/mypornpic.jpg
You would have write access on the file, the /tmp dir in the tar, but
not on
the file containing the tar ... 
Please note that this problem isn't new and there was never a solution
for this
within kio. But with the new listRecursive approach, we run into new
problems
we should try to fix while fixing other problems ;)

So basicly we shouldn't do listRecursive as it comes, but check for move
and
del if we can also remove it while listing. This is more than
ignore_read_errors,
this is dont_ignore_remove_errors.

Greetings, Stephan

-- 
As long as Linux remains a religion of freeware fanatics,
Microsoft have nothing to worry about.  
                       By Michael Surkan, PC Week Online

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic