Antecedentes de UNIX

9
 El entorno de programaci ó n UNIX  de Brian W. Kernighan y Rob Pike. Extracto del Prefacio El sistema operativo UNIX se inici ó en una DEC PDP-7 desechada, en los Laboratorios Bell durante 1969. Ken Thompson, con ideas y el apoyo de Rudd Canaday, Doug McIlroy, Joe Ossanna y Dennis Ritchie, escribió un sistema de tiempo compartido y de uso general lo bastante adecuado y c ómodo como para atraer a usuarios entusiastas y con suficiente crdibilidad para justificar la adquisici ón de una máquina más grande: una PDP-11-20. Uno de los primeros usuarios fue Ritchie, quien ayudo a trasladar el sistema a la PDP-11 en 1970. Ritchie tambi én diseñó y escribió un compilador para el lenguaje de programaci ón C. En 1973, Ritchie y Thompson reescribieron el n úcleo (Kernel) de UNIX en C, rompiendo así  con la tradición de que el software de sistemas est á escrito en lenguaje ensamblador. Con esa reescritura, el sistema adquiri ó esencialmente la forma en que lo conocemos hoy. Hacia 1974 fue presentado en las universidades « con fines educacionales » y al cabo de pocos a ños estaba ya disponible para uso comercial. En ese tiempo, los sistemas UNIX prosperaron en los Laboratorios Bell y de all í  se difundieron a laboratorios, a proyecto de desarrollo de software, a centros de procesamientos de palabras y a sistemas de apoyo de operaciones en las compa ñí as de teléfonos de los Estados Unidos. Desde entonces, se han utilizado en todo el mundo y se han instalado en miles de sistemas, desde micro hasta macrocomputadoras. A que se debe tal éxito del sistema operativo UNIX? Podemos distinguir varias razones. Primero, est á escrito en C y es port átil. Segundo, el código fuente est á disponible y escrito en un lenguaje de alto nivel, lo cuál lo hace f ácil de adaptar a exigencias particulares. Por último, y esto es lo más importante, es un buen sistema operativo, especialmente para los programadores. Su ambiente de programaci ón es de extraordinaria riqueza y productividad. Aun cuando el sistema operativo UNIX presenta varios programas y m étodos innovadores, su eficacia no se debe a un programa o idea en particular, sino a su enfoque de programaci ón, una filosof í a de cómo utilizar la computadora. Aunque esa filosof í a no puede describirse en una sola frase, se basa en la convicción de que la potencia de un sistema depende m ás de las relaciones entre los programas que de los programas propiamente dichos. Muchos programas de UNIX hacen aisladamente tareas triviales, pero al combinarse con otros se convierten en herramientas generales y útiles. La Historia de Linux Versión 2.2.0 por Ragib Hasan Departamento de Ciencias de la Computaci ón Universidad de Illinois en Urbana-Champaign Traducci ón: Hugo Jiménez Pérez

Transcript of Antecedentes de UNIX

Page 1: Antecedentes de UNIX

5/10/2018 Antecedentes de UNIX - slidepdf.com

http://slidepdf.com/reader/full/antecedentes-de-unix 1/9

El entorno de programaci ó n UNIX  

de Brian W. Kernighan y Rob Pike.

Extracto del Prefacio

El sistema operativo UNIX se inició en una DEC PDP 7 desechada, en los Laboratorios Bell durante1969. Ken Thompson, con ideas y el apoyo de Rudd Canaday, Doug McIlroy, Joe Ossanna y Dennis

Ritchie, escribió un sistema de tiempo compartido y de uso general lo bastante adecuado y cómodo

como para atraer a usuarios entusiastas y con suficiente crdibilidad para justificar la adquisición de una

máquina más grande: una PDP 11 20. Uno de los primeros usuarios fue Ritchie, quien ayudo a trasladar

el sistema a la PDP 11 en 1970. Ritchie tambi én diseñó y escribió un compilador para el lenguaje de

programación C. En 1973, Ritchie y Thompson reescribieron el núcleo (Kernel) de UNIX en C,

rompiendo así con la tradición de que el software de sistemas está escrito en lenguaje ensamblador. Con

esa reescritura, el sistema adquirió esencialmente la forma en que lo conocemos hoy.

