From: yee@dali.berkeley.edu (Peter E. Yee) To: hackers_guild@ucbvax.berkeley.edu Subject: Reprinted without permission (but worth it) Date: 26 Mar 86 10:00:06 PST (Wed)This month's issue of Computer Language magazine is great. They did an April Fool's issue with a lot of good material. For starters, the subscription card comes in all magazines and falls out when you open it reads:
THIS CARD IS A DAMNED NUISANCE!Here you are ready to curl up with COMPUTER LANGUAGE and this piece of junk falls in your lap! Your choices are few. You can waste your time and energy repeatedly trying to stick it back in the magazine. OR -- you can take the easier, more satisfying route -- mail this "damned nuisance" back to us!
Inside there is a disclaimer for everything imaginable, plus some injunctions about reading the magazine on the beach, subrenting it, lending it, etc. Our lawyer has EIGHT SETS OF HANDCUFFS AND A BIG CAN OF TEARGAS in his briefcase.
Articles include such gems as "Computing at Chaos Castle" by Jerry Richnelle, "My Life as a Forth Interpreter" by K., and "Fame and Lotus-cloning in Chicago" by Dr. Hunted S. Johnson.
Aside from the obvious interest in the centerfold (Sandi Pasquale 36K - 24K - 36K), there is an article on UN*X, which I have reproduced below without permission, spelling checking, or anything else that might have been useful but time consuming.
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.