[TUHS] Additional groups and additional directory permissions
mckusick at mckusick.com
Sat Aug 10 14:02:51 AEST 2019
> Date: Fri, 2 Aug 2019 09:28:18 -0400
> From: Clem Cole <clemc at ccc.com>
> To: Aharon Robbins <arnold at skeeve.com>, Doug McIlroy <doug at cs.dartmouth.edu>
> Cc: The Eunuchs Hysterical Society <tuhs at tuhs.org>
> Subject: Re: [TUHS] Additional groups and additional directory permissions
> The best I can tell/remember is that groups went through 4 phases:
> 1.) No groups (earliest UNIX) [ I personally never used this except in the
> V0 retrocomputing]
> 2.) First group implementation (Thompson) [My first UNIX introduction was
> with this implementation]
> 3.) PWB 1.0 (Mashey version) [then saw this post PWB]
> 4.) BSD 4.2 (wnj version) [and lived this transistion]
> Each was a little different in semantics.
> As Doug mentioned, many sites (like Research) really did not need much and
> groups were really not used that widely. Thompson added something like
> the Project number of TOPS and some earlier systems. Truth is, it did not
> help much IMO. It was useful for grouping things like the binaries and
> keeping some more privileged programs from having to be setuid root.
> Mashey added features in PWB, primarily because of the RJE/Front end to the
> Mainframes and the need to have better protections/collections of certain
> items. But they still were much more like the DEC PPN, were you were
> running as a single group (i.e. the tuple UID/GID). This lasted a pretty
> long time, as it worked reasonably well for larger academic systems, where
> you had a user and were assigned a group, say for a course or class, you
> might be talking. If you looked at big 4.1 BSN Vaxen like at Purdue/Penn
> State, *etc.*, that how they were admin'd. But as Doug said, if you were
> still a small site, the use of groups was still pretty shallow.
> But, as part of the CSRG support for DARPA, there was a push from the
> community to have a list of groups that a user could be a part and you
> carried that list around in a more general manner. The big sites, in
> particular, were pushing for this because they were using groups as a major
> feature. wnj implemented same and it would go out widely in 4.2, although
> >>by memory<< that was in 4.1B or 4.1C first. It's possible Robert Elz
> may have brought that to Bill with his quota changes, but frankly I've
> forgotten. There was a lot of work being done to the FS at that point,
> much less Kirk's rewrite.
> But as UNIX went back to workstations, the need for a more general group
> system dropped away until the advent widely used distributed file systems
> like CMU's AFS and Sun's NFS. Then the concept of a user being in more
> than one group became much more de rigeur even on a small machine.
Late to answer...
As far as I remember, Clem's description is correct. The filesystem
itself stores only one owner and one group ID. When checking access
to the file, the file owner is checked to see if the user ID matches.
If so, then the owner permissions are applied. If not then the group
array associated with the user is used to decide if the group of the
file matches one of the groups of which the user is a member and if
so the group permissions apply. Otherwise the other permissions are
In BSD, the group assigned to the file is assigned from the group of
the directory in which it is created. The setgid flag can be set only
if that group is a member of the user's group array. The user can only
change the group ID to one that appears in their group array.
Until multiple group sets were added to System V, the group of the
file was taken from the gid assigned to the user at login.
More information about the TUHS