UN*X history

Sean picasso@madflower.com
Thu, 3 Aug 2000 14:52:32 -0400 (EDT)


While we are kind of on the subject..

UN*X
 
By Alan Filipski
 
The UN*X brand operating system was writting by two computer science
researchers in a closet in the attic of a famous research laboratory (The
Labs) in the late 1960s. The authors had complete freedom to design an
operating system according to their own wishes without management
constraints. This was because everyone at The Labs, including the
management, thought they were janitors who spent their time in the closet
wringing out mops or something.
 
The first version of the UN*X brand operating system was a game that
simulated the gravitational motion of all known planets and satellites of
our solar system. Soon such things as a file system and user procedures
were grafted onto it. It ran on a PDP-7 computer that someone had stored
in the closet and forgotten about.
 
Later the authors made the mistake of drawing attention to themselves by
asking the management for a larger computer. At this, the management took
the operating system and, supposing it to be something of use only to
hippies (or closet hippies), sent it University of California at Berkeley.
 
It may be coincidental, but at the about the same time cases of a peculiar
compulsive mental disorder known as Unirexia Nervosa were first noted in
San Francisco, Calif. area. The symptoms of this disorder are the
interjection of nonsense words such as grep, awk, runrun, and nohup by the
victim into his or her speech; the misuse of ordinary words such as cat
and lint; and the avoidance of the use of uppercase letters.
 
Advanced cases of Unirexia Nervosa have been found at many major
universities throughout the U.S., where youths with pasty complexions and
sunken eyes can be found late at night subsisting on diet pop, glaring
fanatically at CRT's, and mumbling about "one more bugs". Since for the
most part this malady has been confined to university students, it has not
cause great public alarm. But recently there have been reports of regular
people contracting the disease, even some who hold otherwise respectable
positions in industry. The mode of transmission of Unirexia Nervosa is not
known, but it is thought to have something to do with beards.                                      

Members of the UN*X community have developed a novel and effective means
of communication with each other. Suppose a user named Athol at Epizootic
Systems in Cupertino, Calif., wishes to send an electronic mail message to
his friend Elba at Perjorative Systems Inc. in Palo Alto, Calif. Although
their computers do not communicate directly, they message may be passed
via intermediate links. Athol would merely type:
 
mail ihnp4!allegra!ucbvax!seismo!decvax!cbosgd!ucbvax!pejor!elba
 
and then enter the text of his message. This electronic mail would appear
at Elba's terminal either within two days of the time it takes to
propagate a telephone signal 73 times between the East and West Coasts of
the U.S., whichever is greater.
 
Although many people think the word "UN*X" is an acronym (or even a
homonym), the word actually originated in the following manner. When
management in The Labs noticed the strange machine running in the closet,
they stopped the first technical-looking type they saw in the hall and
asked him what it was. As fate would have it, it was not a technical type
at all but a member of a lost Australian aboriginal tribe who had been
wandering the halls of The Lab for years without drawing attention. The
fellow did not understand English and believed they were asking him to
haul the computer away. He replied, "UN*X(tm)," which is aboriginal for
"Not my job, man." The rest is history.
 
The different versions of the UN*X brand operating system are numbered in
a logical sequence: 5, 6, 7, 2, 2.9, 3, 4.0, III, 4.1, V, 4.2, V.2, and
4.3.
 
The C programming language is descended from the languages B and BCPL
(short for Bucephalus, Alexander the Great's horse). It is a highly
structured language. The following structured program, for example, is
well-known to all C language programmers, and prints a well-known message
at the terminal
(try it!):                                                    

#define TWENTYNINE 29 int ll, L1, l0, h_1,q,h1,h; main(){
        for(putchar(putchar((h=7)*10+2)+TWENTYNINE);
                l0?putchar(l0):!h_1;
                putchar (ll),L1==2?ll=' ':0){
        L1++==0?(ll=l0=54<<1):
                ll=='l'&&L1<3?(ll+=1L|
                1L<<1L,l0=0)
        :L1==sizeof L1&&ll==' '
                ?(ll=19+h1):(q-=h1);
                L1==5?ll-=8:q&& &
        h_1;L1==sizeof ll+2?
                (ll+=3):1L;ll==(h<<4)+2
                &&L1!=6?(ll=ll-
        6):(h1=100L);L1!=1L<<3?q--
                :(h_1=ll=h1);
        } printf("%s\n",0);
}                                                                  

 
Note the absence of goto statements in the program. Also note how the
portability of the program is enhanced by judicious use of the C
preprocessor and the sizeof operator. The dereferenced null pointer at the
end is used to make sure the output is properly terminated.
 
