Práctica 5 UNIDAD 1: EL SISTEMA OPERATIVO LINUX 1. CARACTERÍSTICAS DE LINUX. El sistema operativo LINUX es un conjunto de programas y una serie de utilidades que permiten al usuario gestionar los recursos hardware del sistema y construir aplicaciones. Al conjunto de programas que se encargan de gestionar los recursos del sistema se le llama kernel (núcleo del sistema). El kernel define la personalidad de nuestro sistema. La versión del kernel de linux ha ido evolucionando con el tiempo ofreciendo cada vez mayores prestaciones y un control más optimizado sobre el hardware. Junto al kernel, linux dispone de un conjunto de utilidades que hacen mucho mas amigable el uso de un ordenador bajo este sistema operativo. Este conjunto de utilidades incluye editores de texto, compiladores, gestores de ventanas, calculadora, juegos, etc. LINUX se caracteriza por ser un sistema "MULTIUSUARIO" porque permite que dos o más usuarios utilicen la computadora simultáneamente. Cada usuario dispone de un espacio de memoria y un subdirectorio de trabajo al cual solo él tiene acceso. Este le confiere seguridad al sistema e impide que otros usuarios puedan escribir o leer ficheros fundamentales para la integridad del sistema. Puesto que el kernel es el encargado de gestionar el hardware, los usuarios necesitan comunicarse con él; para ello se utiliza otro programa conocido como el shell. El shell es un "Intérprete de Línea de Comandos" que traduce los comandos tecleados por el usuario y los convierte en instrucciones que puede entender el Kernel. A continuación enumeramos los conceptos generales de la familia de sistemas Unix (Linux es una variante de Unix): Kernel. Este es el componente principal del sistema operativo. Se encarga de asignar tareas y manejar el almacenamiento de datos. El usuario rara vez opera directamente con el kernel, que es la parte residente en memoria del sistema operativo. Shell. Esta es la utilidad que procesa las peticiones de los usuarios. Cuando alguien teclea un comando en la terminal, el shell interpreta el comando y llama el programa deseado. También es un lenguaje de programación de alto nivel que puede utilizarse en la combinación de programas de utilidad para crear aplicaciones completas. El shell puede soportar múltiples usuarios, múltiples tareas, y múltiples interfaces para sí mismo. Los dos shells más populares son el BourneShell (System V) y el Cshell (BSD Unix), debido a que usuarios diferentes Manuel Sergio Jaime Rodríguez 1 Práctica 5 pueden usar diferentes shells al mismo tiempo, entonces el sistema puede aparecer con aspecto diferente para usuarios diferentes. Existe otro shell conocido como KornShell (así llamado en honor de su diseñador), que es muy popular entre los programadores. Utilidades. El Sistema Operativo UNIX incluye una gran variedad de programas de utilidad que pueden ser fácilmente adaptadas para realizar tareas específicas. Estas utilidades son flexibles, adaptables, portables y modulares, y pueden ser usadas junto con filtros y redireccionamientos para hacerlos más poderosos. Multiusuario. Dependiendo del equipo disponible, LINUX puede soportar desde uno hasta más de 100 usuarios, ejecutando cada uno de ellos un conjunto diferente de programas. Multitarea. Linux puede ejecutar varias tareas simultáneamente. Cada tares tiene asignado un espacio de memoria y una prioridad. Las tareas siguen líneas de ejecución distintas de forma que alguna de ellas puede quedar bloqueada sin afectar al resto de las tareas. Multiplataforma. Corre en muchas CPUs distintas (Intel 386/486/Pentium y como k6/7 de AMD, procesadores de la familia Motorota, Sun Sparc, etc). Sistema de Archivos. La estructura de archivos de Linux está pensada para facilitar la utilización de una gran cantidad de archivos. Utiliza una estructura jerárquica o de árbol que permite a cada usuario poseer un directorio principal con tantos subdirectorios como desee; LINUX también permite a los usuarios compartir archivos por medio de enlaces (links), que hacen aparecer los archivos en más de un directorio de usuario. Cada usuario es propietario de sus archivos y para ello cada fichero dispone de una serie de permisos. El propietario de un fichero puede permitir que otros usuarios compartan el uso de alguno de sus ficheros manipulando adecuadamente los permisos del fichero. 2. ESTRUCTURA DE ARCHIVOS. a. TIPOS DE ARCHIVOS. La base del sistema de archivos de Linux es obviamente, el archivo, que no es otra cosa que la estructura empleada por el sistema operativo para almacenar información en un dispositivo físico como un disco duro, un disquete, un CD-ROM, etc. Como es natural, un archivo puede contener cualquier tipo dce información, desde una imagen en formato GIF o JPEG a un texto o una página web en formato HTML. El sistema de archivos es la estructura que permite que Linux maneje los archivos que contiene: Todos los archivos de Linux tienen un nombre, el cual debe cumplir algunas reglas: Un nombre de archivo puede tener entre 1 y 255 caracteres. Se puede utilizar cualquier carácter excepto la barra inclinada / y no es recomendable emplear los caracteres con significado especial en Linux, que son los siguientes: Manuel Sergio Jaime Rodríguez 2 Práctica 5 =, ^, ˜, ‘, “, `, *, ;, -, ¿, [, ], (, ), !, &, < y > para emplear ficheros con estos caracteres o espacios, hay que introducir el nombre del fichero entre comillas. Se pueden utilizar números exclusivamente si así se desea. Las letras mayúsculas y minúsculas se consideran diferentes y, por tanto, no es lo mismo carta.txt que Carta.txt o carta.Txt Como en Windows, se puede emplear un cierto criterio de “tipo” para marcar las distintas clases de ficheros empleado una serie de caracteres al final del nombre que identifiquen el tipo de fichero del que se trata. Así, los ficheros de texto, HTML, las imágenes PNG o JPG tienen extensiones .txt .htm (o html), .png y . jpg (o .jpeg), respectivamente. Pese a esto, Linux sólo distingue tres tipos de archivos: Archivos o ficheros ordinarios, que son los mencionados anteriormente. Directorios (o carpetas). Es un archivo especial que agrupa otros ficheros de una forma estructurada. Archivos especiales. Son la base sobre la que se asienta Linux, puesto que representa dispositivos conectados a un ordenador, como puede ser una impresora. De esta forma, introducir información en ese archivo equivale a enviar información a la impresora. Para el usuario estos dispositivos tienen el mismo aspecto y uso que los archivos ordinarios. b. ENLACES. El enlace es un tipo de archivo ordinario cuyo objetivo es crear un nuevo nombre para un archivo determinado. Una vez creado el enlace simbólico, éste permite acceder al fichero que enlaza de igual modo como si se accediese desde el archivo original. Los enlaces simbólicos son especialmente útiles cuando se quiere que un grupo de personas trabajen sobre un mismo fichero, puesto que permiten compartir el fichero, pero centralizan las modificaciones. c. EL CAMINO O PATH. En cualquier sistema operativo moderno la estructura de archivos es jerárquica y depende de los directorios. En general, la estructura del sistema de archivos se asemeja a una estructura de árbol, estando compuesto cada nudo por un directorio o carpeta, que contiene otros directorios o archivos. En Windows, cada unidad de disco se identifica como una carpeta básica que sirve de raíz a otras y cuyo nombre es especial: a:, c:, d: etc. En los sistemas UNIX y, por lo tanto, en Linux, existe una única raíz llamada / de la que cuelgan todos los ficheros y directorios, y que es independiente de los dispositivos que estén conectados al ordenador. El camino o path de un fichero o directorio es la secuencia de directorio que se ha de recorrer para acceder a un determinado fichero separados por /. Existen dos formas del path o camino: El camino absoluto que muestra toda la ruta a un fichero (por ejemplo, /home/luis/Carta.txt). El path relativo a un determinado directorio (por ejemplo, si nos encontramos en el directorio /home, el path relativo al fichero Carta.txt es luis/Carta.txt). Además, todos los directorios contienen dos directorios especiales: Manuel Sergio Jaime Rodríguez 3 Práctica 5 El directorio actual, representado por el punto (.). El directorio padre representado por dos puntos (..). Estando en el directorio /home/pedro, se puede acceder a Carta.txt con /home/luis/Carta.txt (path absoluto), o bien, ../luis/Carta.txt (path relativo); en luis como ./Carta.txt o, simplemente, Carta.txt. d. ESTRUCTURA DEL SISTEMA DE ARCHVOS EN LINUX. La estructura de archivos del sistema operativo linux suele organizarse conforme a una convención, en donde generalmente se encuentra los siguientes archivos y directorios: / (root) El directorio raíz, que se encuentra en todos las estructuras de archivos de linux. /bin Recibe su nombre de la abreviación de “binarios” o ejecutables. Es donde residen la mayor parte de los programas ejecutables del sistema. Por ejemplo los ejecutables de las órdenes ls, cd, cp y mv están en este directorio. Es decir, cuando se usa la orden cd se está ejecutando el programa /bin/cd. /dev Todos los archivos que representan dispositivos se almacenan en este directorio. /dev/console Es la consola principal del sistema. /dev/fd Todos los ficheros que comienzan con fd se refieren a diferentes configuraciones y unidades de disco flexible. /dev/hd /dev/ttyS, Discos duros con interfaz IDE. / A través de estos ficheros se accede a los puertos serie dev/cua /dev/sd Discos duros con interfaz SCSI. /dev/lp Ficheros de acceso a los puertos paralelo. /dev/null Dispositivo nulo, cualquier dato enviado a este dispositivo se pierde. /dev/tty Consolas virtuales, el sistema simula la conexión a varios terminales. Al pulsar la combinación de teclas Alt+Tecla_de_función se puede conmutar entre los diferentes terminales. /etc Aquí se almacenan archivos varios. El más útil es el archivo PASSWD, que es una lista de todos los usuarios que tienen permiso para utilizar el sistema. Además de este archivo, aquí se encuentran comandos usados por el supervisor, archivos de configuración, archivos de configuración de discos, archivos de inicialización, listas válidas de usuarios, grupos, ethernet, hosts, a donde mandar mensajes críticos, etc.. Solamente el superusuario (root) puede modificar ficheros de este directorio. /home Contiene el directorio “home” de los usuarios. Así, por ejemplo, /home/juan es el directorio del usuario “juan”. Naturalmente, en un sistema recién instalado este directorio estará vacío. /lib Contiene las librerías de compartidas. Los nombres de los ficheros indican la versión, el tipo de objeto que es y a qué lenguaje o utilidad pertenecen. Por ejemplo, libc.so.4.3.2. es una librería de C (libc), se trata de Manuel Sergio Jaime Rodríguez 4 Práctica 5 una librería compartida (so shared object) y pertenece a la versión 4.3.2. /lost+found Aquí se va la información y los procesos que se estaban ejecutando cuando el sistema se cae. /mnt Directorio para poder montar sistemas de ficheros Linux. /proc Al acceder a este directorio, se consigue obtener información de los procesos que se ejecutan en el sistema. /root Directorio raíz de superusuario. /sbin Contiene programas para la administración del sistema, que son únicamente accesibles al superusuario. Aquí residen los comandos para montar y desmontar los sistemas de archivos, apagar el sistema y utilidades para configurar la red y los dispositivos. /tmp Contiene ficheros temporales, resultado de la necesidad que tienen muchos programas del sistema de general información temporal y posteriormente guardarla en dichos ficheros. /usr Es uno de los directorios más importantes del sistema puesto que contiene los programas de uso común para todos los usuarios. Su estructura suele ser similar a la siguiente. /tmp Aquí se guardan los archivos temporales que crean los programas que son ejecutados. 3. DISTRIBUCIONES DE LINUX. Linux se puede dividir en cuatro componentes: 1. 2. 3. 4. El núcleo. El shell. El sistema de archivos. Programas básicos con los que trabajar. Al conjunto formado por estos cuatro componentes es a lo que se llama distribución. Es decir, al núcleo junto con las aplicaciones y utilidades necesarias para realizar nuestro trabajo. En la actualidad hay más de treinta. Sólo vamos a enumerar las “más importantes” ya que muchas de las existentes se basan en alguna de las aquí listadas. ® Redhat Web: http://www.redhat.com FTP: ftp://ftp.redhat.com/pub Manuel Sergio Jaime Rodríguez 5 Práctica 5 ® Debian Web: http://www.debian.org FTP: ftp://ftp.debian.org/debian ® SuSE Web: http://www.suse.de/es/ FTP: ftp://ftp.suse.com ® Caldera Openlinux Web: http://www.caldera.com FTP: ftp://ftp.caldera.com/pub/OpenLinux ® Slackware Web: http://www.slackware.com FTP: ftp://ftp.slackware.com ® Mklinux Web: http://www.mklinux.org FTP: ftp://ftp.mklinux.org/pub/ ® Mandrake Web: http://www.linux-mandrake.com/es/ FTP: ftp://ftp.rediris.es/pub/linux/distribucions/mandrake/ Manuel Sergio Jaime Rodríguez 6 Práctica 5 ACTIVIDADES 1.- Entra como root y crea el grupo ciclo con el GID 600. Para ello, crea previamente el subdirectorio / home/ciclo. 2.- Edita el fichero /etc/group. Analiza su contenido. 3.- Crea los subdirectorios al1, al2 y al3 en ciclo. 4.- Añade los usuarios al1, al2 y al3 y utiliza como directorio de trabajo los que has creado anteriormente. Los tres usuarios deben pertenecer al grupo ciclo. 5.- Asigna a cada subdirectorio los permisos oportunos para que los tres usuarios puedan trabajar en grupo. 6.- abre una nueva consola y entra como usuario al1. 7.- analiza el contenido de la variable umask. 8.- crea con el comando dd un fichero llamado texto. 9.- analiza sus permisos. 10.- cambia los permisos de forma que puedan leerlo todos los usuarios. 11.- haz una copia del fichero anterior con el nombre nuevo. 12.- Analiza sus permisos. 13.- copia todos los ficheros a al2. 14.- Abre una nueva consola y entra como usuario al2. 15.- copia el fichero nuevo con el nombre otro. 16.- En la consola del root, edita el fichero issue para que aparezca el rotulo “CICLO DE ADMINISTRACIÓN DE SISTEMAS” 17.- Edita el fichero motd para indicar a cada usuario un mensaje de bienvenida. 18.- Analiza el fichero /etc/passwd Manuel Sergio Jaime Rodríguez 7