Generalidades acerca del SO Unix Breve historia UNIX es un SO con muchos años de existencia, su primera versión data del año 1969 y se concibió en los laboratorios Bell (una parte de AT&T). El objetivo era explotar una mini computadora PDP-7, sus principales autores fueron Ken Thompson y Dennis Ritchie. Ken Thompson Dennis Ritchie La primera versión del SO se escribió en lenguaje ensamblador, pero ya para la tercera versión la mayoría del código estaba escrito en el lenguaje C, que fue especialmente desarrollado con ese fin, de ahí que las historias del C y del UNIX estén muy estrechamente unidas. El nuevo SO tenía las características de que era un sistema simple (a diferencia de Multics (Multiplexed Information and Computing Services), su antecesor, que era muy complejo. UNIX emergía dividido en módulos pequeños que tenían la responsabilidad, según palabras propias de sus autores, de “hacer cada uno de ellos una única función, pero hacerla muy bien”. La primera versión de UNIX era para un solo usuario. MULTICS fue uno de los primeros sistemas de tiempo compartido, e incorporó muchas ideas que aún están presentes en los sistemas operativos multitareas actuales, pero fue víctima y victimario de su papel innovador, y resultó mucho más complejo y pesado de lo necesario. La AT&T abandonó el proyecto MULTICS y dejó a un grupo de personas de talento con muchas ideas acerca de cómo debía ser un sistema en tiempo compartido. La perdida del MULTICS representó, según Dennis Ritchie, no solo la pérdida de “un ambiente en el cual programar, sino de un sistema alrededor del cual se pudiera formar una comunidad”. A pesar de que Multics llegó a tener vida, nunca pudo proporcionar sus servicios en la dimensión deseada, por lo cual los participantes del proyecto fueron retirándose gradualmente: en primer lugar los Laboratorios Bell, después General Electric, que incluso dejó el negocio de la computación y el MIT se quedó solo en este proyecto. Hoy en día, existe una gran variedad de versiones de UNIX que corren sobre diferentes tipos de plataformas. Los SO de esta familia se han extendido por todo el mundo alcanzando una gran popularidad y aceptación. Las versiones de UNIX tienen sus diferencias, pero en general siguen una línea común lo que hace que no sea tan difícil desarrollar habilidades en una de ellas y después pasarse a otra. Organización general del Unix UNIX, al igual que los demás SO modernos, está organizado por niveles o capas que tienen diferentes responsabilidades. Las capas inferiores están más cerca del hardware y las superiores están más cerca del usuario, ya que la idea es hacer las cosas más fáciles a las capas superiores que usan los servicios de las inferiores a ellas. La figura 1 presenta un esquema simplificado del SO, debe quedar claro que la capa nombrada núcleo, trabaja directamente con el hardware, sin embargo la capa nombrada shells solo interactúa con el hardware a través del núcleo, mientras la capa de aplicaciones se sirve directamente de la capa shells. Aplicaciones Shells Núcleo Hardware Figura 1. Estructura del SO Unix. Esta organización es muy general, de hecho de seguro será diferente en cada versión de este SO que usted analice. La tabla 1 muestra algunas de las implementaciones del SO UNIX, puede apreciarse la gran diversidad de versiones que existen. La lista no es, ni mucho menos, exhaustiva pero da una idea de las múltiples variantes que pueden encontrarse en el mercado. Cada una de ellas tiene determinadas prestaciones que se deben evaluar en el momento de tomar la decisión de cuál de ellas es “mejor” para determinado entorno. Forma de trabajo desde una terminal UNIX es un sistema operativo multitarea y multiusuario, es además, un SO de tiempo compartido lo que significa que reparte el tiempo de uso del procesador entre los diferentes procesos que trabajan con él. Multitarea se refiere a que atiende “mas de una tarea a la vez “(realmente nos da esa impresión cuando se tiene un solo procesador). Multiusuario significa permitir que más de un usuario esté conectado a él desde diferentes lugares denominados terminales. Una terminal básica o tonta, no es mas que un equipo compuesto de un teclado y una pantalla y, quizás, algunas pocas cosas más. Las terminales tontas, solo son capaces de trabajar con textos, aunque existen terminales más complejas, como las terminales X, que permiten trabajar en modo gráfico, adicionalmente una computadora (PC o Macintosh) puede emular una terminal. La computadora donde se instala el sistema operativo recibe el nombre de Anfitrión y maneja todo lo que se hace en las terminales, por ejemplo el simple hecho de oprimir una teclea hace que ese carácter se envíe hasta la computadora anfitrión y esta lo devuelve (se dice que hace eco de él) y es en ese instante en que se ve en la pantalla de la terminal. Como todo eso ocurre rápido puede ser que no lo note, pero si el anfitrión está muy lejos (quizás en otra ciudad o país) se podrá notar la demora. Nombre Compañía u organización 386BSD Libre en Internet AIX IBM A/UX Apple BSD Universidad de Berkely California BSD-Lite Universidad de Berkely California BSD/386 Berkely Software Design (BSDI) Coherent Compañia Mark Williams Dynix Sequent freeBSD Libre en Internet HP-UX Hewlett-Packard (HP) Hurd(GNU) Free Software Foundation Irix Silicon Graphics Linux Libre en Internet Mach Universidad de Carnegie-Mellon Minix Incluido en le libro de Tanenbaum MKS Toolkit Mortice H\Kern Systems NetBSD Libre en Internet Nextstep Next OSF/1 Digital Equipment Corporation(DEC) SCO Unix Santa Cruz Operation Solaris Sun Microsystems SunOS Sun Microsystems System V UNIX Varias versiones para computadoras personales Ultrix Digital Equipment Corporation(DEC) Unicos Cray Research Unixware Novell Tabla 1. Algunas implementaciones de la familia UNIX Terminal Terminal Anfitrión Terminal PC Emulando Terminal Terminal Mac Emulando Terminal Figura 2. Una configuración de tipo terminales-anfitrión Terminal Terminal Servidor de Terminal Terminal Anfitrión Terminal Anfitrión Figura 3. Configuración terminales-anfitrión con servidor de terminales El teclado y la pantalla de la computadora anfitriona no se consideran una terminal y el conjunto recibe el nombre de consola. Las tareas de administración se hacen desde la consola. En la figura 2 las terminales (o las computadoras que las emulan) están conectadas directamente a la computadora anfitrión, pero pueden estar conectadas a un servidor de terminales que actúa como un conmutador según se aprecia en la figura 3. Identificadores de usuario y contraseña Todo usuario que quiera conectarse a un sistema UNIX, tiene que pedirle al administrador que le haga una cuenta. Con ese fin debe poseer un login o identificación por el que es conocido dentro del sistema, también debe tener una palabra clave o password, que le permitirá acceder al sistema con los privilegios que se le confieran (puede restringírsele, por ejemplo, el espacio en disco asignado, que no pueda leer ciertos archivos, etc.). Entrada al sistema Para conectarse remotamente a UNIX desde una PC que tiene instalado el SO Windows, debe emularse una terminal. Con ese fin se puede usar el protocolo de comunicación telnet para lo cual se hace el procedimiento siguiente: En el botón de Inicio (Star) se activa la opción Ejecutar (Run), seguidamente se teclea cmd. En la ventana de comandos (tipo MS-DOS), se teclea el nombre del comando (telnet) seguido del número IP del equipo anfitrión o de su nombre Convenio. o Lo que aparezca en negrita lo que escribe el SO. o Lo que se aparezca sin resaltar en negrita lo escribe el usuario. • Primera variante: C:>telnet 10.12.4.4 • Segunda variante: C:> telnet hercules.mfc.uclv.edu.cu Si al hacer el procedimiento anterior no se logra la comunicación, a pesar de ser correcta la identificación de la máquina anfitriona, puede ser que la comunicación vía telnet no esté permitida. El motivo de este hecho viene dado porque telnet no es un protocolo seguro (todo viaja por la red de forma plana, sin encriptar), por ese motivo muchos administradores lo deshabilitan para garantizar parte de la seguridad informática. Para facilitar las cosas se puede utilizar un programa que emula la terminal y hacer uso de otro protocolo que ofrece mayor seguridad. El programa se llama putty.exe, lo único que necesita para usarlo es tenerlo copiado en su máquina (figura 4). Figura 4. Conexión usando putty En la figura 4 se puede apreciar el aspecto de la ventana que se presenta al invocar al putty.exe, usted debe escoger el protocolo ssh (es seguro) y poner, en host name, la dirección IP de la computadora anfitriona (por ejemplo 10.12.4.4), o su nombre (por ejemplo hercules.mfc.uclv.edu.cu). Si se tiene éxito en el establecimiento de la conexión, UNIX responderá solicitado un nombre de usuario y una palabra clave: login as: mlezcano Password: Linux hercules 2.6.8-2-686 #1 Tue Aug 16 13:22:48 UTC 2005 i686 Bienvenidos al Servidor de Archivos DEBIAN de MFC Nombre: hercules.mfc.uclv.edu.cu IP: 10.12.4.4 Last login: Wed Sep 27 10:54:43 2006 from gieia.cei.uclv.edu.cu mlezcano@hercules:~$ En el diálogo anterior el usuario mlezcano entró al sistema, para lo cual tecleó su login (mlezcano) y su password (del cual no se conoce ni siquiera cuántos caracteres tiene debido a que esa acción no produce eco, esta es una forma adecuada para preservar la clave de mirones). El SO debe autentificar si es válida la combinación (login, password). En este caso la reconoció y se presentó con un mensaje que informa desde donde se conectó la última vez y también la fecha en que lo hizo, si esos datos no le parecen correctos, tenga cuidado puede ser que alguien se haya apoderado de su cuenta y debe estar atento a estos problemas. Saliendo del sistema Dependiendo del sistema UNIX que use, existen diferentes formas para salir y terminar una sesión de trabajo, nunca deje su sesión abierta cuando termine y asegúrese de salir antes de pararse de su terminal, algunas formas son: 1. ctrl+d que envía una señal de fin de archivo al shell, el cual la interpreta como una orden para cerrar la sesión. 2. logout 3. exit Todas ellas pueden que estén disponibles o puede que sea una sola o quizás otra diferente, pero en cualquier caso esta es la única forma de salir del sistema y de asegurarse de que todo marchará bien en la otra ocasión que nos conectemos. Nunca cierre la ventana anterior sin haber salido en forma apropiada Comandos Cuando se trabaja desde una terminal básica (No X), se hace usando una gran variedad de comandos que posee el SO, no resultaría lógico tratar de aprenderse cada uno de ellos desde ahora, pero si se espera que, con el transcurso del tiempo y según vayan practicando, logren un conocimiento general que le permita decidir cuál usará en cada caso, veamos algunos ejemplos simples. Un comando muy importante y útil es el man. Su nombre viene de manual y es la ayuda clásica del SO UNIX. En el ejemplo siguiente se observa una petición de ayuda al man acerca de él mismo. mlezcano@hercules:~$man man MAN(1) Manual pager utils MAN(1) NAME man - an interface to the on-line reference manuals SYNOPSIS man [-c|-w|-tZ] [-H[browser]] [-T[device]] [-adhu7V] [-i|-I] [-m system[,...]] [-L locale] [-p string] [-C file] [-M path] [-P pager] [-r prompt] [-S list] [-e extension] [[section] page ...] ... man -l [-7] [-tZ] [-H[browser]] [-T[device]] [-p string] [-P pager] [-r prompt] file ... man -k [apropos options] regexp ... man -f [whatis options] page ... DESCRIPTION man is the system's manual pager. Each page argument given to man is normally the name of a program, utility or function. The manual page associated with each of these arguments is then found and displayed. A section, if provided, will direct man to look only in that section of the manual. The default action is to search in all of the available sections, following a pre-defined order and to show only the first page found, even if page exists in several sections. Manual page man(1) line 1 Con el comando man se puede obtener una información abundante acerca de cualquier comando, la ayuda se presenta en varios campos • NAME explica, de forma escueta, que hace el comando. • SYNOPSYS es la sintaxis del comando • DESCRIPTION información detallada acerca del comando. • OPTIONS explica cada una de las opciones del comando. La ayuda se presenta en una pantalla, si se oprime la tecla espaciadora se presenta la pantalla siguiente y si se oprime la teclea enter se presenta la línea siguiente. Para abandonar la ayuda se teclea la letra q. El comando clear limpia la pantalla. Para averiguar si hay mas usuarios conectados al sistema, se utiliza el comando who. $who En UNIX se puede ejecutar un conjunto de comandos desde la terminal con una orden, para ello basta con que separe cada comando por un punto y coma, lo que provocará que los comandos se ejecuten en ese orden. $ clear ; who Otro comando simple es el que nos permite fijar o ver la fecha y la hora: $ date vie sep 20 15:49:01 UTC 2002 El comando tty, muestra la identificación de la terminal a la que está conectada la entrada estándar. $ stty speed 38400 baud; line = 0; -brkint -imaxbel $ Un comando muy importante es el que permite cambiar la palabra clave $passwd Changing password for user mlezcano. Changing password for mlezcano (current) UNIX password: $ Recuerde que la palabra clave es algo muy personal y que no debe tener apuntado en ningún lugar, además elija una combinación que no sea fácil de descifrar.