SQLServerCentral Article

UN*X History

,

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.


Return to The Lighter Side

Rate

You rated this post out of 5. Change rating

Share

Share

Rate

You rated this post out of 5. Change rating