Hacia 1974 fue presentado en las universidades « con fines educacionales » y al cabo de pocos años

estaba ya disponible para uso comercial. En ese tiempo, los sistemas UNIX prosperaron en losLaboratorios Bell y de allí se difundieron a laboratorios, a proyecto de desarrollo de software, a centros

de procesamientos de palabras y a sistemas de apoyo de operaciones en las compañí as de teléfonos de

los Estados Unidos. Desde entonces, se han utilizado en todo el mundo y se han instalado en miles de

sistemas, desde micro hasta macrocomputadoras.

A que se debe tal éxito del sistema operativo UNIX? Podemos distinguir varias razones. Primero, está 

escrito en C y es portátil. Segundo, el código fuente está disponible y escrito en un lenguaje de alto

nivel, lo cuál lo hace f ácil de adaptar a exigencias particulares. Por último, y esto es lo más importante,

es un buen sistema operativo, especialmente para los programadores. Su ambiente de programación es

de extraordinaria riqueza y productividad.

Aun cuando el sistema operativo UNIX presenta varios programas y métodos innovadores, su eficaciano se debe a un programa o idea en particular, sino a su enfoque de programación, una filosof í a de

cómo utilizar la computadora. Aunque esa filosof í a no puede describirse en una sola frase, se basa en la

convicción de que la potencia de un sistema depende más de las relaciones entre los programas que de

los programas propiamente dichos. Muchos programas de UNIX hacen aisladamente tareas triviales,

pero al combinarse con otros se convierten en herramientas generales y útiles.

La Historia de Linux

Versión 2.2.0 por Ragib HasanDepartamento de Ciencias de la ComputaciónUniversidad de Illinois en Urbana Champaign

Traducción: Hugo Jiménez Pérez

Page 2: Antecedentes de UNIX

5/10/2018 Antecedentes de UNIX - slidepdf.com

http://slidepdf.com/reader/full/antecedentes-de-unix 2/9

El Inicio.

Era 1991, y la despiadada agonía de la guerra fría estaba llegando gradualmente a su fín.Había un aire de paz y tranquilidad que prevalecía en el horizonte. En el campo de la

computación un gran futuro parecía que iba a caer, tal como el hardware poderoso empujabalos límites de las computadoras más allá de lo que cualquiera esperaba.

Pero todavía faltaba algo.

Y no era otro cosa que otro sistema operativo, donde un gran vacío pareció haber aparecido.

Por un lado, DOS tenía todavía el reinado supremo en ese vasto imperio de lascomputadoras personales. Comprado por Bill Gates de un hacker de Seattle por $50,000, el

desnudo sistema operativo había anidado en cada rincón del mundo en virtud de unaestrategia comercial adecuada. Los usuarios de PCs no tenían otra opción. Las Macs de

Apple eran mejores, pero con precios astronómicos que nadie podía pagar, permanecieron

como un horizonte fuera del alcance de millones.

El otro campo dedicado a la computación era el mundo de UNIX (UnixWorld). Pero UNIX ensí era mucho más caro. En la búsqueda de gran dinero, los vendedores de UNIX tazaron sus

sistemas lo suficientemente altos como para asegurar que los usuarios de los pequeños PCsse mantuvieran al margen. El código fuente de UNIX, una vez llevado a las universidades por

cortesía de los Laboratorios Bell, eran guardados cautelosamente y no publicados.Adicionalmente a la frustración de los usuarios de PCs de todo el mundo, los grandes

  jugadores en el mercado de software fallaron en proporcionar una solución eficiente a esteproblema.

Una posible solució

n se percibí

a en forma de MINIX. Este sistema fue escrito completamentepor Andrew S. Tanenbaum, un profesor alemán nacido en los Estados Unidos que queríaenseñar a sus alumnos l trabajo interno de un sistema operativo real. Este fue diseñado paraejecutarse en los micro procesadores Intel 8086 que habían inundado el mercado.

Como un sistema operativo, MINIX no era espectacular, pero tenía la ventaja de tener elcódigo fuente disponible. Cualquiera que tuviera el libro 'Operating Systems: Design and

Implementation' de Tanenbaum podía tener las 12,000 líneas de código, escritas en C y enlenguaje ensamblador. Por primera vez, un aspirante a programador o un hacker pod ía leer el

