* 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).