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.