código fuente del sistema operativo, que por ese tiempo, los vendedores de software habíanguardado escrupulosamente. Un brillante autor, Tanenbaum, cautivo a las mentes más

brillantes de las ciencias de la computació

n con la elaborada e inmaculadamente vívidadiscusión del arte de crear un sistema operativo funcional. Estudiantes de las Ciencias de la

Computación de todo el mundo estudiaron esmeradamente el libro, leyendo a través delcódigo pra entender el sistema que se ejecutaba en sus computadoras.

Y uno de ellos era Linus Torvalds.

Page 3: Antecedentes de UNIX

5/10/2018 Antecedentes de UNIX - slidepdf.com

http://slidepdf.com/reader/full/antecedentes-de-unix 3/9

Un nuevo bebe en el horizonte 

En 1991, Linus Benedict Torvalds era un estudiante de segundo año de Ciencias de laComputación en la Universidad de Helsinki y un hacker autodidacta. El joven finlandés de 21años, pelirojo y de hablar suave adoraba pensar en la potencia de las computadoras y los

límites a los cuales el sistema las puede llevar. Pero todo lo que faltaba era un sistema

operativo que podiera alcanzar las demandas de los profesionales. MINIX era bueno, perotodavía era un sistema operativo para estudiantes, diseñado como una herramienta de

enseñanza en lugar de una potente herramienta industrial.

Durante ese tiempo, los programadores de todo el mundo estaban inspirados por el proyectoGNU de Richard Stallman, un movimiento de software que proporcionaba software libre y decalidad. Aclamado como un héroe en el reino del cómputo, Stallman inició su exitosa carrera

en el famoso Laboratorio de Inteligencia Artificial del MIT, y durante mediados a finales de lossetentas creó el editor EMACS. A principios de los ochentas, las compañías de software

comercial se llevaron a muchos de los más brillantes programadores de los laboratorios deInteligencia Artificial, y negociaron severos y no reveladores acuerdos para proteger sus

secretos. Pero Stallman tenía una visión diferente. Su idea era que a diferencia de otrosproductos, el software debería ser libre de las restricciones que iban en contra de los

derechos de autor o de la modificación con el fin de hacer mejores y más eficientesprogramas de computadora. Con su famoso manifiesto de 1983 que declaró los principios del

proyecto GNU, inició un movimiento para crear y distribuir software que transmitiera sufilosofía (Incidentalmente, el nombre de GNU es un acrónimo recursivo que enuncia 'GNU is

Not UNIX'). Pero para realizar este sueño de crear finalmente un sistema operativo libre elnecesitaba crear primero las herramientas. Así que iniciando en 1984, Stallman empezó aescribir el compilador GCC (GNU C Compiler), una asombrosa hazaña para un soloprogramador. Con su legendaria hechicería (wizardry: que proviene de un juego de

mazmorras y calabozos popular en los 80s) técnica el solo clasificó grupos enteros deprogramadores de los vendedores de software comercial en crear GCC, considerado como

uno de los más eficientes y robustos compiladores jamás creado.

En 1991, El proyecto GNU había creado muchísimas herramientas. El esperado compilador

de C de GNU estaba disponible por entonces, pero todavía no tenía un sistema operativo.Aun MINIX tenía licencia. (Más tarde, en abril del 2000, Tanenbaum liberó MINIX bajo la

licencia BSD.) El trabajo se dirigió hacia el kernel de GNU, llamado HURD, pero no seesperaba que fuera terminado sino pasado varios años.

Eso era mucho retraso para Linus.

El 25 de agosto de 1991 un histórico mensaje fue enviado al grupo de noticias de MINIX por

Linus.

From: [email protected] (Linus Benedict Torvalds) Newsgroups: comp.os.minix

Subject: What would you like to see most in minix? Summary: small poll for my new

operating system Message ID: <[email protected]> Date: 25

Aug 91 20:57:08 GMT Organization: University of Helsinki

Page 4: Antecedentes de UNIX

5/10/2018 Antecedentes de UNIX - slidepdf.com

http://slidepdf.com/reader/full/antecedentes-de-unix 4/9

Hello everybody out there using minix I'm doing a (free) operating system (just a hobby,

won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since

april, and is starting to get ready.I'd like any feedback on things people like/dislike in minix,