The most commonly used UN*X interactive command language is known as the
Bourne shell. (This shell was recently completely rewritten and is now
available as the Bourne-again shell.) The shell provides a uniform syntax
by which the user can interact with the operating system kernel and
utility programs. The utility programs in turn accept a uniform syntax of
command line arguments and options. Typical examples of utilities are the
ar utility, which requires single-letter options that are lumped together
in a specified order with an introductory minus sign, before the other
arguments; and the find utility, which has multiletter options that cannot
be lumped together, each of which must be preceded by a minus sign and
which follow any other arguments.
                               
Besides being used interactively, the shell itself may be used as a
programming language. Although programs written in shell are slower than
equivalent programs written in C, they are shorter and easier to read and
debug. For example, to add 1 to a variable a in C one would have to write:
 
a = a + 1;
 
or:
 
a += 1;
 
or even:
 
a++;
 
In shell, one need only write:
 
a = `expr $a + 1`
 
where it is essential to have spaces around the + sign to use the $ sign
only before the righthand occurrence of the variable a, and to use the
backward quote character instead of the common single quote. When UN*X
brand operating system programmers want to develop an application quickly,
they often use the shell because of this convenient syntax.                 

 
Security is a very important issue in the UN*X brand operating system
world. The typical UN*X brand operating system source licensee is living
in a fool's paradise, little realizing that on the streets of every major
city wander broken hackers who would kill for access to kernel source
code. These people may be down on their luck, but they are not stupid. As
you read these words, there are people who but for lack of a quarter would
be whistling uucp protocols at 1200 baud to your modem from a downtown pay
phone.
 
Therefore, the prudent administrator should be aware of common techniques
used to breach UN*X brand operating system security. The most widely known
and practiced attack on the security of the UN*X brand operating system is
elegant in its simplicity. The perpetrator simply hangs around the system
console until the operator leaves to get a drink or go to the bathroom.
The intruder lunges for the console and types rm -rf / before anyone can
pry his or her hands of the keyboard. Amateur efforts are characterized by
typing in such things as ls or pwd. A skilled UN*X brand operating system
security expert would laugh at such attempts.               

 
The Trojan horse strategy is used in many attempts to defeat the security
of a UN*X brand operating system installation. The following scenario is
typical: The UN*X brand operating administrator arrives at work one
afternoon and finds a new terminal outside the system security area. Since
it is better than the current system console, he brings it in to the
computer. After a few minutes of use, hordes of cockroaches come pouring
out of the back of the terminal, driven out by the heat. The operator
jumps up to stamp them out and the intruder has his will with the system.
 
How can this sort of damage be prevented? The greatest weakness of the
UN*X brand operating system is the fact that the superuser root is so
powerful. Therefore, an important principle is simple to minimize the use
of root. An ingenious way of doing this is to first, without looking, set
the root password of the system to some randomly generated string of
character. Do not memorize or even look at this string. Now set up the
/etc/inittab file with the run level 2 flag that will cause it to demand
this unknown password whenever the system is booted. The system is now
secure. Log off.
 
What can a system administrator do if he suspects that some has broken
root? Simple. First, at the slightest suspicion that someone has
unauthorized access to the superuser capability, immediately seal off the
computer room, sound the fire alarm, release inert halon gas into the
atmosphere, and activate the automatic sprinkler system. Type "shutdown 0"
and cut all circuit breakers to the computer. Physically destroy all
magnetic media that have ever been mounted on or associated with the
insecure system in any way. Order a new distribution and reboot.
 
An administrator who is aware of these methods can maintain a sufficient
degree of paranoia for most applications.
 
It has often been said that if God had a beard, he would be a UN*X
programmer. While this may be an exaggeration, it is true that UN*X brand
operating system is well on its way to replacing the outmoded 10- and
15-year-old operating systems in common use today.