Dear diary, on Tue, Jan 25, 2005 at 10:10:39AM CET, I got a letter,
where Christoph Hellwig <[EMAIL PROTECTED]> told me, that...
> Could someone explain why hosts does thnings like:
> 
>       if((ino->i_sb->s_dev == ROOT_DEV) && (ino->i_uid == getuid()))
>               ino->i_uid = 0;
> 
> (in fs/hostfs/hostfs_kern.c:read_name())
> 
> and
> 
>       if(attr->ia_valid & ATTR_UID){
>               if((dentry->d_inode->i_sb->s_dev == ROOT_DEV) &&
>                  (attr->ia_uid == 0))
>                       attr->ia_uid = getuid();
>               attrs.ia_valid |= HOSTFS_ATTR_UID;
>               attrs.ia_uid = attr->ia_uid;
>       }
>       if(attr->ia_valid & ATTR_GID){
>               if((dentry->d_inode->i_sb->s_dev == ROOT_DEV) &&
>                  (attr->ia_gid == 0))
>                       attr->ia_gid = getuid();
>               attrs.ia_valid |= HOSTFS_ATTR_GID;
>               attrs.ia_gid = attr->ia_gid;
>       }
> 
> (hostfs_getattr)
> 
> A filesystems shouldn't have special casing for the rootfs, and
> chowning files from root to the current user sounds like an extremly
> bad idea to me aswell.
> 
> It's also the last thing preventing us from exporting ROOT_DEV

Hmm, I pretty much forgot it all, but it seems to do a trick that if you
run UML with a non-root UID (if that's actually possible), the files
owned by you on the host system are owned by root inside of the UML
(which does not seem to be so unreasonable, but should be probably
configurable if it's the case) - depends on what context getuid() runs
in, which I'm not sure of anymore neither.

The gid handling is clearly buggy. It should test that in read_name()
too and use getgid().

I don't know why it happens only on ROOT_DEV, perhaps some heuristic.
Anyway, this comes (almost) verbatim from the 2.4.19 version by Jeff
Dike, so he will hopefully come with a better explanation :-).

-- 
                                Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
98% of the time I am right. Why worry about the other 3%.
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to