as my OS resembles it somewhat (same physical layout of the file system(due to practical

reasons) among other things). I've currently ported bash(1.08) and gcc(1.40),and things seem

to work.This implies that I'll get something practical within a few months, andI'd like to

know what features most people would want. Any suggestions are welcome, but I won't

promise I'll implement them : ) Linus ([email protected]) PS. Yes it's free of anyminix code, and it has a multi threaded fs. It is NOT protable (uses 386 task switching etc),

and it probably never will support anything other than AT harddisks, as that's all I have : (.

Como es aparente del mensaje, el mismo Linus no creía que su creación fuera a ser losuficientemente grande como para cambiar el cómputo para siempre. La versión 0.01 deLinux fue liberada a mediados de septiembre del mismo año y fue distribuida en internet. El

entusiasmo se acumuló alrededor de este nuevo 'chico del pueblo', y el código fuedescargado, probado, corregido y reenviado a Linus. La versión 0.02 llegó el 5 de octubre

 junto con la famosa declaración de Linus:

From: [email protected] (Linus Benedict Torvalds) Newsgroups: comp.os.minix

Subject: Free minix like kernel sources for 386 AT Message ID:

<[email protected]> Date: 5 Oct 91 05:41:06 GMT Organization:

University of Helsinki Do you pine for the nice days of minix 1.1, when men were men and

wrote their own device drivers? Are you without a nice project and just dying to cut your

teeth on a OS you can try to modify for your needs? Are you finding it frustrating when

everything works on minix? No more all nighters to get a nifty program working? Then this

post might be just for you : ) As I mentioned a month(?)ago, I'm working on a free version

of a minix lookalike for AT 386 computers. It has finally reached the stage where it's even

usable (though may not be depending on what you want), and I am willing to put out the

sources for wider distribution. It is just version 0.02 (+1 (very small) patch already), but I've

successfully run bash/gcc/gnu make/gnu sed/compress etc under it. Sources for this pet

project of mine can be found at nic.funet.fi (128.214.6.100) in the directory /pub/OS/Linux.

The directory also contains some README file and a couple of binaries to work underlinux (bash, update and gcc, what more can you ask for : ). Full kernel source is provided, as

no minix code has been used. Library sources are only partially free, so that cannot be

distributed currently. The system is able to compile "as is" and has been known to work.

Heh. Sources to the binaries (bash and gcc) can be found at the same place in /pub/gnu.

La versión 0.03 de Linux arribó en pocas semanas. Para diciembre ya se tenía la versión

0.10. Linux todavía era un poco más que un esqueleto. Tenía soporte únicamente para discosduros de AT, no tenía login (cargaba directamente al BASH). La versión 0.11 era mucho

mejor, con soporte para teclados multilenguajes, controladores de diskettes, soporte paraVGA, EGA, Hercules, etc. Los números de versión fueron directamente de 0.12 a 0.95 y 0.96

y así sucesivamente. Pronto el código se distribuyó al mundo entero mediante los sitios de ftp

en Finlandia y otras partes.

Confrontaci ó n y Desarrollo 

Pronto, Linus tuvo una onfrontación con nadie más que Andrew Tanenbaum, el gran profesor

que escribiera MINIX. En un mensaje a Linus, Tanenbaum comentó:

"I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error.

Page 5: Antecedentes de UNIX

5/10/2018 Antecedentes de UNIX - slidepdf.com

http://slidepdf.com/reader/full/antecedentes-de-unix 5/9

Be thankful you are not my student. You would not get a high grade for such a design : )"

(Andrew Tanenbaum to Linus Torvalds)

Linus admitió posteriormente que esto era lo peor de su desarrollo de Linux. Tanenbaum eraverdaderamente el famoso profesor, y nada que el dijera era cuestionable. Pero estaba

equivocado con respecto a Linux, para Linus era un chico terco que no admitía derrotas.

Tanenbaum también recalcó que: 'Linux era obsoleto'.

Ahora tocaba el turno a la nueva generación de Linux. Respaldado por la fuerte comunidadde Linux, Linus respondió a Tanenbaum lo que parecía ser más conveniente:

Your job is being a professor and researcher: That's one hell of a good excuse for some of 

the brain damages of minix. (Linus Torvalds to Andrew Tanenbaum)

