Fundamentos de Linux y Programación en Shell Prof. Wílmer Pereira USB --- UCAB UNIX/LINUX Prof. Wílmer Pereira 1 Definiciones Básicas ❚ Hardware son los componentes físicos del computador ❚ Software son los componentes programados ❚ Un Sistema de Operación es la entidad de software que regula la operatividad del computador Sistema Bancario Reservaciones Aereas Compiladores UNIX/LINUX Navegadores Web Interpretadores Editores de comandos Sistema de Operación Lenguaje de Máquina Microprogramación Dispositivos físicos Prof. Wílmer Pereira ... ... 2 Sistema de Operación ❚ ❚ ❚ ❚ ❚ ❚ Los sistemas de operación, generalmente no ambientes PC, son: Multiusuario Multitarea Multiconexiones En particular, UNIX con los shell programables provee una extraordinaria flexibilidad. Los más conocidos son: C-Shell Bourne Shell Korn Shell UNIX/LINUX Prof. Wílmer Pereira 3 UNIX ❚ Creado a finales de los años 60 por Thompson y reescrito en C junto con Ritchie en AT&T Bell. ❚ Es adoptado por las universidades y la de California desarrolla la versión Berkeley (serie BSD) ❚ El sistema V desarrollado también por AT&T se fusiona con la versión de SUN y se transforma en el standard. ❚ Aparece SVR4.2 producida por USL (Unix System Laboratory que ahora pertenece a Novell) UNIX/LINUX Prof. Wílmer Pereira 4 Funcionalidades de UNIX ❚ ❚ ❚ ❚ ❚ ❚ ❚ ❚ shell programables, Independencia de sus dispositivos Interoperabilidad Creación, modificación y destrucción no sólo de archivos sino también de programas y procesos, Jerarquía de directorios, Comunicación entre procesos (pipes y coprocesos), Gran cantidad de utilities y rutinas de librerías. Disponible en una amplia variedad de plataformas. UNIX/LINUX Prof. Wílmer Pereira 5 LINUX ❚ Desarrollado para ambientes PC a partir de MINIX ❚ Está disponible gratuitamente (de allí su popularidad) y se nutre de las contribuciones de múltiples adeptos. ❚ Multiplicidad de versiones (Debian, Suse, Fedora, Mandrake, Ubuntu …) ❚ Administración de LINUX es responsabilidad del usuario PC ❚ Instalación cada vez más sencilla (light CD, maquinas virtuales, …) ❚ Diversidad de ambientes de ventanas (gnome, KDE, …) ❚ Versiones para cluster (beowolf …) UNIX/LINUX Prof. Wílmer Pereira 6 Primer Contacto ... Inicialmente todo usuario de un Sistema de Operación debe disponer de una cuenta. ❚ Nombre (login) ❚ Clave de acceso (password) ❚ Directorio Principal (home) ❚ El prompt del shell tiene por defecto el camino del directorio home del usuario. UNIX/LINUX Prof. Wílmer Pereira 7 Sintaxis de Comandos Un comando es cualquier directiva que el usuario desea de UNIX o LINUX, el cual tiene opciones y parámetros. $ comando [opciones [parámetros]] [parámetros] Los corchetes indican que tanto las opciones con sus parámetros como los parámetros del propio comando pueden ser colocados o no (optativo al usuario). Por ejemplo: $ ls -l -s -F /dev UNIX/LINUX Prof. Wílmer Pereira 8 Comandos Básicos date who clear exit Muestra la fecha y hora actual Indica los usuarios conectados Limpia la pantalla Salida de la sesión de trabajo UNIX o LINUX $ who wpereira tty0 ycardina tty1 nathalie tty3 $ UNIX/LINUX Feb Feb Feb Prof. Wílmer Pereira 13 13 12 09:30 11:25 15:20 9 Manuales Los manuales de referencia están en lenguaje técnico y describen lo necesario para el programador, administrador o usuario ❚ Están divididos en nueve secciones por temas: * Comandos generales * Librerías * Llamadas al sistema * Comandos de administración, etc ... ❚ Su versión es línea es mediante el comando man. $ man -k password mkpasswd (1) - generate new password passmass (1) - change password on multiple machines passwd (1) - change password conflict (8) - search for alias/password conflicts $ UNIX/LINUX Prof. Wílmer Pereira 10 Manuales en línea ❚ La estructura de los manuales de comandos es la siguiente: ❙ ❙ ❙ ❙ ❙ ❙ ❙ ❙ ❙ ❙ ❙ Name (Breve reseña del comando) Synopsis (Sintaxis del comando) Description (Descripción detallada para su uso) Options (Todas las opciones posibles) Operands (Los parámetros necesarios o posibles) Environment (Variables de ambiente que conciernen al comando) Exit Status (Valores de retorno después de la ejecución del comando) Files (Archivos involucrados en la ejecución del comando) See also (Otros comandos que podrían ser de utilidad) Notes (Condiciones especiales en el comportamiento del comando) Bugs (Errores reportados y no corregidos) UNIX/LINUX Prof. Wílmer Pereira 11 Directorios y Archivos ❚ Un archivo es un nombre que referencia a un espacio en disco. ❚ Un directorio contiene archivos y/o otros directorios. América Sur Venezuela UNIX/LINUX Centro Colombia Prof. Wílmer Pereira Norte USA 12 Camino de Acceso Es el manera inequívoca de referenciar a un archivo en función a su posición dentro de la jerarquía de directorios. Camino Absoluto: Absoluto es la posición del archivo /home/wpereira/prog.c con respecto a la raíz de la jerarquía (comienza con /) Camino Relativo: Relativo es la posición del archivo con respecto al directorio actual (nunca comienza con /) UNIX/LINUX Prof. Wílmer Pereira html/index.html 13 Ejemplo de jerarquía / etc passwd index.html inittab home shutdown profile html agentes imagenes inv.html wpereira nathalie ycardinal pub docencia logica quiz1.tex Archivo pub redes sop pI.tex scripts logout.sh Directorio Actual examenes bin lib src logout.sh test.sh Camino Absoluto Camino Relativo /home/wpereira /home/wpereira/pub/scripts/logout.sh pub/scripts/logout.sh profile /usr/pub /etc/profile ../../etc/profile inittab / /etc/inittab etc/inittab /home/wpereira/html/index.html index.html pI.tex tmp scripts logout.sh index.html /home/wpereira/html UNIX/LINUX usr /home/wpereira/docencia /home/wpereira/docencia/logica/pI.tex logica/pI.tex Prof. Wílmer Pereira 14 Comandos en directorios ls pwd cd mkdir rmdir passwd Muestra el contenido de un directorio Devuelve el camino absoluto del directorio actual Cambia el directorio actual Crea un directorio Borra un directorio (debe estar vacío) Cambia la clave de acceso a la cuenta Para verificar las opciones posibles y parámetros para cada uno de estos comandos, utilice el manual en línea (man). Generalmente los parámetros son nombres de archivos o directorios. UNIX/LINUX Prof. Wílmer Pereira 15 I-nodos y Discos ❚ Los discos son dispositivos que almacenan la información contenida en los archivos. ❚ Cada disco tiene un espacio para: ❙ inicialización del sistema, ❙ el superbloque (información sobre el espacio libre y ocupado del disco) ❙ los i-nodos. ❚ Los i-nodos almacenan información administrativa de los archivos. Entre ellas se encuentra: * Dueño * Tipo * Tamaño * Protecciones * Fecha del último acceso UNIX/LINUX * Fecha de creación * Número de nombres * Fecha de la última modificación Prof. Wílmer Pereira 16 Tipos de Archivos El comando file permite determinar entre los siete tipos posibles de archivos: ❚ ❚ ❚ ❚ ❚ ❚ ❚ Normal: Normal Directorio: Directorio Fifo: Fifo Bloque: Bloque Carácter: Carácter Link: Link Socket UNIX/LINUX Contiene datos o programas Archivo con información del directorio Designa un canal de comunicación entre procesos Usado para transferir como buffer de I/O Corresponde a dispositivos a caracteres. Archivo que enlaza su contenido Designa un canal de comunicación entre máquinas Prof. Wílmer Pereira 17 Información de Archivos $ ls -Fsl / Una parte de la ejecución de este comando es: 8 drwxr-xr-x 30 root sys 2 -rwxr-xr-x 1 root other 2 lrwxrwxrwx 1 root root 3584 Aug 1 03:10 etc/ 193 Nov 6 1998 init-ntp* 9 Dec 9 1997 lib -> ./usr/lib/ Espacio ocupado en bloques Tipo de archivo Protección Número de enlaces Propietario Grupo Fecha UNIX/LINUX Prof. Wílmer Pereira Número de bytes Nombre Archivo 18 Protección de Archivos Todo archivo tiene un propietario, el cual a su vez, pertenece a uno o varios grupos de trabajo La protección de cada archivo se fija en función a tres entes que pueden acceder a la información: Propietario UNIX/LINUX Miembro del grupo Prof. Wílmer Pereira Cualquier usuario 19 Tipos de Protección ❚ Para cada archivo hay tres maneras de protegerlo: ❙ r (read) posibilidad de lectura ❙ w (write) posibilidad de escritura ❙ x (execute) posibilidad de ejecución ❚ En cada directorio las tres maneras de protegerlo son: ❙ r - - posibilidad de ver los archivos y directorios que lo componen ❙ w - - posibilidad de crear y borrar archivos o directorios ❙ x - - posibilidad de que se use en un camino de acceso (pathname) La protección sólo puede ser cambiada por el propietario o el administrador de UNIX o LINUX (root) UNIX/LINUX Prof. Wílmer Pereira 20 Formato de Protección La protección se fija para cada uno de los tres entes según las tres maneras de protección. Se escribe mediante una secuencia rwx. 2 -rwxrwxrwx 2 wpereira cs 512 Jun 1 1998 index.html La primera secuencia de rwx indica los derechos que tiene el propietario sobre el archivo. La segunda secuencia los que tendría cualquier miembro del grupo cs. La última los de cualquier otro usuario. El archivo index.html está habilitado para lectura, escritura y ejecución para cualquier ente UNIX/LINUX Prof. Wílmer Pereira 21 Cambio de Protección chmod <protección> <archivos> ❚ La protección por cada ente se presenta en tres bits (rwx), es decir, que se representa en binario y se modifica usando su representación en octal. Ejemplos: Binario: 101 Octal: 5 Protección: r-x Binario: 110 Octal: 6 Protección: rwAsí: $ chmod 655 index.html Impediría al propietario ejecutar el archivo index.html, y permitiría a los demás leerlo y ejecutarlo. UNIX/LINUX Prof. Wílmer Pereira 22 Archivo de passwords Originalmente existe un archivo que contenía información del usuario y el password cifrado: passwd. Sin embargo ahora el password cifrado está en shadow. Ambos están en /etc ❚ Esta decisión se tomó porque el archivo passwd es de lectura para cualquier usuario. En consecuencia se podían hacer ataques con diccionario o de fuerza bruta. ❚ Ahora el archivo shadow, solo lo puede leer el superusuario, contiene los passwords cifrados y passwd la información general del usuario: cuota en bloques, camino del home, UID, GID, etc. ❚ También está el archivo de grupos en el directorio /etc UNIX/LINUX Prof. Wílmer Pereira 23 Comandos en archivos I cp rm mv cat more, less file Copia archivos Borra archivos Mueve nombres de archivos Concatena el contenido de uno o varios archivos Permiten ver pausadamente archivos Indica el tipo de un archivo De nuevo debe verificar las múltiples opciones para cada uno de estos comandos en el manual en línea (man). UNIX/LINUX Prof. Wílmer Pereira 24 Comandos en archivos II tail head wc pr diff Permite visualizar el final del archivo Muestra el principio del archivo Indica las líneas, palabras y caracteres del archivo Formatea el contenido del archivo Compara dos archivos por línea y da las diferencias ❚ Tanto en tail como en head, si no se indica explícitamente, se imprimen 10 lineas del final o comienzo respectivamente. ❚ pr tiene opciones para arreglar un archivo de texto: divide en páginas, ajusta ancho de página, permite multicolumnas, coloca doble espaciado, define encabezado de página, etc. UNIX/LINUX Prof. Wílmer Pereira 25 Envío de Mensajes ❚ Existen varios comandos dependiendo de la modalidad de comunicación que se desee: ❙ Comunicación unidireccional : write ❙ Comunicación bidirecional diferida: mail o elm ❙ Comunicación bidirecional a tiempo real: talk $ write usuario [terminal] • Es necesario especificar el terminal cuando el usuario está conectado en varios terminales de la misma máquina. • Si el receptor del mensaje desea responder debe, a su vez, utilizar el comando write para enviar su respuesta. UNIX/LINUX Prof. Wílmer Pereira 26 Mensajes a Tiempo Real $ talk dirección [terminal] ❚ El receptor verá el siguiente mensaje en su pantalla Message from [email protected] at 20:15 talk: connection request by [email protected] talk respond with: talk [email protected] Una vez establecida la comunicación, ambos verán su pantalla dividida en dos partes: una para escribir su mensaje y otra para recibir información. Además ambos pueden escribir simultáneamente sin perturbar el mensaje del otro. UNIX/LINUX Prof. Wílmer Pereira 27 Correo Electrónico ❚ El correo electrónico o e-mail al igual que el correo convencional es diferido, es decir, el receptor lee el mensaje cuando lo estime conveniente. ❚ El e-mail, a diferencia del talk y el write, no produce interrupción en el receptor. Emisor envía mensaje: $ mail [email protected] ? Dejamos que el mundo se acabe ? ^D $ Receptor lee el mensaje $ mail From wpereira Thu Sep 09 09:09:99 Ext 1999 ? Dejamos que el mundo se acabe ? ? El receptor sólo lo leerá al momento que decida consultar su buzón UNIX/LINUX Prof. Wílmer Pereira 28 Comandos Remotos UNIX Y LINUX incluyen comandos de interacción con sistemas de operación análogos remotos rlogin rsh rcp rwho Sesión de conexión a una máquina UNIX remota Corre un comando en un UNIX remoto Copia de archivos entre UNIX remotos Usuarios de una máquina remota (últimos 5 min.) Los archivos /etc/host.equiv y $HOME/.rhost, son verificados a la ejecución de estos comandos. De estar el nombre de la máquina en alguno de ellos no se requiere password. UNIX/LINUX Prof. Wílmer Pereira 29 Comandos INTERNET telnet ftp archie ping Abre una conexión con un servicio remoto Transfiere archivos desde y hacia máquinas remotas Buscador de servidores ftp dado un texto. Verifica si la máquina está activa y hay conexión. ❚ En estos comandos se debe conocer explícitamente el URL de la máquina remota a conectarse. ❚ En ftp y telnet debe conocerse la clave de acceso a menos que se permita conexión anónima. archie y ping no requieren de ninguna clave de acceso. UNIX/LINUX Prof. Wílmer Pereira 30