It definitely would have been useful to contrast with Plan9. For example, one of the problems of devfs, etc, is that the semantics of the file are defined by the external hierarchy. But with major-minor special files, the semantics are defined as attributes of the file's internal meta data. The point being, if something like devfs replaced device special files, you wouldn't be able to create a null device in a chroot jail or anywhere else (at least, not in an easy and portable manner, and not without special permissions, ignoring for the moment that chroot itself requires privilege).
Plan9 solved this my allowing users to freely mount sub-hierarchies wherever they wished, so that even if you couldn't create a null device file (e.g. `foo'), you could at least mount a device tree (e.g. `foo/null'). In Unix allowing users to freely alter the hierarchy isn't possible because of other built-in assumptions in the system which, if broken, would have undesirable security implications. This is why chroot and mount require root permissions, whereas in Plan9 AFAIK you don't need permissions to change your file tree--even the root--but only permissions to get a reference to a particular sub-tree (i.e. permission to get a descriptor to the server providing the tree).
Hacks like FUSE, while cool, are severely limited by various constraints in Unix.
Ghosts of Unix Past: a historic search for design patterns
Posted Oct 27, 2010 19:10 UTC (Wed) by bfields (subscriber, #19510)
[Link]
What happened to the effort to allow ordinary users to do bind mounts?
Ghosts of Unix Past: a historic search for design patterns
Posted Oct 28, 2010 18:03 UTC (Thu) by mszeredi (subscriber, #19041)
[Link]
There's at least one problem remaining: rename/unlink returns EBUSY for mountpoint regardless of which mnt_namespace the mount is in. It's solvable, e.g. by allowing unlink to detach these kinds of mounts, but I haven't gotten around to doing it yet.