[TUHS] History of chown semantics

Jeremy C. Reed reed at reedmedia.net
Fri Jan 10 03:01:01 AEST 2014


I am also interested in this (and had researched it a little for my book 
about history of Berkeley Unix).

A few years ago, Thompson had told me that while at Berkeley (on a 
sabbatical), he did a modification at Berkeley to put in disk space 
quotas to prevent runaways. (This "Berkeley" modification is also 
mentioned in the pascal docs, see 
http://minnie.tuhs.org/cgi-bin/utree.pl?file=2BSD/doc/pascal/puman3.n ) 
I thought it was as a side-effect of this that users couldn't chown 
files to others (since can't cause quota problems for others). But now I 
see that already existed:

http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6/usr/man/man8/chown.8 
from 1975 mentions "Only the super-user is allowed to change the owner 
of a file, in order to simplify as yet unimplemented accounting 
procedures."

But it appears that some Berkeley systems did have a concept of some 
non-root users chowning files. Apparently there was a Berkeley Fascist 
File System where only group masters were able to chown files owned by 
members of a group. I also read there was a concept of "class users" 
(uid < 0) who could not access others files regardless of open 
permissions. For references see
http://www.dnull.com/bsd/oldnews/bsdnew20597.html
https://groups.google.com/forum/#!original/net.unix-wizards/RasSNg_DNHM/2Ty6wyObAFQJ
https://groups.google.com/forum/#!original/comp.unix.questions/I1nkZGl8Hl0/PYkaPZtvaeEJ
(Ed Gould from Berkeley also mentioned it to me.)

http://minnie.tuhs.org/cgi-bin/utree.pl?file=2BSD/upgrade/src/last.c 
mentions "non-class users".
http://minnie.tuhs.org/cgi-bin/utree.pl?file=1BSD/man6/dates.6 manual 
mentions "class master accounts".
http://minnie.tuhs.org/cgi-bin/utree.pl?file=1BSD/man6/whoison.6 appears 
to define "class" and winfo database (which is not in 2BSD).

http://minnie.tuhs.org/cgi-bin/utree.pl?file=1BSD/s6/chownall.c
has:
if (chgusr && !chggrp && source.uid == 0)
	panic("owner of \"%s\" is uid 0 in his group !?!", spth);
else if (!chgusr && chggrp && source.uid != 0)
	panic("owner of \"%s\" is not uid 0 of his group !?!", spth);
http://minnie.tuhs.org/cgi-bin/utree.pl?file=1BSD/man6/chownall.6
also mentions the "user number 0 in his group." 

I am not sure what this concept of uid 0 "of a group" means. The way it 
is all worded I don't think it is superuser uid 0. I think "group 
master" is the same as "class master" and same as "uid 0 of a group".  
Can anyone explain this?  (I can't find this concept in 2BSD nor 3BSD.)

Maybe this too much of a tangent, but seems to be about an old example 
of users giving away files.



More information about the TUHS mailing list