* ROOT_DEV usage in hostfs
@ 2005-01-25 9:10 Christoph Hellwig
2005-01-25 9:55 ` Christoph Hellwig
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Christoph Hellwig @ 2005-01-25 9:10 UTC (permalink / raw)
To: jdike, pasky; +Cc: linux-fsdevel
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
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: ROOT_DEV usage in hostfs 2005-01-25 9:10 ROOT_DEV usage in hostfs Christoph Hellwig @ 2005-01-25 9:55 ` Christoph Hellwig 2005-01-25 10:11 ` Petr Baudis 2005-01-25 18:30 ` Jeff Dike 2 siblings, 0 replies; 4+ messages in thread From: Christoph Hellwig @ 2005-01-25 9:55 UTC (permalink / raw) To: Christoph Hellwig; +Cc: jdike, pasky, linux-fsdevel > It's also the last thing preventing us from exporting ROOT_DEV unexporting ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: ROOT_DEV usage in hostfs 2005-01-25 9:10 ROOT_DEV usage in hostfs Christoph Hellwig 2005-01-25 9:55 ` Christoph Hellwig @ 2005-01-25 10:11 ` Petr Baudis 2005-01-25 18:30 ` Jeff Dike 2 siblings, 0 replies; 4+ messages in thread From: Petr Baudis @ 2005-01-25 10:11 UTC (permalink / raw) To: Christoph Hellwig; +Cc: jdike, linux-fsdevel Dear diary, on Tue, Jan 25, 2005 at 10:10:39AM CET, I got a letter, where Christoph Hellwig <hch@lst.de> 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%. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: ROOT_DEV usage in hostfs 2005-01-25 9:10 ROOT_DEV usage in hostfs Christoph Hellwig 2005-01-25 9:55 ` Christoph Hellwig 2005-01-25 10:11 ` Petr Baudis @ 2005-01-25 18:30 ` Jeff Dike 2 siblings, 0 replies; 4+ messages in thread From: Jeff Dike @ 2005-01-25 18:30 UTC (permalink / raw) To: Christoph Hellwig; +Cc: pasky, linux-fsdevel hch@lst.de said: > Could someone explain why hosts does thnings like: > if((ino->i_sb->s_dev == ROOT_DEV) && (ino->i_uid == getuid())) > ino->i_uid = 0; Don't let that stop you unexporting ROOT_DEV. It was a nasty kludge to make booting from a host filesystem kind of work. It would flip permissions around in order to make everything in the root filesystem owned by root, when the real ownership on the host is some normal user. I have a better way of doing ownerships properly, so this was going to die anyway. Jeff ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-01-25 16:07 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-01-25 9:10 ROOT_DEV usage in hostfs Christoph Hellwig 2005-01-25 9:55 ` Christoph Hellwig 2005-01-25 10:11 ` Petr Baudis 2005-01-25 18:30 ` Jeff Dike
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).