UN*X History
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.