You're confusing name space and semantics. It is indeed in the name space but the semantics of writing it is to change the state of the writer not everyone who can see the name space. Processes owned by different users can all share objects in the same name space. However reading or writing those objects can have different permissions and results for the different processes. If I where to unbind /dev, all processes in that name space would see that object disappear. The discontinuity/incongruity in Plan 9 is what an object can see about the process using it. Kernel objects (things implemented with #x for any x) can see the process and can adjust their behavior on its immediate state (this is especially true of #p). However anything that goes through 9P only sees the user's state by way of the messages sent to it. It can't tell anything about the particular process performing an action and can thus only adjust its semantics according to the user who actually bound the object into its name space (this action turns to an attach).