Y el trabajo continuó. Pronto más de un ciento de personas se unió al campamento de Linux.Después eran miles, y después eran cientos de miles. Esto ya no era un juguete para los

hackers. Respaldado por una plétora de programas provenientes del proyecto GNU, Linuxestaba listo para el espectáculo. Se le dio la licencia de GNU General Public License, yentonces se aseguró que el código fuente sería libre para todo mundo para copiar, estudiar y

modificar. Los estudiantes y los programadores de computadoras lo obtuvieron.Pronto, los vendedores comerciales también se integraron. Linux en sí era y es libre. Lo quehicieron los vendedores fue compilar diversos paquetes de software y lo reunieron en formatodistribuible, en una forma más adecuada parecida a los otros sistemas operativos con los quela gente estaba familiarizada. RedHat, Caldera y otras compañías obtuvieron buenas

respuestas en el mundo entero. Mientras que éstas eran aventuras comerciales,programadores de computadoras dedicados crearon su propia distribución respaldada por

voluntarios, el afamado Debian. Con las nuevas interfaces gráficas de usuario (GUI, comoTWM, X Window System, KDE, GNOME) las distribuciones e Linux se volvieron muy

populares.

Mientras tanto, algunas cosas asombrosas sucedieron con Linux. Además de las PC, Linuxfue llevado a muchas diferentes plataformas. Linux fue modificado para ejecutarse en lasPalm Pilot de 3 Com. La tecnolog ía de clusters permitió que un gran número de

computadoras se combinaran en una sola entidad de cómputo, una computadora en paralelo.En abril de 1996, investigadores del Laboratorio Nacional de Los Alamos utilizó Linux para

ejecutar 68 PCs como una sola computadora de proceso en paralelo para simular ondas dechoque atómicas. Pero a diferencia de otras supercomputadoras que costaban una fortuna,

esta en su lugar era muy barata. La supercomputadora 'casera' costó sólo $150,000,incluyendo el trabajo (la conexión de las 68 PCs mediante cables), casi una décima parte de

una computadora comercial de las mismas características. Alcanz una velocidad pico de 19

billones de cálculos por segundo, convirtiéndola en la 315ava supercomputadora máspoderosa del mundo. Y además era robusta también. Tres meses más tarde no se habíareiniciado una sola vez.

Lo mejor de Linux hoy en día es la cantidad de seguidores que liderea. Cada vez que una

pieza de hardware aparece, el kernel de Linux es modificado para aprovechar al máximodicha pieza. Por ejemplo, algunas semanas después de la presentación del microprocesadorIntel Xenon ® , el kernel de Linux fue modificado y estaba listo para usarlo. También ha sido

adaptado para usarse en procesadores Alpha, Mac, PowerPC y aun en palmtops, una proeza

Page 6: Antecedentes de UNIX

5/10/2018 Antecedentes de UNIX - slidepdf.com

http://slidepdf.com/reader/full/antecedentes-de-unix 6/9

que difícilmente puede ser igualada por cualquier otro sistema operativo. Y continua su viajeen el nuevo milenio, con el mismo entusiasmo que se inició un buen día de 1991.

Mientras tanto Linus sigue siendo un hombre sencillo. A diferencia de Bill Gates, él no esmillonario. Terminó sus estudios y se mudó a los Estados Unidos e inició un trabajo en

Transmeta Corporation. Después de liderar una investigación secreta y de desarrollar elproyecto, Transmeta lanzó el procesador Crusoe ® . Linus fue un miembro activo del equipo

de investigación. Recientemente desposó a Tove, y es el orgulloso padre de una chica,Patricia Miranda Torvalds. Pero el sigue siendo el programador más famoso y favorito del

mundo a la fecha. Idolatrado por la comunidad computacional del mundo entero, Linus es pormucho el más grande programador en este planeta.

Inicio de sesi ó n y algunos comandos b á sicos 

login:

Variables de ambiente

$ ls$ cd

$ cat

$ more

$ less

$ zless

$ w

$ touch

$ mkdir

$ od

$ ddDónde obtener información. Las páginas del manual, Info, apropos.

Redireccionamiento de Entrada Salida 

La verdadera filosof í a de UNIX

> < >> << |

Algunos filtros para verificar$ grep

$ sort

$ uniq

