9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Martin C.Atkins <martin_ml@parvat.com>
To: Fans of the OS Plan 9 from Bell Labs <9fans@cse.psu.edu>
Subject: Re: [9fans] Acme mailreader - now: User mode filesystems in linux
Date: Fri, 17 Dec 2004 15:24:56 +0530	[thread overview]
Message-ID: <20041217152456.3f377069.martin_ml@parvat.com> (raw)
In-Reply-To: <20041217102526.0b64d965.martin_ml@parvat.com>

Of course, nothing I wrote in the previous message avoids (l)unix's
limitations regarding mount, etc. Nor does it allow users to write
their own fileservers (without opening up various security holes, and
having root access).

However, thinking over lunch, I realised that there is a way of doing
something quite nice (in the linux sense, if not the Plan 9 sense!) with
what we already have.

On login, each user starts a user-filesystem-daemon, which uses setuid
to create a /dev/cfsN, if necessary, opens it to start serving, and
mounts it on a conventional place: $HOME/mnt, say.

When the user runs a program that wants to serve a filesystem, it attaches to
the daemon, which creates $HOME/mnt/servicename, and forwards all
requests for this directory hierarchy to the program. Replies are
adjusted to be consistent with security - setuid bits removed, ownership
forced to the user, etc., and sent back to the kernel.
When the program terminates, the daemon cleans up, and removes servicename.

Advantages over just hacking mount to allow anyone to mount anything on $HOME/mnt:

1) We don't need a /dev/cfsN for every filesystem, just one for each
concurrent user. Also client fileserving programs don't have to
compete to allocate /dev/cfsN's - which would need some sort of
setuid - only the daemons do this.

2) The user-filesystem-daemon only has to run as root during initialisation,
everything else runs as the user.

3) The user-filesystem-daemon can enforce file ownership (as the user) in
the served directory hierarchy. It can also force off setuid bits, etc.
Furthermore, users can only attach their fileservers to their own daemons!
(A bit like per-process mount tables - of course, linux has this already, but
not in a very user-friendly form)

4) The user-filesystem-daemon can clean up when/if a fileserver crashes.

5) Knowledge of the Coda protocol could be limited to the daemon, and a
higher-level protocol used with the "real" fileservers. Thus we could move to
other kernel mechanisms (e.g. fuse) if/when they become available.

6) All user filesystems are under $HOME/mnt - symlinks could be used
from elsewhere. (or is this a disadvantage?)

Disadvantages:
1) greater overhead - each fileserving message has to make the extra hops
from daemon to fileserver program, and back.

2) Complexity?

3) Others...?


The same approach would probably also work (better, easier?) with
p9fs - but some of the advantages might already have been solved
there, in other ways.

What do people think?

Martin
-- 
Martin C. Atkins			martin_ml@parvat.com
Parvat Infotech Private Limited		http://www.parvat.com{/,/martin}


  reply	other threads:[~2004-12-17  9:54 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-15 15:34 [9fans] Acme mailreader jim
2004-12-15 15:40 ` gdiaz
2004-12-15 15:47   ` jim
2004-12-15 15:50     ` Joseph Stewart
2004-12-15 15:57       ` jim
2004-12-15 16:10       ` Russ Cox
2004-12-15 15:58     ` Charles Forsyth
2004-12-15 16:04       ` jim
2004-12-15 16:24         ` C H Forsyth
2004-12-15 16:31           ` jim
2004-12-15 17:07             ` Russ Cox
2004-12-15 17:30               ` jim
2004-12-15 18:33                 ` Russ Cox
2004-12-15 18:49                   ` jim
2004-12-15 18:36               ` Axel Belinfante
2004-12-15 18:47                 ` jim
2004-12-15 18:51                 ` rog
2004-12-15 18:48             ` Skip Tavakkolian
2004-12-15 16:05       ` rog
2004-12-15 16:07 ` rog
2004-12-15 16:09   ` jim
2004-12-16  0:24     ` geoff
2004-12-16  4:12       ` Ronald G. Minnich
2004-12-16  4:51         ` geoff
2004-12-16  9:25           ` jim
2004-12-16  5:13         ` Skip Tavakkolian
2004-12-16  5:17           ` geoff
2004-12-16  5:20             ` boyd, rounin
2004-12-16  5:34               ` boyd, rounin
2004-12-16  5:29             ` Skip Tavakkolian
2004-12-16 15:54             ` Ronald G. Minnich
2004-12-16 17:52               ` Skip Tavakkolian
2004-12-16 18:13               ` Dave Eckhardt
2004-12-16  5:23           ` Andy Newman
2004-12-16 15:52           ` Ronald G. Minnich
2004-12-16  8:17       ` Martin C.Atkins
2004-12-16  9:35         ` jim
2004-12-16 15:19         ` rog
2004-12-16 15:26           ` jim
2004-12-16  9:30       ` jim
2004-12-16 15:08       ` David Leimbach
2004-12-16 23:22         ` geoff
2004-12-16 23:25           ` boyd, rounin
2004-12-16 23:38           ` Ronald G. Minnich
2004-12-17  1:31             ` Skip Tavakkolian
2004-12-17 15:50               ` Ronald G. Minnich
2004-12-17  4:55           ` [9fans] Acme mailreader - now: User mode filesystems in linux Martin C.Atkins
2004-12-17  9:54             ` Martin C.Atkins [this message]
2004-12-17 10:22               ` geoff
2004-12-17 10:45                 ` Martin C.Atkins
2004-12-17 11:42                 ` Andy Newman
2004-12-17 15:57                   ` Ronald G. Minnich
2004-12-17 12:30                 ` Latchesar Ionkov
2004-12-17 15:55                 ` Ronald G. Minnich
2004-12-17 13:41               ` Derek Fawcus
2004-12-17 14:42               ` Karl Magdsick
2004-12-17 14:56                 ` Russ Cox
2004-12-18  0:13               ` Tim Newsham
2004-12-18  0:13                 ` boyd, rounin
2004-12-18  3:49                   ` Ronald G. Minnich
2004-12-23 16:04                     ` boyd, rounin
2004-12-17 15:44             ` Ronald G. Minnich
2004-12-18 12:35               ` Martin C.Atkins
2004-12-17 18:52           ` [9fans] Acme mailreader David Leimbach
2004-12-17 23:20             ` Jack Johnson
2004-12-18  1:00               ` David Leimbach
2004-12-15 16:09 ` Russ Cox
2004-12-15 16:16   ` jim
2004-12-15 16:22   ` boyd, rounin
2004-12-17 15:31 [9fans] Acme mailreader - now: User mode filesystems in linux bmaroshe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20041217152456.3f377069.martin_ml@parvat.com \
    --to=martin_ml@parvat.com \
    --cc=9fans@cse.psu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).