$ cut

$ awk

Sistemas operativos milti usuario, servidores y estaciones de trabajo.

Procesos, los comandos

ps

Page 7: Antecedentes de UNIX

5/10/2018 Antecedentes de UNIX - slidepdf.com

http://slidepdf.com/reader/full/antecedentes-de-unix 7/9

kill

jobs

fg

bg

pstree

lsof

nohup

at

nice

Generalidades de la configuraci ó n y administraci ó n de redes.

TCP/IP

Redes, sistema DNS, parámetros de red, Máscaras de red, subredes y todo esoArchivos/etc/init.d/network

/etc/network/interfaces

/etc/resolv.conf

/etc/hosts

ifconfig

ifup

ifdown

route

nmap

Tips b á sicos de seguridad en redes y en servidores.

Particiones y montaje. Primera regla de seguridad.

/dev/hda1 on /boot type ext3 (ro,noexec,nosuid,nodev,noatime)

/dev/hda3 on /backup type fuseblk

(rw,noexec,nosuid,nodev,allow_other,blksize=4096)

/dev/hda4 on /win type fuseblk

(rw,noexec,nosuid,nodev,allow_other,blksize=4096)

/dev/hda5 on / type ext3 (rw,errors=remount ro)/dev/hda6 on /root type ext3 (rw)

/dev/hda7 on /usr type ext3 (ro,nodev,noatime)

/dev/hda9 on /var type ext3 (rw,nosuid,nodev)

/dev/hda11 on /home type ext3 (rw,noexec,nosuid,nodev)

/dev/hda10 on /tmp type ext3 (rw,noexec,nosuid,nodev,noatime)

cerrar puertos y colocar iptables e ippl.

Page 8: Antecedentes de UNIX

5/10/2018 Antecedentes de UNIX - slidepdf.com

http://slidepdf.com/reader/full/antecedentes-de-unix 8/9

Cuidar el sistema de archivos

Nombres rarostouch ./ foo

rm foo

Permisos de archivos

SUID 4xxx

SGID 2xxx

adBit 1xxx para directorios

Nunca se debe ejecutar un programa para 'saber que hace', de hecho, un buen administrador debe

verificar todos y cada unos de los programas y archivos que componen una pieza de software. Por eso

es importante que el administrador también sea un buen programador. Esta es una de las grandes

diferencias entre Windows y UNIX. También se debe observar que en UNIX, uno puede compilar todos

y cada uno de los paquetes que existen en GNU.

El siguiente es un guión de comandos que puede robarse una sesión de SHELL con permisos SUID

#!/bin/bash

# Guión de comandos de BASH para robarse un BASH con SUID de root

#

BIN=”/home/yo/bin”

mkdir p $BIN

cd $BIN

cp /bin/bash ./bash

# Ahora viene el daño

chown root bash

chmod 4755 bash

Para encontrar todos los archivos SUID y SGID

# find / \( perm 004000 o perm 002000 \) type f print

Ahora hagamos un guión para desplegarse a las personas que les hemos

cancelado la cuenta de usuario (pero no se ha eliminado). Este guión se colocará en el directorio

 /usr/bin o /bin con permisos de ejecución y después se modificará la lí nea del archivo de passwords

para que se ejecute en lugar del intérprete de comandos.

#!/bin/bash#

#

/bin/cat << 'XX'

Bienvenidos al tutorial de UNIX Linux de SCMA 08 de

la UAM, Cuajimalpa. Si desean tener contacto con el

profesor, por favor asistan al tutorial de

lunes a miercoles de 3:30 a 5:00 p.m.

De cualquier forma, les agradecemos su atencion

Page 9: Antecedentes de UNIX

5/10/2018 Antecedentes de UNIX - slidepdf.com

http://slidepdf.com/reader/full/antecedentes-de-unix 9/9

Coordinacion de SCMA 08

XX

exit 0

Ahora se requiere que le den permisos de ejecución$ chmod +x no_login

$ mv no_login /bin

y por ultimo modificar la lí nea del usuario en el archivo de contrase~nas con el comando$ vipw

que contenga el registro del usuario y modificarlojuan:x:1001:1001:,,,:/home/juan:/bin/bash

porjuan:x:1001:1001:,,,:/home/juan:/bin/no_login

Software libre...