You are on page 1of 86

ACSO: Administración y Configuración de Sistemas Operativos David Olivieri

Administración y Configuración de Sistemas Operativos Prof. Dr. David Olivieri Universidade de Vigo; ESEI, Ourense Edificio Politécnico, Telf: 988 38 7038 Tutorias: Lunes: 10-12h, 16-18h Viernes: 10-12h Objectivos del Curso: Aprender como configurar y administrar sistemas operativos modernos (Unix/Linux/Windows). Aprender lenguajes de programación de scripting en Linux/Unix Configurar redes TCP/IP, configurar gateways, y acercar temas más actual de seguridad Temario: Commandos GNU/Unix: Comando de Unix/Linux: chmod, find, bc, cat, grep, du, df, free, less, more, ls, sort, wc, whoami gzip zcat zless zmore, tar; Gestión de ficheros básico: puntos de montaje, permisos, Programación en Linux/Unix BASH, AWK y PERL: programación con lenguajes scripting; sentencias de control: while, until, for, if, case; functions, variables "built-in"; condicionales, redirección, tuberías, valores de "return"; comparison de cadenas Sistemas de Fichero Linux/Unix y configuración Teoría de sistema de ficheros y inodes; Particiones: crear particiones y sistemas de ficheros, mantener la integridad de los sistemas de ficheros; Montar y dismontar sistemas de ficheros, gestionando /etc/fstab; Gestión de quotas de discos; Incluye comandos: quota, edquota, repquota, quotaon. Permisos de acceso de ficheros, gestionar permisos: chown y chgrp; Crear y cambiar enlaces simbolicos y duro; localizar ficheros Cuentas, Logs y Seguridad del sistema Gestionar cuentas y sistema de ficheros relacionados de usuarios y grupos: incluye los comandos de useradd, userdel, groupadd, gpasswd, passwd, y ficheros de passwd, group, shadow, gshadow; Cambiar y ajustar entorno de usuarios y variables del entorno: incluye editando /etc/profile, /etc/skel/; Configurar y utilizar los ficheros de log del sistema para necesidades administrativas y de seguridad; involucra editando /etc/syslog.conf Utilizar scripts y cron para schdule trabajos para ejecutar en el futuro estrategias de backups Customize y utilizar entorno shell; fijar variables de entorno PATH, funciones de bash, incluye editando ficheros en directorio .bash\_profile, .bash\_login, .profile; .bashrc; .bash\_logout, .inputrc;

Arquitectura de Sistemas y Configuración de Hardware Resumen de arquitectura de microprocesadores más conocidos (Intel, Alpha,MIPS) configurar hardware del sistema fundamental; conocimientos de settings de BIOS, IRQ y I/O, direcciones del puertos, temas relacionados con dispositivos de discos; Configuración de disposativos SCSI y NIC; Instalar y Configurar XFree86; verificar hardware del tarjeta, video y compatbilidad de X server, configurar servidor editar /etc/X11/XF86Config, Comandos: XF86Setup, xf86config, otras ficheros: .xresources; Configurar XDM Identifar y terminar aplicaciones X no terminado; Instalar y Custumize un Gestor de Ventanas; conocimientos de gestores de ventanas, comandos y ficheros: .xinitrc, .Xdefaults, .rc Configuración de Hardware en Red Gestión impresoras y colas de impresión; imprime ficheros, monitorización de colas y jobs de impresoras, incluye comandos de lpc, lpq, lprm and lpr y fichero: /etc/printcap Instalar y configurar impresoras local y remota; instalar demonio de impresora, configurar filtros de imprenta, sistemas Samba; Conocimientos de comandos: lpd. Arranque, Initialización, Shutdown, Niveles de ejecución: Arranque el sistema: guiar sistema a traves el processo de arranque; Involucra utilizando los comandos: dmesg (lilo) y utilizando ficheros /var/log/messages /etc/lilo.conf, /etc/conf.modules | /etc/modules.conf; Cambiar niveles de ejecución o reboot. Teoría, Estructura y Configuración del kernel Linux Gestionar módulos de kernel en runtime Conocimientos de módulos cargables, incluye comandos: lsmod, insmod, rmmod, modinfo, modprobe. Involucra ficheros: /etc/modules.conf | /etc/conf.modules (* depende del distribución *), /lib/modules/kernel-version/modules.dep Device drivers Reconfigurar, construir, y instalar un kernel, modulos y patches; Utilzar oldconfig, menuconfig or xconfig, make nuevo kernel de Linux, instalar nuevo kernel y módulos, reconfiguración de lilo Utilizar comandos: make (dep, clean, menuconfig, bzImage, modules, modules\_install), depmod, lilo. Ficheros: /usr/src/linux/.config , /usr/src/linux/Makefile, /lib/modules/kernelversion/modules.dep, /etc/conf.modules, /etc/modules.conf, /etc/lilo.conf Instalación de Linux y Gestión de Paquetes: Instalación de programas desde los fuentes (tarballs); /configure scripts y Makefiles; gestionar librarías compartido; determinar dependencias de programas; comandos: ldd, ldconfig. Introducción a Redes; Teoría de Redes, sistemas basado en redes; conocimientos de protocolos; TCP, UDP, ICMP y PPP, conocimientos de puertos en /etc/services, Ejecute tareas de TCP/IP; Ejecutar tareas básicas de TCP/IP: FTP, telnet, host, ping, dig, traceroute, whois; conocimientos de los técnicas para listar, configurar y verificar el estatus de interfaces de red, configurar tablas de encaminamiento, manualmente configurar interfaces de red, configurar clientes DHCP y TCP/IP host, debug problemas. involucra ficheros: /etc/HOSTNAME, /etc/hostname, /etc/hosts, /etc/networks, /etc/host.conf, /etc/resolv.conf; comandos: dhcpd, host, hostname (domainname, dnsdomainname), ifconfig, netstat, ping, route, traceroute, y scripts de redes;

Sistemas de DNS; Fundamentos Teoria de DNS; Administrar y configurar servicios de DNS; ficheros /etc/hosts, /etc/resolv.conf, /etc/host.conf, y /etc/nsswitch.conf; configuración de ficheros de bind; comandos incluye nslookup; Servicios de Redes: NFS, NIS, Samba ; Configurar y gestionar netd y servicios relacionadas ; servicios a través de inetd utilizando tcpwrappers para dejar o denegar servicio; gestionar servicios de telent y ftp; gestionar servicios con ficheros inetd.conf, hosts.allow, y hosts.deny; introducción a NIS y NFS; Maneja demonios de NSF (sistema de ficheros remota), smb, nmb Servicios de Servicios Web y Base de datos: Apache, Correo, Squid, php, PostgreSQL Configuración sendmail, crear aliases, gestionar cola de correo, start y stop sendmail, configurar mail forwarding, Incluye los comandos de mailq, sendmail, y newaliases Incluye aliases y ficheros de mail/ config; Configuración basica de apache; Modificar parámetros sencillos de configuración de apache, start, stop y restart httpd, incluye para empezar servicio durante proceso de arranque; Configuración de Web Proxy programa Squid. Aministración y Configuración utilizando metodos de Seguridad; Firewalls, PGP, transacciones seguros configurar y utilizar TCP wrappers para segurar el sistema, bits de SUID y setgid, administrar contraseñas; Comandos ssh; Configurar seguridad del host: shadowed passwords, herramientas de monitorización: cops, saint, satan, nessus, quesso Metodos de Hacking/Cracking Virus y Antivirus Detecci\'on de Intrusiones. Windows 2000 Server Comparición con Unix/Linux Servicios nivel de usuario y redes. Bibliografía online linux HOWTOs: http://www.cesga.es/ Guías del LDP (Proyecto de documentación Linux); http://www.cesga.es/LDP Kernel Documentación: http://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html Aivazian, T. Linux Kernel 2.4 Internals, April 2001, Linux Documentation Proyect Bovet, D.P. Cesati, M. Understanding the Linux Kernel, O'Reilly \& Associates, Inc, October 2000, ISBN: 0-596-00002-2 Cooper, M., Advanced Bash-Scripting Guide July 2001, Linux Documentation Proyect, online Frampton, S., Linux Administration Made Easy, Linux Documentation Proyect Kirch, O., Dawson, T. Linux Network Administration Guide, 2nd edition, O'Reilly \& Associates Inc, June 2000, ISBN: 0-56592-400-2 Rubini, A. Corbel, J., Linux Device Drivers, 2nd edition, O'Reilly \& Associates, Inc, June 2001, ISBN: 0-59600-008-1 Rusling, D., El Núcleo Linux, Linux Documentation Proyect Welsh, M. Kalle Dalheimer, M., Kaufman, L. Running Linux, 3rd edition, O'Reilly \& Associates, Inc, August 1999 Wirzenius, L., The Linux System Administrator's Guide;

Evaluación

Concepto Practicas de Laboratorio Proyecto Practica

Descripción Un conjunto de problemas cada semana. El alumno tiene que entregar resultado de este trabajo a largo del curso Un proyecto práctica se asigna a cada alumno. Este proyecto se evalúa al final de la asignatura. Consiste en parte de demostración oral y un memoria técnica Un examen de carácter teórica.

% de Nota Final 30% 35%

Examen Final

35%

Características de Proyecto Práctica: Tema asignada por profesor Consiste de un realización de una memoria (mínima 15 páginas) y un presentación al profesor. Plazas de entrega Consiste de 40% de nota final

. establecer politica. iniciar el sistema. configuración dispositivos. que a su vez contienen los programas más importantes en el sistema. supervisión del sistema.manejo de periféricos. /usr adonde reside la mayoria parte del sistema operativo reside en estos dos sistemas /bin programas ejecutables. hacer copias de seguridad). copias de seguridad. Tareas para sistema: administración de cuentas. actualizaciones de software LINUX Vamos a concentrar en Linux en esta asignatura: Documentos . /usr contiene varios subdirectorios. eficiente. registrar los cambios del sistema. Documentación on-line en forma de HOWTOs es la mejor sitio para información Información también en info -f Sistema de archivos (Linux) /. configuración basica del sistema. Normalmente /usr contiene los grandes paquetes de software Subdirectorios importantes en el sistema de archivos /usr /usr/bin se utiliza para tener los programas ejecutables /usr/etc contiene muchos archivos misceláneos de configuración /usr/includelos archivos include (cabaceras) para el compilador C. conocidos como binarios /sbin binarios del sistema que se utilizan para administrar el sistema /etc contiene muchos de los archivos de configuración del sistema /lib librarías compartidos /dev archivos de dispositivos /proc un sistema de archivos virtual que se utiliza para leer información de los procesos desde la memoria /tmp para almacenar archivos temporales que crean los programas al ejecutarse. /home es el directorio base para los directorios iniciales de los usuarios. /usr/g++-include includes para el compilador C++ /usr/lib librarías para los programas /usr/man diveras páginas del comando man /usr/src código fuente de distintos programas /usr/local está asignado para personalizaciones locales del sistema. seguridad del sistema . se denomina superusuario o \texttt{root} realizar tareas privilegiados (pueden cambiar los attributos de cualquier archivo.Tema-1: Introducción al Administración de Sistemas proporciona a los usuarios del sistema un entorno seguro. servicio de consejo Tareas Administración de Redes mejoras/evolución: la mayoría de las redes no se instalan de una vez toman parte de compras y decisiones. y fiable realizar prácticamente cualuquier operación.HOWTOS (COMO) Obtener información en muchas maneras con Linux. /var contiene archivos que tienen tendencia a cambiar de tamaño con el tiempo.

Cuatro tipos básicos de archivos: (1) archivos normales . así como punteros hacia esos archivos y subdirectorios a cada archivo se le asigna en Linux un número único llamada inode. Enlaces • • • • • • • • los enlaces normales no son archivos en absoluto. /dev/null es esencialmente un agujero negro.Dispositivos utilizados más frecuente /dev/console hace referencia a la consola del sistema /dev/hd la interfaz de dispositivos para la unidades de disco duro IDE. incluyendo la dirección de los datos en el disco y el tipo. (2) directorios. /dev/mouse es un enlace simbólico al dispositivo correspondiente al ttyS que está conectado el ratón) /dev/cua se utilizan con módems /dev/null un dispositivo muy especial. La tabla de inodes sigue la pista de todos los enlaces que hay con un archivo y sólo cuando se suprime la última entrada de directorio se deja libre el inode para situarlo en el conjunto de inodes disponibles Hay otra clase de enlace llamada \textit{enlace simbólico}. Cada disco físico o partición tiene su propia tabla de inodes inode contiene tabla todo la información sobre un archivo. que se almacena en una tabla (que se llama tabla de inodes) que se asigna cuando el disco está formateado. /dev/hda el disco duro en su totalidad /dev/sd la interfaz de dispositivos para discos SCSI /dev/fd proporcionan soporte a unidades de disquete /dev/fd0 /dev/st para unidades de cinta SCSI /dev/sr proporciona la interfaz para unidades CD-ROM SCSI /dev/tty proporcionan distintas consolas para las entradas de usuario. . Vease (<Alt-F1> a <Alt-F6>) /dev/ttyS son los puertos interfaz serie del computador. sino simplemente entradas de directorio que señalan al mismo inode. Esto puede ser muy útil si se quiere ejecutar un comando y no se necesita ni la salida estándar ni los errores estándar. /dev/hda1 la primer partición. para el cual la entrada de directorio contiene la entrada de un archivo que en sí mismo es una referencia a otro archivoque está ubicado en otro sitio en el sistema de archivo vease ls -l: la respuesta muestra tanto el nombre como una indicación del archivo enlazado. Sistema de Archivos El sistema de discos y mecanismos que hacen que los discos estén juntos el sistema de archivos lógico que ve y manipula el usuario. /dev/ttyS se corresponde con COM1 bajo MS-DOS. (con un ratón serie. (3) enlaces y (4) archivos especiales Directorios • • • • • • • son archivos que contienen los nombres de archivos y subdirectorios.

301_IST.Archivos Especiales • • • el comando tty informa del nombre del dispositivo del C terminla con el que actualmente está trabajando o prueba si la entrada estándar es un terminal los terminales e impresoras se denominan dispositivos especiales por caracteres Permisos de los archivos Aunque los permisos deciden quien puede leer.2-2. . Linux tiene tres niveles deseguridad: propiedad.noarch.rpm -rw-r--r-1 olivieri users 2949328 Sep 26 19:46 openmotif-2. (010) w.rpm -rw-r--r-1 olivieri users 9678627 Sep 7 18:21 ForteCE-FCS-1_0_1. (010) w. (0001) FIFO. (001) x otros (todos): (100) r.rpm -rw-r--r-1 olivieri users 2623882 Sep 15 20:07 Mesa-3. SETSUID) usuarios: (100) r. (1100) socket U G S (SETUID.rpm -rw-r--r-1 olivieri users 39740896 Sep 7 14:38 j2sdk-1_3_0-beta_refreshlinux. (0110) Especial modo bloque. (001) x Comando chmod Este comando cambia la modalidad de los archivos. que es la contral por permisos de acceso asociados con ellos. (0100) Directorio. (001) x grupo: (100) r.src. también deciden el tipo de archivo y cómo se ejecuta el archivo. SETGID. (010) w.i386. olivieri@pcolivieri olivieri]$ ls -tl *.rpm la primera columna muestra los permisos del archivo la segunda columna muestra el número de enlaces la tercera muestra el propietario del archivo la cuarta columna muestra el grupo al que pertenece la quinta muestra el número de bytes la sexta muestra la fecha y hora de creación la séptima el nombre del archivo La columna de permisos -rw-r--r-Tipo de ficheros (primeros 16 bits): (1000) Ordinario. y todos los demás. escribir o ejecutar un archivo. (1010) Enlace simbólico. (0010) Especial modo carácter. acceso de grupo.1.

OCTAL-MODE FILE.change file access permissions SYNOPSIS chmod [OPTION].... mueve un archivo a un nuevo directorio o ambas cosas mv también le permite renombrar un directorio cat concatena y mostrar un archivo... similar a more.. Se puede copiar de un archivo a otro o de una lista de directorios a un directorio mv renombra un archivo. La variable PATH se establece para señalar a otros directorios que contiene programas ejecutables. MODE[.] [expression] Ejemplo: find /home/olivieri/Asignaturas/ACSO -type f -exec /bin/ls -ls {} '. éste le coloca en su directorio inicial. chmod [OPTION].' . programas binarios ejecutables (vease find) find [-c][-z][-L][-f -a archivo][-m mec] lista\_archivo NAME find . --reference=RFILE FILE... Los comandos de manipulación de archivos pueden agruparse en dos categorías principales: comandos que manipulan archivos como objetos.. archivos de orden shell (programas interpretados).MODE]. chmod [OPTION].. FILE. Directorios El concepto de directorio: cuando se entra en el sistema.. less un paginador de archivo de uso general.NAME chmod .. código fuente en C... more es un paginador de uso general Búsqueda de archivos Se puede utilizar el comando find para encontrar ficheros tienen tres partes: (1) dónde buscar.. (2) qué buscar y (3) qué hacer cuando se encuentre pueden contener texto.search for files in a directory hierarchy SYNOPSIS find [path.. comandos que manipulan el contenido de los archivos Comandos con Archivos ls lista los archivos encontrados en el sistema de archivos mkdir crear nuevos directorios en el sistema de archivos cp copia archivos.

(4) funciones built-in ¿Porque Scripts? Script importante para administraciópn y configuración Por Ejemplo: Linux arranque: ejecuta el shell scripts en el directorio de /etc/rc.d para restorar el configuración de sistema y iniciar los servicios." Un ejemplo de un script más complicado es la siguiente. (3) funciones de shell. Cuando no debe usar scripting • tareas intensivas de los recursos. E/S intensivo • necesidad de generar o tratar con gráficos o GUIs • necesidad de tener aceso directo al hardware de sistema • necesidad de utilizar E/S de sockets • necesidad de utilizar librarias Ejemplos de Scripts En el caso más sencillo. sintaxis es como pegando comandos junto. programas se refiere con nombre \textit{script} Pegar comandos juntos Conocimiento de shell scripting es fundamental para sistema operativo El Lenguaje con los siguientes construcciones: (1) construciones de bucles. un manera rápido para hacer prototipos. Por ejemplo.Tema 2: Bash Scripts 2. el script es solo una lista de comandos guardado en un fichero. (2) construcciones de condicionale. (Tenemos que estudiar distintos elementos de este script) 1 . velocidad es importante • aplicaciones complejos . limpiar ficheros en /var/log # limpiar # Ejecuta como root cd /var/log cat /dev/null > messages cat /dev/null > wtmp echo "Log limpia.programación estructurad es importante • tratamiento de ficheros.1 Fundamentos de los shells de Linux El intérprete de línea de comandos de Linux se llama el shell Capa de insulación entre sistema operativo y el usuario Lenguaje poderoso.

Un valor cero desde el script cuando exit indica exito. Otros ejemplos que llama interpredores son: #!/bin/sh #!/bin/bash #!/usr/bin/perl #!/usr/bin/tcl #!/bin/sed -f #!/usr/awk -f Llamando el script sh < scriptname > chmod 555 scriptname (gives everyone read/execute permission) chmod +rx scriptname (gives everyone read/execute permission) chmod u+rx scriptname (gives only the script owner read/execute permission) 2 . version 2 # Ejecutar como root LOG_DIR=/var/log ROOT_UID=0 # LINES=50 # E_XCD=66 # E_NOTROOT=67 # Only users with $UID 0 have root privileges.temp messages # Becomes new log directory.#!/bin/bash # cleanup." exit $E_XCD fi # Doublecheck if in right directory." exit 0 ': > wtmp' and '> wtmp' have the same effect. tail -$lines messages > mesg.temp # Saves last section of message log file. mv mesg. cat /dev/null > wtmp # echo "Logs cleaned up. Can't change directory? Non-root exit error. if not specified on command line. if [ "$UID" -ne "$ROOT_UID" ] then echo "Must be root to run this script. Default number of lines saved. then lines=$1 else lines=$LINES # Default." exit $E_NOTROOT fi if [ -n "$1" ] # Test if command line argument present (non-empty). el simbolo #! en primer linea indica que el fichero es listo para un conjunto de comandos. before messing with log file. fi cd $LOG_DIR if [ `pwd` != "$LOG_DIR" ] # or if [ "$PWD" != "$LOG_DIR" ] # Not in /var/log? then echo "Can't change to $LOG_DIR. En realidad es un número magico de dos bytes que indica el tipo de fichero.

pero solo se devuelve el último let "t2 = ((a = 9. La caractera ":" tambien sirve como separador de campo en /etc/passwd. En este apartado.xxx" ahora vacio Tiene la misma efecto que cat /dev/null >data. la caractera ? indica una prueba para una condición. Caracteres Especiales \# Comentarios . echo hola. debido que ":" es una función builtin.. Si el fichero no existe.xxx Pero no va a fork un procesos nuevo. xyz) echo "$variable = xyz" . dentro de ciertos expresiones. bash$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/games Mas Caracteres especiales: • ? es el operador de prueba. investigamos estas posibilidades. La combinación :> (: con el operador de redirección >). echo buenos . lo crea. la expresión de prueba va dentro de las claves [ ].2 Operaciones Basicas Dentro de operaciones básicas que estamos interesados: caracteres especiales. Separador de Comandos.. . • $ sustitución de variable • [] prueba. quoting. para que todos estan evaluadas. estatus de salir. Si tenemos 'STRING' preserva todos los caracteres especiales dentro de STRING. utilizamos full quoting. var1=5 var2=23skidoo echo $var1 echo $var2 # 5 # 23skidoo 3 . 15 / 3))" # Set "a" and calculate "t2". Terminador de sentencia case [Double semicolon] Considera la siguiente ejemplo: case "$variable" in abc) echo "$variable = abc" . variables y parametros. Expansion de variables y Sustitución de subcadenas. y en la definición del variable de entorno $PATH. se puede poner el tamaño de fichero a cero. El operador coma: El operador coma enlace operaciones aritmeticas.xxx # Fichero "data.. esac En esta ejemplo. sin cambiar los permisos.2. : > data. Permite dos o más comandos.

el valor del parametro de variable. done Ejecutar COMMANDS para cada miembro en WORDS. .Manipulando y/o expandiendo variables ${parametro} Es lo mismo que $parametro. do echo The counter is $COUNTER let COUNTER=COUNTER+1 done Sentencia de control: for for NAME [in WORDS . do CONSEQUENT-COMMANDS. do COMMANDS. do CONSEQUENT-COMMANDS. En bash las cadenas y expresiones numericos se trata en una manera similar. echo "New \$PATH = $PATH" Sentencias de control: until until TEST-COMMANDS. Se puede utilizarlo para concatenar variables con cadenas. done Ejecutar CONSEQUENT-COMMANDS hasta el comando final TEST-COMMANDS tiene un estatus de salida que no es cero.].. your_id=${USER}-on-${HOSTNAME} echo "$your_id" # echo "Old \$PATH = $PATH" PATH=${PATH}:/opt/bin #Add /opt/bin to $PATH for duration of script. #!/bin/bash COUNTER=20 until [ $COUNTER -lt 10 ]. eg. #!/bin/bash COUNTER=0 while [ $COUNTER -lt 10 ]. do echo COUNTER $COUNTER let COUNTER-=1 done Sentencias de control: while while TEST-COMMANDS. done Ejecutar CONSEQUENT-COMMANDS hasta el comando final TEST-COMMANDS tiene un estatus de salida que es cero.. con NAME enlazada al miembro actual for i in vacas cabritos cerdos pollos do echo ``$i es un animal de granja'' done echo -e pero \n GNUs no son '' 4 .

]... esac' Ejecutar selectivamente los COMMANDS basada sobre WORD que match PATTERN. then echo ``backup-lots. do NEW_FILE=$1.sh <filename>'' exit fi for i in 0 1 2 3 4 5 6 7 8 9 .. then CONSEQUENT-COMMANDS.] fi Un ejemplo de un script utilizando la sentencia if: #!/bin/sh X=10 Y=5 if test ``$X'' -gt ``$Y'' ..sh : warning $NEW_FILE'' echo `` already exists'' else cp $1 $NEW_FILE fi done Sentencias Condicional: case `case WORD in [PATTERN [| PATTERN]... *) echo -n "un numero no conocido de". then echo ``$X is less than $Y'' else echo ``$X is equal to $Y'' fi Ejemplo utilizando test #!/bin/sh if test ``$1'' = ``'' . echo -n "Entra el nombre del animal: " read ANIMAL echo -n "El \$ANIMAL tiene " case \$ANIMAL in caballo | perro | gato) echo -n "four".Sentencias Condicional: if if TEST-COMMANDS..] [else ALTERNATE-CONSEQUENTS. La barra $|$ esta utilizado para separar patrones multiples. esac echo "piernes." 5 .) COMMANDS . then echo ``Usage: backup-lots. hombre | kangaroo ) echo -n "two".BAK-$i if test -e $NEW_FILE . [elif MORE-TEST-COMMANDS. then echo ``$X is greater than $Y'' elif test ``$X'' -lt ``$Y'' .. then MORE-CONSEQUENTS.

• {'echo'} imprime argumentos a salida estandar • {'eval'} argumentos estan concatenado • {'exec'} • {'exit'} Salir del shell • {'export'} pasar a procesos hijos • 'getopts'} Parse options to shell scripts or functions. • \ {'wait'} esperar para salida de un proceso hijo 6 . • 'umask' } Fijar mascara de creación de un fichero. • unset'} causar los variables de shell para disaparacer. do A = 'expr $A '+' $N' N = 'expr $N . • 'hash' • 'kill' señal para para proceso • 'pwd'} imprime directorio actual • 'read'} lear del entrada del shell • 'readonly'} marcar variables para no cambiar • 'return'} devuelve un funci\'on de shell con valor • 'shift'} Shift positional parameters to the left. pero este vez utilizando un bucle while.Funciones de Shell [`function'] NAME () { COMMAND-LIST.'} Leer y ejecutar los comandos del FILENAME en contexto de shell actual • {'break'} Salir del bucle • {'cd'} cambiar directorio actual de trabajo • {'continue'} resumir la proximo iteración dentro un bucle. } #!/bin/bash function quit { exit } function hola { echo Hola! } hola quit echo foo Factorial con bucle while Funciones en en bash son como programas en C.1' done echo $A } Bourne Shell Builtins • {':'} expander argumentos y hacer redirecciones • {'. function factorial () { N=$1 A=1 while test $N -gt 0 . • 'trap'} especificar comandos para ejecutar cuando el shell recieve señales. '['} Evaluar un expresión conditional. • 'test'. Este ejemplo es lo mismo del factorial de antes. • 'times'} imprime los usuarios y tiempos de sistema usado por los hijos.

then lines=$1 else lines=50 # default. version 2 # Run as root. cleanup An enhanced and generalized version of above #!/bin/bash # cleanup. if [ -n $1 ] # Test if command line argument present. script. Fi cd /var/log tail -$lines messages > mesg. mv mesg. of course. as the above method is safer. then echo expression evaluated as true else echo expression evaluated as false fi 7 ." exit 0 # A zero return value from the script upon exit # indicates success to the shell. Conditionals with variables #!/bin/bash T1="foo" T2="bar" if [ "$T1" = "$T2" ]. if not specified on command line." Example 2-2.temp messages # cat /dev/null > messages # No longer needed.Variables • IFS una lista de caracteres que separar campos utlizado cuando el • shell compartir palabras como parte de la expansión • PATH lista de directorios que shell puede buscar comandos • HOME directorio home de usuario • CDPATH lista de directorios usado por comando cd • MAILPATH lista de ficheros que el shell mira para nuevas mensajes de correo • PS1 cadena primaria de prompt • PS2 cadena secundaria de prompt • OPTIND el indice de la última opción procesado por getopts • OPTARG el valor de la última argumenta procesado por getopts Ejemplos # cleanup: Un script para limpiar los ficheros log en /var/log # Ejecutar como root cd /var/log cat /dev/null > messages cat /dev/null > wtmp echo "Los logs esta limpia. cat /dev/null > wtmp echo "Logs cleaned up.temp # Saves last section of message log file.

else usar null string Si parametro fjio. else imprimir err_msg #!/bin/bash : ${HOSTNAME?} {USER?} {MAIL?} echo $HOSTNAME echo $USER echo $MAIL echo Critical env. usar 'otherwise". usar default Si parametro no esta fija. exit 0 . Caracteres especiales de Bash Algunas caracteres tiene distintos signficacia dependiendo en su contexto. see below En este ejemplo. el concepto de redirección. tuberias.. : null command. se trata de conocer más caracteres especiales. Dos de ellos puede ser las caracteres siguientes: • • . scripts y parametros. usarlo. ampliamos nuestra conocimiento de Bash.Tema 3: Bash Scripts Avanzada En esta Tema. operation-n done if condition then : # Do nothing and branch ahead else take-some-action fi ${} Parameter substitution. Exit status 0. operaciones con cadenas y operadores logicos. variables set. fijar al default Si parametro fija. echo hola.. alias for true. vemos la manera de separar dos comandos. En particular. • • • • ${parameter-default} ${parameter=default} ${parameter+otherwise} ${parameter?err_msg} Si parametro no esta fija. Puede poner dos comandos en misma linea. ficheros. Seperador de comandos. aritmetica y el concepto de wrappers. echo amigo Endless loop: while : do operation-1 operation-2 .

on stripped out) = $t" path_name=/home/bozo/ideas/thoughts.stripped out) = $t" t=${var1%*-*} echo "var1 (with everything from the last .*} # Same effect as t=`dirname $path_name` echo "path_name. dentro var replaced with replacement. with first 11 chars stripped off = $t" t=${path_name:11:5} echo "$path_name.for.} Bloque de código. ${var%%pattern} quitar mas corta/mas larga si es similar a final de variable ${var:pos} variable var expandido. stripped of prefixes = $t" t=${path_name%/*.today echo "path_name = $path_name" t=${path_name##/*/} # Same effect as t=`basename $path_name` echo "path_name. echo \$a)} { …. ${var##pattern} quitar mas corta/mas larga parte de patron si es similar a principio de variable ${var%pattern}. Bloque de codigo puede tener E/S rediricionado desde y hacia el. with first 11 chars stripped off. length 5 = $t" t=${path_name/bozo/clown} echo "$path_name with bozo replaced = $t" t=${path_name//o/O} echo "$path_name with all o's capitalized = $t" exit 0 Grupo de Comandos (…. within var replaced with replacement.) Grupo de comandos. ${var//patt/replacement} all matches of pattern. empezando con posición pos ${var:pos:len} expansión a max de longitud len de caracteres de variable var desde la posición pos ${var/patt/replacement} primer similaridad de patron. stripped of suffixes = $t" t=${path_name:11} echo "$path_name. #!/bin/bash # Bloques de código y E/S redirección { read fstab } < /etc/fstab echo "Primer linea de /etc/fstab es:" echo "$fstab" exit 0 . Crea un funci\'on anonimo. \texttt{(a=hello. up to and including first .Sustitución y expansión • • • • • • ${var#pattern}. • Ejemplo #!/bin/bash var1=abcd-1234-defg echo "var1 = $var1" t=${var1#*-*} echo "var1 (with everything.

bz2 | tar xvf - Redirección y ficheros Hay tres descriptores de ficheros: stdin. redirecci\'on desde/hacia stdin or stdout. ) | (cd /dest/directory && tar xvfp -) # Mover arbol de fichero entero desde un directorio a otro bunzip2 linux-2. Sobre-escribir un fichero existente.txt Escribir sderr a un fichero grep da * 1>&2 Escribir stdout a misma descriptor de fichero que stderr Escribir sterr a misma descriptor de fichero que stdout grep * 2>&1 rm -f $(find / -name core) &> /dev/null .Redirección • • • • • • • scriptname >filename command >&2 scriptname >>filename << | >| (redireccionar salida de un comando a stderr) (anadir la salida de scriptname a un fichero) redireccionar stdin Tuberia.15. Salida de un comando a otro o shell forzar redirecci\'on.lst # ficheros y borrar lineas duplicados. Ejemplos: echo ls -l | sh cat *. stdout y stderr • • • • • • • redireccionar stdout a un fichero redireccionar stderr a un fichero redireccionar stdout a un fichero redireccionar stderr a stdout redireccionar stderr y stdout a un fichero redireccionar stderr y stdout a stdout redireccionar stderr y stdout a stderr 1 representa stdout 2 representa stderr grep da * 2> grep-errors.2..tar. (cd /source/directory && tar cf .lst | sort | uniq # ordenar la salida de .

utilizado a menudo en scripts para construir nombre de ficheros temporal $? estatus de salida (exit) de función o de script $* todo los parametros positionales $@ lo mismo de $*. then echo "S1('$S1') no es igula a S2('$S2')" fi if [ $S1=$S1 ]. $1. pero para cada parametro es un string en comillas $flags passed to script $! PID de última job ejecutando en fondo = asignación de variables (no espacio antes y despues de &) Obtener valor de return de un programa Valor de salida return value de una programa esta guardad en un variable especial.txt$" Acceder Parametros $0. then echo "S1('$S1') es igual a S1('$S1')" fi . Ejemplo de como capturar valor de salida: #!/bin/bash cd /dada &> /dev/null echo rv: $? cd $(pwd) &> /dev/null echo rv: $? Comparición de Cadenas s1 = s2 s1 igual a s2 s1 != s2 s1 no es igual a s2 s1 < s2 s1 > s2 -n s1 s1 no es null z s1 s1 es null #!/bin/bash S1='string' S2='String' if [ $S1=$S2 ]. o un variable) $# numero de argumentos o parametros posicional en linea de comandos $$ id de proceso de script.etc.Tuberias ls -l | sed -e "s/[aeio]/u/g" ls -l | grep "\. denomida $?. parametros positional (desde linea de comandos o desde función.

" else echo "First command-line argument is $1.. but outputs an error message...." fi if [ xyz ] #string then echo "string aleatorio es verdad." else echo "First command-line argument is $1. else # Opcional para anadir mas chequeos command 3 command 4 . fi #!/bin/bash if [ 0 ] then echo "0 es verdad. echo "Creating file." else echo "NULL es falso. if [ -z $1 ] # if [ -z $1 # also works." else echo "string aleatorio es falso." fi exit 0 Tests." fi if [ -x filename ]. then elif Equivalence of [ ] and test #!/bin/bash if test -z $1 then echo "No command-line arguments.Sentencia de if/then if [ condition-true ] then command 1 command 2 ." fi if [ ] #NULL (empty condition) then echo "NULL es verdad." fi # Nota /var/log/messages tiene que tener permisos (644) para que este funciona tail /var/log/messages > $filename echo "$filename contains tail end of system log." else echo "0 es falso." else cat /dev/null > $filename. command chaining. redirección #!/bin/bash filename=sys.log if [ ! -f $filename ] then touch $filename. then echo "No command-line arguments. echo "Cleaning out file." fi # Both code blocks are functionally identical." exit 0 .

-le (<=). -eq (==). Using expr: Arithmetic Operators #!/bin/bash echo Arithmetic Operators echo a=`expr 5 + 3` echo 5 + 3 = $a a=`expr $a + 1` echo echo a + 1 = $a echo \(incrementing a variable\) a=`expr 5 % 3` # modulo echo echo 5 mod 3 = $a -gt (>). -. therefore.' echo "If a > 10. *. -ne (!=) Logical Operators #!/bin/bash echo Logical Operators a=3 echo a = $a b=`expr $a \> 10` echo 'b=`expr $a \> 10`. -ge (>=).Aritmetica y comparaciones de cadenas #!/bin/bash a=4 b=5 # a y b puede estar tratado como enteros o strings. b = 0 (false)" echo b = $b b=`expr $a \< 10` echo "If a < 10. b = 1 (true)" echo b = $b ." echo "(string comparison)" fi echo Operadores Aritmeticas Arithmetic operators: +. / Arithmetic relational operators: -lt (<)... if [ $a -ne $b ] then echo "$a is not equal to $b" echo "(arithmetic comparison)" fi echo if [ $a != $b ] then echo "$a is not equal to $b.

exit 0 Letting let do some arithmetic #!/bin/bash let a=11 # Same as 'a=11' let a=a+5 # Equivalent to let "a # (double quotes makes echo "a = $a" let "a <<= 3" # Equivalent of let "a echo "a left-shifted 3 = a + 5" it more readable) = a << 3" places = $a" let "a /= 4" # Equivalent to let "a = a / 4" echo $a let "a -= 5" # Equivalent to let "a = a . # 'match' operations similarly to 'grep' b=`expr match $a [0-9]*` echo Number of digits at the beginning of $a is $b. # length: length of string b=`expr length $a` echo Length of $a is $b.5" echo $a let "a = a * 10" echo $a let "a %= 8" echo $a exit 0 . b=`expr match $a '\([0-9]*\)'` echo The digits at the beginning of $a are $b. # substr: print substring. # index: position of substring b=`expr index $a 23` echo Numerical position of first 23 in $a is $b. starting position & length specified b=`expr substr $a 2 6` echo Substring of $a.Comparison Operators #!/bin/bash echo Comparison Operators echo a=zipper echo a is $a if [ `expr $a = snap` ] # Force re-evaluation of variable 'a' then echo "a is not zipper" fi String Operators #!/bin/bash echo String Operators echo a=1234zipper43231 echo The string being operated upon is $a. starting at position 2 and 6 chars long is $b.

so this is just a sanity check) for i in /var/lock/subsys/*.init stop else /etc/rc.d/$subsys.d/init.d/$subsys.nl.d #!/bin/sh # --> Comments added by the author of this HOWTO marked by "-->". # --> It gets it from the lock file name.". that's proof the process has been running. then continue # Get the subsystem name. <miquels@drinkel.d/$subsys stop # --> Suspend running jobs and daemons # --> using the 'stop' shell builtin. do # --> Standard for/in loop. # --> This is the exact equivalent of subsys=`basename $i`. above. which.org> Bring down all unneeded services that are still running (there shouldn't be any. is the file name. but since "do" is on same line. [ ! -f $i ] && continue # --> This is a clever use of an "and list". fi done . if [ -f /etc/rc. if [ -z $1 ] # Standard check whether command line arg is present. equivalent to: # --> if [ ! -f $i ]. and since if there # --> is a lock file. from /etc/rc. # Check if the script is there.toupper: Transforms a file to all uppercase. then /etc/rc. # Bring the subsystem down.init ]. # --> it is necessary to add ".d/init. in this case. subsys=${i#/var/lock/subsys/} # --> Match variable name. # # # # --> This is part of the 'rc' script package --> by Miquel van Smoorenburg.d/init. then echo "Usage: `basename $0` filename" exit 1 fi tr [a-z] [A-Z] <$1 exit 0 Ejemplo Completo: killall. #!/bin/bash # Changes a file to all uppercase. # --> See the "lockfile" entry.mugnet.d/init.

Comandos complejos se puede construir. "subst aaaa bbbb carta. . # p. piping comandos de un conjunto de sed a comandos de awk.tar gzip $1.Backup of all files changed in last day #!/bin/bash # Backs up all files in current directory # modified within last 24 hours # in a tarred and gzipped file.tar exit 0 Wrappers para sed y awk Un script de sed o awk puede usar con la opcione -e sed -e {commands} awk -e {commands} Rs conveniente utilizar las listas de comandos en un script de bash para llamarlo más facil y utilizarlo más veces. -mtime -1 -type f -print` > $1." exit 2 fi sed -e "s/$viejo_patron/$nuevo_patron/" $nombre_fichero exit 0 . Example 2-3. wrapper #!/bin/bash # un script para quitar lineas en blanco de un fichero # Igual de (sed -e '/^$/d $1' filename) sed -e /^$/d $1 # '^' es el principio de la linea.`find . Ejemplo: un wrapper de script más complejo #!/bin/bash # "subst". '$' es el fin y 'd' es borrar.txt". if [ $# -ne 3 ] # Comprueba numero de argumentos then echo "Usage: `basename $0` viejo-patron nuevo-patron fichero" exit 1 fi viejo_patron=$1 nuevo_patron=$2 if [ -f $3 ] then nombre_fichero=$3 else echo "Fichero \"$3\" no existe. es un script que sustituye un patron para otra en un fichero.ej. if [ $# = 0 ] then echo "Usage: `basename $0` filename" exit 1 fi tar cvf .

Tema 5: Bash y Comandos Avanzada External Filters, Programs and Commands ls lista ficheros - muchos opciones hace muy potente; por ejemplo, el opción -R dar un listado arbol para la estructura de directorio Ejemplo: Utilizando ls para crear indice cuando CD burning
#!/bin/bash # Script para autimatizar burning uan CDR; con cdrecord # tiene que suid cdrecord (chmod u+s /usr/bin/cdrecord, como root). if [ -z $1 ] then IMAGE_DIRECTORY=/opt else IMAGE_DIRECTORY=$1 Fi

# directorio por defecto

ls -lR $IMAGE_DIRECTORY > $IMAGE_DIRECTORY/contents echo "Creando tabla de contenido." mkisofs -r -o cdimage.iso $IMAGE_DIRECTORY echo "Creando imagen con sistema de fichero ISO9660 (cdimage.iso)." umask fijar -v -isosize fichero por defecto para un usario cdrecord atributos de speed=2 dev=0,0 cdimage.iso # cambiar parametro de velocidad echo "Burning el disco." exit 0

Comando de Find find exec COMMAND COMMAND {}

xargs filtro para dar argumentos a comando. tambien herramienta para ensamblar comandos, compartiendo comandos en fuentes
ls | xargs -p -l gzip

gzips todos los ficheros en directorio actual, perguntando antes cada operación; xargs con -n XX opci\'on, limita numero de argumentos pasado a XX. Ejemplos con xargs ls | xargs -n 8 echo lista ficheros en directorio actual en 8 columnos; Ejemplo: fichero log utilizando xargs para monitorizar log de sistema

#!/bin/bash # Genera log en directorio actual desde /var/log #root chmod 755 /var/log/messages ( date; uname -a ) >>logfile # Time and machine name echo ---------------------------------- >>lo gfile tail -5 /var/log/messages | xargs | fmt -s >>logfile echo >>logfile echo >>logfile exit 0

Ejemplo de copiar directorio Ejemplo: copydir, copiar ficheros en directorio actual a otro utilizando xargs

#!/bin/bash if [ -z $1 ] # Exit if no argument given. then echo "Usage: `basename $0` directory-to-copy-to" exit 1 fi ls . | xargs -i -t cp ./{} $1 # Equivelente a la siguiente comando cp * $1 exit 0

Comandos Eval eval arg1, arg2, ...traducir en comandos los argumentos de la lista; que es útil para generar codigo con un script Ejemplo: Efectos de eval

#!/bin/bash y=`eval ls -l` echo $y y=`eval df` echo $y # Note that LF's not preserved exit 0

#!/bin/bash # Forzar log-off; buscar proceso de ppp y=`eval ps ax | sed -n '/ppp/p' | awk '{ print $1 }'` kill -9 $y # Restorar estado previo chmod 666 /dev/ttyS3 # Doing a SIGKILL on ppp changes the permissions # on the serial port. Must be restored. rm /var/lock/LCK..ttyS3 # Remove the serial port lock file. exit 0

Utilizando Expr expr arg1 operation arg2 ... utilizado para evaluador de expresiones general; concatenar y evaluar los argumentos de acuerdo con los operaciones dado. Operaciones puede ser aritmetica, compariciones, cadenas o l\'ogicas

expr 3 + 5 devuelve 8 expr 5 \% 3 devuelve 2 y=\`expr \$y + 1\` incrementa variable z=\`expr substr \$string28 \$position \$length\`}

Ejemplos utilizando expr

#!/bin/bash # Arithmetic Operators a=`expr 5 + 3` a=`expr $a + 1` # incrementa a=`expr 5 % 3` # modulo # Logical Operators a=3 b=`expr $a \> 10` b=`expr $a \< 10` # Comparison Operators a=zipper if [ `expr $a = snap` ] then echo "a is not zipper" fi # String Operators a=1234zipper43231 b=`expr index $a 23` b=`expr substr $a 2 6` b=`expr length $a` b=`expr match $a [0-9]*` b=`expr match $a '\([0-9]*\)'`

Expr y aritmetica let aritmetic operaciones con variables, pero menos complejo que expr
#!/bin/bash let a=11 let a=a+5 let "a <<= 3" # Equivalente de let "a = a << 3" echo "a dezplazdo a la izquierda 3 cifras = $a" let let let let "a "a "a "a /= 4" # Equivalente a let "a = a / 4" -= 5" # Equivalente a let "a = a - 5" = a * 10" %= 8"

exit 0

Comandos de sistema at comando para ejecutar un conjunto de comandos una hora determinada; versi\'on de cron at 2pm January 15} con opción -f, at lea lista de comandos desde un fichero y es muy útil en un script no interactiva ps lista de procesos ejecutando por dueño y PID; Ejemplo
ps ax | grep sendmail

batch paracido al comando \texttt{at}, pero ejecuta cuando el cargo de sistema es menor que .8; puede utilizar un fichero con opci\'on -f sleep equivalente a un bucle de \texttt{wait}

visualizando procesos \item[\texttt{tee}] útil para imprimir procesos tee |------> to file | ===============|=============== command--->----|-operator-->---> result of command(s) =============================== cat listfile* | sort | tee check.sleep 3 . Copiar un fichero de stdin/stdout. Posible conversiones son ASCII/EBCDIC. El comando dd puede copiar datos y imagenes de disco como floppies. puede usar para crear floppies de arranque dd if=kernel-image of=/dev/fd0H1440 sort ordenación diff comparición de ficheros. dd comando data duplicator. Ejemplo: Using cpio to move a directory tree #!/bin/bash # Copying a directory tree using cpio. intercambio de parejas de bytes entre entrada/salida.Espera 3 segundos. pero con conversiones.file Comandos para administración de sistemas . minuscula/mayusculo.file | uniq > result. diff file-1 file-2 patch aplicar parches patch -p1 <patch-file. if [ $# -ne 2 ] then echo Usage: `basename $0` source destination exit 1 fi source=$1 destination=$2 find "$source" -depth | cpio -admvp "$destination" exit 0 Ejemplo: tee .

Crear un fichero lock. Ejemplo utilizado con find #!/bin/bash exec echo "Exiting $0.2 (0x80000000) • • who demuestre todos los usuarios logged en sistema w demuestre todos los usuarios y los procesos que pertenece . necesita privilegios de root uname especificaciones de sistema (OS. controla el acesos a ficheros.• • • • • • • /etc/rc. reboot exec una llamada al sistema." # Exit from script.00s 40.95s 0.so. uname -a env ejecutar un script o programa con ciertos variables de entorno cambiadosin cambiar globalmente lockfile utilidad que es parte de procmail. this is a means of changing the system runlevel.so.so. echo "Still here?" exit 0 Montando Sistemas de Ficheros mount montar sistema de ficheros.6 (0x4000c000) /lib/ld-linux. usually done for system maintenance or emergency filesystem repairs. # The following lines never execute. /etc/fstab mount -t iso9660 /dev/cdrom /mnt/cdrom .6 => /lib/libc. útil para mandar un mensaje a todos los usuarios en el red. wall System going down for maintenance in 5 minutes! • • • fuser Identificar el proceso por pid que estan acesando un fichero logger poner un mensaje generado por el superusuario al log de sistema en /var/log/messages free demuestre memoria y uso de cache bash$ free total used free shared buffers Mem: 30504 28624 1880 15820 -/+ buffers/cache: 10640 19864 Swap: 68540 3128 65412 cached 1608 16376 • • • • • • • init padre de todos los procesos que esta llamada al final de arranque. (Ejemplo de un aplicación es protegir un carpeta de correo de cambiar por multiple usuarios) cron Administrative program scheduler. Kernel).versión extendido de who bash# w | grep startx olivieri pts/0 :0 6:42am 0.so. dispositivos o recursos.d los scripts de startup/shutdown demuestre el uso de estos comandos. runlevel demuestre runlevel actual y última halt.01s grep startx • wall write all. llamada desde /etc/inittab telinit Symlinked to init. ejecuta en fondo con /etc/crontab chroot Cambiar directorio de root ldd demuestra dependencias para fichero ejecutable bash$ ldd /bin/ls libc. shutdown.2 => /lib/ld-linux.

Tambien. Algunas de los expresiones más utilizadas son controladas por las siguientes caracteres: • .j. determinar los ficheros que son más grandes. • ^ matches the beginning of a line. El comando find puede ser conveniente (con el opción de -exec junto con el programa awk). . los aplicaciones sort y head puede ser util. except a newline.# Montar CDROM mount /mnt/cdrom # si /mnt/cdrom esta listado en /etc/fstab umount lsmod lista de modulos de n\'ucleo instalado insmod inserci\'on de modulo de kernel modprobe cargador de modulos depmod crea dependencias rdev obtener informaci\'on sobre cambios en dispositivos y/o swap Regular Expressions Los regular expressions son muy importante en el uso de Linux. abajo /home. negates the meaning of a set of characters • $ at the end of a an RE matches the end of a line. • \ escapes a special character. Con estos usuarios (ubicado p. Los regular expresiones consiste de un caracter que tiene un interpretación. • + matches one or more of the previous RE. • ? matches zero or one of the previous RE. • [] enclose a set of characters to match in a single RE. matches any one character. Ejemplos con scripting de bash y awk Ejemplo 1: Escribir un script en BASH que utilice el comando find para determinar los 10 usuarios que ocupa más escpacio de disco duro en su sistema. y estan utilizado para buscadas y manipulación de texto.

txt) do echo $i find /home/$i -type f -exec /bin/ls -ls {} '. determinar el proceso suyo que esta ejecutando con el maximum % CPU #!/bin/sh if who | grep $1 > /dev/null then { echo "$1 esta logged" ps aux | gawk -v user=$1 '$1 == user {print $0}' | sort -nr +2 | sed 1q } else echo "no esta" fi Ejemplo 3: Escribe un script con el comando awk que lea el fichero /etc/passwd. $6. Si esta en el sistema.txt for i in $(exec cat tmp. $10}' | sort -nr +1 | sed 4q done Ejemplo 2: Escribir un script de BASH para determinar si un usuario esta logged en el sistema." return 0 . then echo "No parameters passed to function.' | awk ' {using[$4] += $1 } END {for (name in using) { print name } }' | sort -nr +0 | sed 10q > tmp.#!/bin/sh find / -type f -exec /bin/ls -ls {} '. y sume e imprima el número total de todos los servicios con el GID menor que 500. Ejemplo de la estructura del fichero /etc/passwd: root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/adm: uucp:x:10:14:uucp:/var/spool/uucp: operator:x:11:0:operator:/root: #!/bin/bash cat /etc/passwd | awk 'FS=":" $4 < 500 {sum +=1} OFS="" END {print sum}' Funciones #!/bin/bash func2 () { if [ -z $1 ] # Checks if any params.' | awk ' {print $4.

" exit $RANGE_ERR fi fact () { local number=$1 # number must be declared as local # otherwise this doesn't work. exit 0 Recursion.else echo "Param #1 is $1. MAX_ARG=5 WRONG_ARGS=1 RANGE_ERR=2 if [ -z $1 ] then echo "Usage: `basename $0` number" exit $WRONG_ARGS fi if [ $1 -gt $MAX_ARG ] then echo "Out of range (5 is maximum). 'a' not visible globally." fi } func2 # Called with no params func2 first # Called with one param func2 first second # Called with two params exit 0 Funciones: Local variable visibility #!/bin/bash func () { local a=23 echo "a in function is $a" } func # Now. if [ $number -eq 0 ] . using a local variable #!/bin/bash # "factorial". see if local 'a' # exists outside function." fi if [ $2 ] then echo "Parameter #2 is $2. echo "a outside function is $a" # Nope.

then factorial=1 else let "decrnum = number .tgz tar -cZf $TGTD$OF $SRCD Ejemplos: Renombrar un fichero #!/bin/bash # renames." exit 0 Getting a Return Value En bash. el valor que devuelve el programa esta guardada en un variable especial \$? Ejemplo: Si el directorio no existe: #!/bin/bash cd /dada &> /dev/null echo rv: $? cd $(pwd) &> /dev/null echo rv: $? Ejemplos: Backups #!/bin/bash SRCD="/home/" TGTD="/var/backups/" OF=home-$(date +%Y%m%d). do src=$i tgt=$(echo $i | sed -e "s/$re_match/$replace/") mv $src $tgt done .1" fact $decrnum let "factorial = $number * $?" fi return $factorial } fact $1 echo "Factorial of $1 is $?.sh # basic file renamer criteria=$1 re_match=$2 replace=$3 for i in $( ls *$criteria* ).

A continuación se explica con más detalle cada uno de estos partes en el arranque del sistema. Resumen de booting El proceso de arranca del sistema operativo de Linux comienza con un proceso muy determinada. la siempre la mejor manera para obtener información práctica es con los Howtos.2. UPS HOW-TO. en una PC de IBM. Qué se programa en la ROM dependerá de la plataforma de hardware. En esta etapa. Otros Recursos Como siempre. disco duro primario para un programa de bootstrap. buscando en el floppy. hay un distintos pasos que deben realizar. Este paso también incluye un número de pasos que configuren los varios servicios necesarios para el sistema para trabajar. Antes de UNIX el sistema operativo puede arrancar correctamente.1. Encontrada una vez. Win95 + WinNT + Linux multiboot using LILO mini-HOWTO Rescue disk sets. el programa de la ROM debe ser bastante completo para resolver donde se almacena el programa bootstrap y cómo comenzar a ejecutarlo.2. requiriendo interacción para especificar: • • en que partición debe boot la máquina si arranca en modo single o multi-usuario Como mínimo pelado. Para administrar sistemas es importante entender los mecanismos de arrancar y cerrar un sistema operativo de Unix. En el hardware diseñado específicamente para el sistema operativo de UNIX (máquinas la DEC. Por ejemplo. booting consiste en los pasos siguientes: • encontrar el núcleo: el primer paso es encontrar el núcleo del sistema operativo. pero ésa es la sección siguiente. Cómo se alcanza esto es generalmente particular al tipo de hardware usado por la computadora. El primer paso en el proceso del booting una computadora de UNIX está descubriendo donde está el núcleo. el sistema operativo Unix es muy complejo. Boot disk HOW-TO.1 Encontrar el núcleo El núcleo proporciona un número de servicios esenciales que sean requeridos por el resto del sistema en para que sea funcional. Con respecto al proceso de arranque. el programa de la ROM comprueba el hardware en un manera predeterminada. las siguientes documentos puede ser util: HOW-TOs: BootPrompt HOW-TO. Introducción • • • Ser múlti-tarea. LILO Mini HOW-TO. el SUN etc) el proceso es más complicado. comienzan la mayoría de los procesos del sistema y a los demonios. Entonces. ROM La mayoría de las máquinas tienen una sección de la memoria sólo para leer (ROM) que contiene un programa que la máquina se ejecuta cuando se adelanta la energía primero. El programa de la ROM no tiene suficiente comlplejidad para saber donde está el núcleo o como ejecutarlo . puede ser comenzada.Tema-7: Proceso de Booting Linux 7. 7. The Linux Systems Administrator's Guide 7. • comenzar el núcleo: en este paso el núcleo comienza la operación y en detalle va a buscar todos los dispositivos de hardware que están conectados con la máquina • comenzar los procesos: todo el trabajo realizado por una computadora de UNIX esta hecho por procesos.

conf . Contiene simplemente el núcleo copiado en los primeros sectores del disco. The most common bootstrap program in the Linux world is a program called LILO. copiar el kernerl actual en el floppy con dd if=vmlinuz of=/dev/fd0 Utilizando un boot loader Tener un floppy de arranque para su sistema es una buena idea. Hacienda un disco de arranque El método más simple para crear un diskette que le permita boot una computadora de Linux es: 1. el primer floppy drive. Leer /etc/lilo. Este código se refiere como bootstrap. comienza el código en el sector del cargador para esa partición. login as root 3. El cargador examina la tabla de las particiones y identifica la partición activa. inserte una diskette en una computadora que funciona ya Linux 2. Jugando con sus ajustes del BIOS usted puede cambiar esta orden o aún evitar que el BIOS compruebe uno o el otro. Este programa bootstrap asume el control. Esto le significa no puede montar el disco blando del cargador sobre su máquina de Linux y leer el contenido del disco usando el ls y otros comandos asociados. El bloque de boot no es suficiente grande para contener un sistema operativo así que esta etapa intermedia es necesaria. or el primer disco duro. Booting de un floppy En una diskette bootable el programa bootstrap sabe simplemente para cargar los primeros bloques en el floppy que contienen el núcleo en una localización específica en memoria. Un floppy de boot para Linux no contiene un sistema de ficheros. cambiar el directorio a /boot 4. Se puede cambiar el orden cambiando parametros en el BIOS.El programa bootstrap El programa ROM ejecutará el código almacenado en el bloque del boot de un dispositivo (típicamente una impulsión de disco duro). Booting on a PC El BIOS en una PC busca generalmente un programa bootstrap en uno de dos lugares (generalmente en esta orden). El BIOS El BIOS carga el programa que está en el primer sector del elegido la impulsión y las cargas él en memoria. El primer sector en el disco contiene la primera parte del núcleo que sabe cargar el resto del núcleo en RAM. El programa bootstrap es responsable de localizar y de cargar (el comenzar) el núcleo del sistema operativo de UNIX en memoria. muy util cuando esta cambiando o compilando el núcleo con nuevas opciones.

crear el proceso 0 (swapper) y proceso 1 (init) El proceso del swapper es realmente parte del núcleo y no es un proceso "verdadero". el init realizará el resto del procedimiento de lanzamiento. Tiene siempre una identificación del proceso (PID) de 1. El núcleo del sistema operativo provee solamente los servicios que son utilizados por procesos. ¿Pero quién comienza el primer proceso? El proceso init es el último antepasado de todos los procesos del usuario en un sistema de UNIX. estos mensajes también se envían al archivo /var/log/dmesg Starting the processes • El núcleo se ha cargado y ha inicializado sus estructuras de datos y ha encontrado todos los dispositivos de hardware. En Linux. comprobar el hardware del sistema 3. La pregunta es cómo son estos otros procesos creados y ejecutados.Starting the kernel Cuando el LILO o el programa de ROM ha encontrado el núcleo de su sistema ¿Qué sucede durante el proceso de lanzamiento? El núcleo pasará con el proceso siguiente: 1. • Starting the processes: fork Un fork (bifurcación) crea un proceso que contenga las copias de las estructuras del código y de datos del proceso original. El proceso del init es el último padre de todos los procesos que se ejecuten en un sistema de UNIX. El nivel del funcionamiento controla qué servicios son comenzados (o parados) por el init . bloques de control de procesos y otras estructuras de datos necesitan ser inicializados 2. inicialice estructuras de datos internas read queues. exhibirá mensajes en la consola principal sobre lo que está haciendo. El proceso init se ejecuta por el núcleo del sistema operativo así que es el único proceso que no tiene un proceso pues un init del padre es responsable de comenzar el resto de los servicios proporcionados por el sistema de UNIX. verifique la integridad del sistema de ficheros 4. /etc/inittab especifica la configuración de init Run Levels El proceso init es también responsable para colocar la computadora en uno de un número de niveles del funcionamiento (run level). Kernel boot messages Cuando un núcleo de UNIX está booting. Una vez que el núcleo se haya inicializado. En un sistema de UNIX la única manera de que un proceso puede crear está por un proceso existente que realiza una operación de la fork. Los servicios que comienza son especificados por. Su sistema no puede hacer en esta etapa cualquier cosa.

sólo el sistema pequeño del núcleo procesa el funcionamiento. La acción dice a init cómo ejecutar el proceso.telinit Parametros de telinit telinit acepta un argumento: • 0 1 2 3 4 5 6: niveles de ejecución definida arriba. El proceso la trayectoria llena del programa o del shell script a ejecutarse. init examinan el archivo /etc/inittab para una entrada del initdefault del tipo. se utiliza el comando del telinit para cambiar actual del nivel del funcionamiento. Todos los sistemas de ficheros montaron. sin la compartición de ficheros remotos modo multiusos con la compartición de ficheros remotos. El script telinit es un soft link a init.(Nivel de Ejecución) Run Level 0 1 2 3 4 5 6 Pare la máquina Modo del solo usuario. Lo que sigue es un ejemplo /etc/inittab tomado de una máquina de RedHat con algunos comentarios agregados. Solamente conexión de la lata de la raíz. . Esta entrada determinará el nivel inicial del funcionamiento del sistema. • Q q Inidica que /etc/inittab ha cambiada y que es necesario reiniciarlo • S s Indica a init to a poner en modo de solo usuario El fichero /etc/inittab • • Es el archivo de la configuración para el init Cada línea corresponde a una sola entrada y está quebrada en cuatro campos los caracteres del identificador uno o dos para identificar únicamente la entrada. Debajo de Linux. realmente usado solamente por las escrituras Cuando los cargadores de un sistema de Linux. y demonios estado definible del sistema del usuario utilizado para comenzar X11 en cargador parada y reboot niveles de b c de un funcionamiento del ondemand s o S iguales que el modo single-user. modo multiusos. procesos. Qué sucede Cuando init primero se comienza determina el nivel actual del funcionamiento (en/etc/inittab con el initdefault) y después procede a ejecutar todos los comandos de las entradas que emparejan el nivel del funcionamiento. El nivel del funcionamiento indica el nivel del funcionamiento en el cual el proceso debe ser ejecutado.

2 las enumera y explica. . start X x:5:respawn:/usr/bin/X11/xdm -nodaemon El identificador El identificador: el primer campo. Cada terminal tendrá generalmente un archivo dispositivo con /dev/ttyXX dónde XX será substituido por un sufijo.d/rc 5 l6:6:wait:/etc/rc.d/rc.d/rc 0 l1:1:wait:/etc/rc. Un proceso mingetty se debe comenzar por el proceso del init.d/rc 6 # Things to run in every runlevel. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored.d/rc 1 l2:2:wait:/etc/rc. La tabla 10. ud::once:/sbin/update #call the shutdown command to reboot the system when the use does the #three fingered salute ca::ctrlaltdel:/sbin/shutdown -t3 -r now #A powerfail signal will arrive if you have a uninterruptable power supply (UPS) #if this happens shut the machine down safely pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure.#Specify the default run level id:3:initdefault: # System initialisation. System Shutting Down" # If power was restored before the shutdown kicked in. Es este sufijo que debe ser el identificador en archivo /etc/inittab Acciones El campo de la acción describe cómo el proceso será ejecutado. es un identificador único de dos caracteres.d/rc 2 l3:3:wait:/etc/rc. si::sysinit:/etc/rc.d/rc 3 l4:4:wait:/etc/rc. Shutdown Cancelled" Start the login process for the virtual consoles 1:12345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 If the machine goes into runlevel 5. cancel it. Hay un número de acciones predefinidas que deben ser utilizadas.d/rc 4 l5:5:wait:/etc/rc.sysinit #when first entering various runlevels run the related startup scripts #before going any further l0:0:wait:/etc/rc.

. Cuando se llaman estos runlevels no hay cambio en runlevel iguales que powerwait pero no esperan (refiera a la página del hombre para el powerokwait de la acción) ejecutado cuando el init recibe la señal de SIGINT (generalmente cuando alguien hace el Ctrl--alt--del Demonios y archivos de la configuración • • • • init es un ejemplo de un demonio. El método más aceptado para decir el init releer su archivo de la configuración es utilizar el telinit q releer su archivo de la configuración.. Ejercicios Agregue una entrada al archivo /etc/inittab de modo que exhiba un mensaje HOLA sobre su terminal actual (INDIRECTA: usted puede descubrir su terminal actual usando el comando del equipo teleescritor). Tome su sistema en el runlevel 5. Hay las maneras de las cuales usted puede decir a un demonio releer sus archivos de la configuración. Un método genérico. ¿Qué sucede? (haga solamente esto si usted tiene X Windows configurado para su sistema). que los trabajos más del tiempo. Cambie su sistema de modo que incorpore este nivel del funcionamiento cuando él los cargadores. Reanude su sistema y vea qué sucede. Tome su sistema en modo del solo usuario. . el init esperará hasta que se termina el proceso ejecútese siempre que se llamen los runlevels del ondemand (un b c). son enviar el demonio la señal de HUP.Acción respawn wait once boot bootwait off initdefault sysinit powerwait ondemand powerfail ctrlaltdel Descripción recomience el proceso si acaba el init comenzará el proceso una vez y esperará hasta que ha acabado antes de encenderse a la entrada siguiente comience el proceso una vez. Modifique la entrada del inittab de la pregunta anterior para exhibir el mensaje repetidas veces y. Esto no es un problema para el init. cambios a /etc/inittab no influenciarán la ejecución del init hasta la próxima vez que comienza. Para la mayoría de los demonios el primer paso en hacer esto es descubrir cuáles es el identificador de proceso (PID) del demonio. ¿Por qué? No es un problema para el init porque el init tiene siempre un PID de 1. Lea /etc/inittab cuando comienza la ejecución. cuando se incorpora el runlevel realice el proceso durante cargador del sistema (no hará caso del campo del runlevel) combinación de boot y wait no hace nada especifique el nivel del funcionamiento del defecto ejecute el proceso durante cargador y antes de cualquier entrada del cargador o del bootwait ejecutado cuando el init recibe la señal de SIGPWR que indica un problema con la energía.. Se utiliza el comando "wall" de exhibir un mensaje sobre los terminales de todos los usuarios.

loads any kernel modules. usado para hacer cualquier tareas específicas a su disposición local que no se hace en la disposición normal de SysV no siempre presente. system logging. accounting. utilizado realizar la configuración especial en cualquier puertos seriales . l0:0:wait:/etc/rc.d/rc 0 1 2 3 4 5 6 comprobación de la integridad de los sistemas de ficheros de la máquina usando el fsck. Puede utilizar el hostname del comando de UNIX para fijar y también para exhibir el hostname de su máquina. clearing out temporary files in /tmp and other locations. Examine su archivo del inittab para una entrada con el identificador c1. Ésta es la entrada para la primera consola.d rc. Startup scripts La mayoría de los servicios que el init comienza se comienzan cuando el init ejecuta las escrituras del comienzo del sistema.d rc4.d/rc. checking disk quotas. designating paging and swap areas.d rc init. sets the system clock. mail. Fuerce el init para releer el archivo del inittab y entonces para abrirse una sesión y para registrarlo hacia fuera en esa consola. fija el hostname de su sistema que cada computadora de UNIX tiene un hostname.d/rc l1:1:wait:/etc/rc. ¿Qué sucede? Configuración de sistema Hay un número de tareas que se deben terminar una vez durante el arranque de sistema que se debe terminar una vez. Cambie la entrada para c1 de modo que el campo de la acción contenga una vez en vez de respawn. networking.d/rc l6:6:wait:/etc/rc. funcione una vez en el tiempo del cargador para realizar pasos el funcionamiento pasado de la escritura.d/rc l2:2:wait:/etc/rc.serial Purpose directorios que contienen acoplamientos a las escrituras se ejecutan que cuando se incorpora un runlevel particular Un shell script que se pasa el nivel del funcionamiento. instala plug'n'play. activa las particiones del intercambio de su sistema . Filename rc0.d rc5.d/rc l5:5:wait:/etc/rc.d rc2.d rc6.d rc3. Estas tareas se relacionan generalmente con el configuración de su sistema de modo que funcione. Las escrituras del arranque de sistema son shell scriptes escritos usando la cáscara de bourne (éste es una de las razones que usted necesita saber el sintaxis de la cáscara de bourne).sysinit rc.Modifique el archivo /etc/inittab de modo que siempre que alguien haga el saludo de tres dedos (Ctrl-ctrl-alt-del-del) exhiba un mensaje en las consolas de todos los usuarios y no lo registre hacia fuera.d rc1. deletes old lock and tmp files.d/rc l3:3:wait:/etc/rc. La mayoría de estas tareas son realizadas por el script /etc/rc. cron and syslog. la pantalla que usted es encendido cuando usted primero comienza su sistema. Usted puede ver donde estas escrituras son ejecutadas mirando el archivo del inittab.d/rc l4:4:wait:/etc/rc.sysinit Es esta script que realiza las operaciones siguientes instala un camino de búsqueda en un fichero que sea utilizado por las otras scripts obtiene datos de la configuración de red. Contiene las escrituras reales se ejecutan que. Las escrituras en el directorio apropiado. Fija el dominio del NIS de las máquinas (si usted está utilizando uno) realiza un cheque en los sistemas de ficheros de su sistema gira contingentes del disco (si siendo utilizado).local rc. startin up system daemons for printing. mounting the file systems.

ext2. 2. conconsiste de más que un disco físico. mount [-t <fstype>] [-o <option>] <device> <directory> umount [-f] [<device>|<directory>] <fstype> puede ser uno de estos adfs. devpts. qnx4. romfs. 1. Montando un CD-ROM ls /mnt/cdrom mount -t iso9660 -o ro /dev/hdb /mnt/cdrom El CD-ROM puede ser /dev/hdc o /dev/hdd.Estructura física de un disco Discos dividido en particiones Tabla de partición: guarda información de cómo el disco esta compartido • • • Dispositivo. proc. smbfs. ntfs. hfs. hpfs. … se llama cabeceras porque un cabecera por lado hace lectura/escritura Cada lado/cabecera tiene tracks. coherent. 3. y utiliza dos lados Etiquetas de los lados 0. affs. autofs. sysv. ufs. or xiafs. efs. hace un enlace /dev/cdrom que apuntar al dispsitivo correcto . coda. minix. xenix. nfs. msdos. vfat. En este caso. iso9660. ncpfs. umsdos. and each track is divided into segments called sectors Montando Dispositivos Para bind un directorio a un dispositivo físico (como una partición o una CDROM) para poder leer el sistema de ficheros del dispositivo se llama montar el dispositivo.

Reparación Del Sistema de ficheros: fsck • • • • fsck significa file system check fsck escanea el sistema de ficheros. no preguntar al usuario Directorio lost+found • • • ./lost+found: fsck produce salida que se puede guardar en este directorio para estudiar Ejemplo: Si hacemos un chequeo de /dev/hda9.user noauto.ro. /home/lost+found. etc. /usr/lost+found.Ej.. va a existir directorios varios: /lost+found. Con un fallo de potencia) fsck [-V] [-a] [-t <fstype>] <device> Ejemplo: fsck -a -t ext2 /dev/hda1 No debe ejecutar fsck en un sistema de ficheros que esta montado -V produce salida verbose -a hacerlo no interactivo. /var/lost+found.user defaults mode=0622 1 1 1 1 1 0 0 0 0 0 1 2 2 2 2 0 0 0 0 0 Indica la partición Indica directorio Para montar Indica tipo De sistema de ficheros Opciones para montar . buscando y arreglando errores Causa: Errores podía ocurrir si el kernel esta parada antes de que el sistema de ficheros estaba desmontada pudía ser en la mitad de una operación de lectura que dejo el sistema en un estado no coherente (P. Montando Ficheros automaticamente con: fstab Para montar sistema de ficheros en el boot de sistema /dev/hda1 /dev/hda6 /dev/hda7 /dev/hda8 /dev/hda9 /dev/hda5 /dev/fd0 /dev/cdrom none none / /tmp /var /usr /home swap /mnt/floppy /mnt/cdrom /proc /dev/pts ext2 ext2 ext2 ext2 ext2 swap auto iso9660 proc devpts defaults defaults defaults defaults defaults defaults noauto.

loopback device: es un dispostivo que se puede usar como disk pero realmente apunta un fichero Ejemplos: 2 Situaciones – Crear un disco floppy disk con sistema de ficheros.Si contiene ficheros Orden para fsck forma abreviada del comando mount mount /dev/cdrom /dev/fd0 /dev/cdrom /mnt/floppy /mnt/cdrom auto noauto. • Utilizar directamente mount. noauto: no montar en el momento de boot RAM y dispositivos Loopback • • • RAM device: es un dispositivo que se puede usar como disco pero realmente apunta a un area física de RAM. pero con opciones . sin tener el floppy disco (dump más tarde con dd) – Guardar el sistema entero de Linux en un fichero de 500 MB (posiblemente ejecutar dentro de Windows) Formatting a floppy inside a file Para crear un floppy ext2 en un fichero 1440 KB dd if=/dev/zero of=~/file-floppy count=1440 bs=1024 losetup /dev/loop0 ~/file-floppy mke2fs /dev/loop0 mkdir ~/mnt mount /dev/loop0 ~/mnt ls -al ~/mnt Comando losetup Despues umount ~/mnt losetup -d /dev/loop0 Dump sistema al floppy dd if=~/file-floppy of=/dev/fd0 count=1440 bs=1024 Ficheros CD-ROM • Otra truco: mover todo del CD-ROM para accederlo rápido.user 0 0 0 0 user: usuarios puede montar estos dispositivos ro: solo lectura.ro.user iso9660 noauto.

LILO: es el prompt en el momento de boot Lilo contiene las siguientes paquetes /sbin/lilo /usr/bin/keytab-lilo boot/boot.b /usr/share/doc/lilo-<version> Kernel boot sequence • • • El núcleo tiene que ser cargado en memoria para empezar ejecutar Linux kernel esta comprimido – se auto.descomprime y empieza ejecutar boot viene del idea que necesita codigo para cargar otro codigo . called the boot sector of the master boot record or MBR – This piece of code is up to 512 bytes long and is expected to start the operating system – In the case of LINUX.b /boot/message /boot/chain. and hence lilo can optionally load and execute these partition boot sectors to start a Windows installation in another partition. the boot sector loads the file /boot/map. which contains a list of the precise location of the disk sectors that the LINUX kernel image (usually the file /boot/vmlinuz) spans It loads each of these sectors.dd if=/dev/cdrom of=some_name.conf .loop=/dev/loop0 some_name. thus reconstructing the kernel image in memory. y Booting • • • lilo significa linux loader. Then it jumps to the kernel to execute it • Booting partitions • • In addition to the MBR.b /boot/os2_d. Cuando el sistema de ficheros raiz esta montado. con fichero /etc/lilo. Inicializar hardware.iso /cdrom lilo.iso mount -t iso9660 -o ro. Montar el sistema de ficheros raiz en un partición 3. Master boot record • PCs begin life with a small program in the ROM BIOS that loads the very first sector of the disk into memory.bootstrap Secuencia de boot 1. initrd. lilo. 2. each primary partition has a boot sector that can boot the operating system in that partition. MS-DOS (Windows) partitions have this.conf y el comando lilo • Ejecutando el comando lilo como root. el núcleo ejecuta /sbin/init para empezar el sistema operativo UNIX Este es como vida de Unix comienza.

12-20 file Options Lilo • • • • • • • • • boot – Device to boot.5. They are mostly not needed in simple installations. image – A LINUX kernel to boot. Your startup scripts may reset this to 80x25-search /etc/rc. password – Require a password to boot.0. prompt – Display a prompt where the user can enter the OS to boot. timeout – How many tenths of a seconds to display the prompt (after which the first image is booted).38 label = linux-old root = /dev/hda6 read-only other = /dev/hda2 label = win table = /dev/hda Running lilo will install into the MBR a boot loader that understands where to get the /boot/map file. • • • • • • . restricted – Require a password only if someone attempts to enter special options at the LILO: prompt. lock – Always default to boot the last OS booted [A very useful feature which is seldom used. root – The root file system that the kernel must mount. append – A kernel boot option. Kernel boot options are central to lilo and kernel modules and are discussed in Chapter 42.2.conf file que se puede usar para boot tres particiones: Windows y dos particiones LINUX image = /boot/vmlinuz-2.– Parte de fichero tipico de lilo. vga – We would like 80x50 text mode. table – Partition table info to be passed to the partition boot sector. This makes the kernel load much faster.]. which in turn understands where to get the /boot/vmlinuz-2.2. compact – String together adjacent sector reads. label – The text to type at the boot prompt to cause this kernel/partition to boot. a Windows partition. read-only – Flag to specify that the root file system must initially be mounted read-only. other – Some other operating system to boot: in this case.17 label = linux root = /dev/hda5 read-only image = /boot/vmlinuz-2. It will most always be /dev/hda or /dev/sda.d recursively for any file containing `` textmode''.

initializing hardware • • • • • • last thing it does is mount the root file system. tenemos que tener otra metodo para boot • Un disco floppy que puede boot el sistema tiene que tener un imagen del nucleo.d/rc? .2. • 3 Full multiuser mode. . • 5X Window System Workstation (usually identical to run level 3). • 9 Undefined. or S En algunas sistemas los scripts tiene otras nombres /etc/rc. numbered run level 0 through run level 9. • 6 Reboot. which necessarily contains a program /sbin/init. without network file system (NFS).d/. • 4 Unused. init.d/SNNservice NN. it begins to execute. the (rather arbitrary) concept of a UNIX run level was invented The run level is the current operation of the machine.].el primer proceso • After the kernel has been unpacked into memory. • 7 Undefined • 8 Undefined.17 of=/dev/fd0 rdev /dev/fd0 /dev/hda5 Montar /dev/hda5 como el sistema de ficheros raiz Init . Start y stop . which the kernel executes init is one of the only programs the kernel ever executes explicitly init always has the process ID 1.Creando Discos de Boot Floppy • Si LILO esta ausente. When the UNIX system is at a particular run level. it means that a certain selection of services is running Runlevels • 1 Single-user mode. • 2 Multiuser... esto significa que para cargar el imagen a memoria dd if=/boot/vmlinuz-2. init begins at a particular run level that can then be manually changed to any other by the superuser • init utiliza scripts para comenzar o para runlevels – – • Scripts son: /etc/rc? /KNNservice o /etc/rc? . K.

d/rc 3 is to be run when entering run level 3.d/rc. es un script grande que esta – montando el sistema proc system.d/rc l5:5:wait:/etc/rc. 1:2345:respawn:/sbin/getty 38400 tty1 – This says to run the command /sbin/getty 38400 tty1 when in run level 2 through 5.d/rc l3:3:wait:/etc/rc.Ejemplo: cuando init cambia de runlevel 5 a 3 ejecuta scripts de /etc/rc3.sysinit – Ejecuta un script cuando boot para inicializar el sistema – El fichero /etc/rc.d/rc l6:6:wait:/etc/rc.d/rc l2:2:wait:/etc/rc.d/rc 3 – The first field is a descriptive tag and could be anything. cleans the utmp file. NIS domain. /etc/rc3. – respawn means to restart the process if it dies.d/ y /etc/rc5. si::sysinit:/etc/rc. and swap partition. as well as other things. – Normalmente 3 o 5.d/rc l4:4:wait:/etc/rc.d/rc. /etc/rc.sysinit. Este comando indica el runlevel que el sistema va a boot. you will see it merely executes scripts under /etc/rc? .d/rc.d/rc ud::once:/sbin/update 1:2345:respawn:/sbin/getty 2:2345:respawn:/sbin/getty 3:2345:respawn:/sbin/getty 4:2345:respawn:/sbin/getty 38400 38400 38400 38400 tty1 tty2 tty3 tty4 0 1 2 3 4 5 6 S0:2345:respawn:/sbin/mgetty -n 3 -s 115200 ttyS0 57600 S4:2345:respawn:/sbin/mgetty -r -s 19200 ttyS4 DT19200 x:5:respawn:/usr/bin/X11/xdm –nodaemom • • • • • id:3:initdefault: – Runlevel por defecto es 3. – The second is a list of run levels under which the particular script (last field) is to be invoked: in this case.d/rc has finished execution.sysinit l0:0:wait:/etc/rc. console font.d/S20exim stop id:3:initdefault: si::sysinit:/etc/rc. – If you view the file /etc/rc. – runs isapnp and depmod -a. host name. – This is the X Window System graphical login program.d/ para comenzar o parar servicios. l3:3:wait:/etc/rc. – initializes the keyboard maps. • .d/ as appropriate for a run level change. The wait means to pause until /etc/rc. x:5:respawn:/usr/bin/X11/xdm -nodaemon – This says to run the command /usr/bin/X11/xdm -nodaemon when in run level 5. ud::once:/sbin/update – This flushes the disk cache on each run level change.d/rc.d/rc l1:1:wait:/etc/rc.

which then prompts the user for a password The login program (discussed in Section 11. 4. Kernel initializes hardware. prompts for a login name and invokes the /bin/login command. • Type • linux 1 linux single • single-user mode when booting your machine. 8. The most noticeable effect of init running at all is that it spawns a login to each of the LINUX virtual consoles – • • consoles. Kernel executed.• • The most common way of shutting down the machine is to use: shutdown -h now which effectively goes to run level 0. It is normally invoked by init(8).7) then executes a shell. getty prompts for login. Kernel executes /sbin/init as PID 1. unpacks. . Kernel loaded from sector list. getty invokes the /bin/login program. say /dev/hda1. Kernel mounts root file system. Changing runlevels with lilo • can also specify the run level at the LILO: prompt. 9. 5. 6. You change to single-user mode on a running system getty Invocation • • getty opens a tty port. init executes all scripts for default run level. 2. and shutdown -r now effectively goes to run level 6. login starts shell. getty executes /bin/login to authentic user. It is the getty (or sometimes mingetty) command as specified in the inittab line above that displays this login Once the login name is entered. 11. Bootup Summary First sector loaded into RAM and executed-. When the shell dies (as a result of the user exiting the session) getty is just respawned. 10. init spawns getty programs on each terminal. 7.LILO: prompt appears. 3.

(en el caso de la tarjeta de sonido. esto pudo fijar parámetros.) .Tema-8 • • Unix Dispositivos UNIX fue diseñado para permitir el acceso transparente a los dispositivos de hardware a través de todas las arquitecturas de la CPU. tarjetas de sonido. Los archivos del dispositivo permiten el acceso al hardware. ect.) Dispositivos de bloque/carácter • Caracterizar dispositivos como: – Acceso aleatorio (discos y dispositivos de cinta) – Serial (como ratones. en el primer disco duro físico de su máquina • • /dev/hda se conoce como archivo del dispositivo. Prueba: cu -s 1200 -l /dev/mouse ¿Qué ocurre? Bajo nivel: los programas que tienen acceso a los archivos del dispositivo hacen dos maneras básicas – – Leen/escriben al dispositivo para enviar y para recuperar datos (como less y cat arriba). Escuchar la grabacion en altavoces. y todos se almacenan bajo directorio de /dev. En Unix todos los dispositivos sea accesible con la misma interfaz Ficheros de Dispostivos • El método que permitir que los programas tengan acceso al hardware aparece como ficheros Considera la siguiente: less -f /dev/hda /dev/hda no es un fichero! está leyendo realmente directamente. Tecla: cat /dev/dsp > mi_grabacion 2. probar la siguiente: cat /dev/mouse Otra experimento : 1. Si no tienes una tarjeta de sonido. Diga algo en el micrófono y tecla: cat mi_grabacion > /dev/dsp 3. Utilizan la función del ioctl de C (control del IO) para configurar el dispositivo. 4. Experimentos con /dev Imagina que tienes una tarjeta de los sonidos y que esta instalada hacemos la siguiente experimento: 1.

o Master secundario. La primera letra despues de hd indica el drive físico: • /dev/hda (3) Drive Primario.ej 1024bytes por vez) • ls -l /dev/hda demuestra una b (para indicar que es un bloque) brw-r----1 root disk 3. . /dev/hda1. 0 May 5 1998 /dev/sda Número mayor en este caso es 8. Su número dispositivo menor es /dev/sda (que es menor numero dispositvo 0: • Estos números son identificadores para el núcleo brw-rw---1 root disk 8.. – Magnetic card readers.Dispositivos Serie Purertos serie es para comunicación de bajo velocidad con 8 linea (o menos) cables. Cuando accediendo cualquiera de estos dispositivos (con less /dev/hda). • /dev/hdb (3) Drive Secundario. • Algunas dispositivos que utiliza comunicación serie: – Ordinary domestic dial-up modems. 3 Jul 18 1994 /dev/dsp ¿Porque se llama /dev/dsp? Números de dispositivos Mayor/menor • Los dispositivos se dividen en los sistemas denominadas los números de dispositivo mayor – Ejemplo: SCSI tiene número mayor de 8. – Mice and other pointing devices. – Se leen en unidades discretas (p. o esclavo secondary. mientras el número menor es 0 Nombres de dispositivos común Referencia completa de dispositivos: /usr/src/linux/Documentation/devices. por otra parte.. • /dev/hdd (22) Cuarto drive. discos duros común. etc. – Character text terminals.txt • /dev/hd?? hd es para hard disk. or Escalvo Primary. pero es para referir a dispositivos IDE . – Embedded microprocessor devices. el mismo byte no se puede leer por otro programa – Sonido /dev/dsp es un dispositivo carácter crw-r--r-1 root sys 14. estas leyendo desde disco físico comenzando en el primer sector del primer track y secuencialmente hasta la ultima track. • /dev/hdc (22) Tercer drive. 64 Nov12 2003 /dev/hdb • Dispositivos Carácter – Los dispositivos seriales. – Cash registers. o Master primario . – Printers. /dev/hda2. – Uninterruptible power supply (UPS) units. partición en el disco a. – Some permanent modem-like Internet connections. Bloque • Dispositivos Bloque – Dispositvios de acceso aleatorio se accede en bloques contiguos grandes de datos que se almacenan persistente. indica la primera y secundaria etc. están alcanzados un byte a la vez – Los datos se pueden leer o escribir solamente una vez • Ejemplo: después de que un byte se haya leído en su ratón.

/dev/sda1 es la primer particó del primer disco. /dev/scd? SCSI CD-ROM (Identical. Los dispositivos fd0 y fd1 autodetect el formato del floppy. /dev/ttyS0 es la primer puerto serie(COM1 en MS-DOS o Windows). /dev/fd? (2) Floppy disk. fd0 es equivalente a drive A: y fd1 a drive B: . son discos de gama alta ultilizada por servidores. These are called pseudo-TTYs and are identified by two lowercase letters and numbers. such as ttyq3. or /dev/hdc.5-pulgada floppies. /dev/cdrom A symlink to /dev/hda. /dev/pcd? Parallel port ATAPI CD-ROM.88 MB. /dev/pf? Parallel port ATAPI disk. /dev/hdb. /dev/pd? Parallel port IDE disk. formateado 3. /dev/sr? SCSI CD-ROM. dev/ttyS? (4) dispositivos serial numerado desde 0. these are mostly of theoretical interest. This is the terminal device for the virtual console itself and is numbered /dev/tty1 through /dev/tty63. This is a general-purpose SCSI command interface for devices like scanners. To nondevelopers. que dar acceso a 1. /dev/psaux (10) PS/2 mouse. /dev/tty? (4) Virtual console. /dev/fb? (29) Frame buffer.• • • • • • • • • • • • • • • • • • dev/sd?? (8) sd es el SCSI disk. /dev/sg? SCSI generic. sda es la primer disco física. /dev/mouse symlink a /dev/ttyS0 o /dev/psaux. /dev/tty?? (3) and /dev/pty?? (2) Other TTY devices used for emulating a terminal. pero se puede especificar una densidad más alta utilizando el nombre como /dev/fd0H1920. /dev/modem symlink a /dev/ttyS1o otra puerto que tiene /dev/cua? (4) Identico a ttyS? (ahora no utilizada). alternate name). This represents the kernel's attempt at a graphics driver. Enlaces definido localmente Sockets y tuberias . /dev/ttyI? ISDN modems. It can also be linked to your SCSI CD-ROM. etc.

• Si if= es ausente. Este comando esta escribiendo el imagen directamente al disco floppy. dd if=boot.El comando dd (disk dump) Es como cat. Como hicimos anteriormente en otras clases. En otras distribuciones puede llamar otra nombre. Duplicating a disk: si hay dos IDE discos que son de tamaño identicos y no estan montado dd if=/dev/hdc of=/dev/hdd copy the entire disk and avoid having to install an operating system from scratch. para crea un floppy de boot.img.img . dd lee de stdin Ejemplo: Creating boot disks from boot images. It doesn't matter what is on the original (Windows. Es un comando para leer/escribir mientras convertir data. LINUX. dd escribe a stdout. buscar el fichero boot. Sintaxis: dd if=<in-file> of=<out-file> [bs=<block-size>] \ [count=<number-of-blocks>] [seek=<output-offset>] \ [skip=<input-offset>] dd if=<in-file> [bs=<block-size>] [count=<number-of-blocks>] \ [skip=<input-offset>] > <outfile> dd of=<out-file> [bs=<block-size>] [count=<number-of-blocks>] \ [seek=<output-offset>] < <infile> Especificar un fichero de entrada y un fichero de salida • if= and of= options.img of=/dev/fd0 En RedHat se llama boot. • Si of= es ausente. or whatever) since each sector is identically duplicated Backing up con tar: usar tar para copiar cualquier dispositivo tar -cvzf /dev/hdd /bin /boot /dev /etc /home /lib /sbin /usr /var Utilizar multiples copias tar -cvMf /dev/fd0 /home/david . pero puede escribir/leer en bloques descretas.

/MAKEDEV -v fd1 . Entonces. Entonces. The mt command stands for magnetic tape and controls generic SCSI tape devices Ocultar salida Otra dispositivo de Linux. El comando /dev/MAKEDEV cd /dev . Considera el ejemplo de crear un dispositivo que exactamente como /dev/fd0 (utilizado para ver como funciona este comando). si no quieres ver salida de programas. entonces. para eliminar el contenido de un fichero: cat /dev/null > mifichero Creando Dispositivos en Linux Hay veces que tenemos que crear un dispositivo que no existe bajo /dev./MAKEDEV -v fd0 .Para SCSI tape. podemos acceder el floppy. ejecuta: mknod -m 0600 /dev/mi-floppy b 2 0 ls -al /dev/fd0 /dev/mi-floppy Con este fichero /dev/mi-floppy. añadir la redirección > /dev/null al comando Ejemplos: make > /dev/null Para ocultar errores. para que no hay mensajes a la pantalla. simplemente enviar el stderr tambien a /dev/null: make >& /dev/null make > /dev/null 2>&1 Este dispositivo tambien puede funciona al otra lado de la redirección. podemos rewind scsi tape 0 y archivar el directorio /home mt -f /dev/st0 rewind tar -cvf /dev/st0 /home tar traditionally backs up onto tape drives. que tambien vemos anteriormente en otras clases es el dispositivo especial /dev/null. Hay dos maneras para crear dispositivos: mknod o /dev/MAKEDEV El comando mknod: El sintaxis para utilizar mknod es la siguiente: mknod [-m <mode>] <file-name> [b|c] <major-number> <minor-number> donde b y c especifica si estamos creando dispositivos de bloque o de character. Este dispositivo se puede utilizar para ocultar la salida de un programa.

denominada LANs (para Local Area Networks) – Todas interconectado por enlaces de larga distancia Transmisión: • En un LAN. where the IP packet fits within the Data part of the frame. and each smaller packet will then have the Identification field set with that number and the Offset field set to indicate its position within the actual packet. A frame may. On the other side of the connection. . be too small to hold an entire IP packet. la media de transmisión no es un paquete. bits 4-15: Offset Time to live (TTL) Tipo Checksum Dirección fuente de IP Dirección destino de IP 20-IHL*4-1 Options + padding to round up to four bytes Data begins at IHL*4 and ends at Length-1 Conexiones: LANs Internet consiste de muchas redes pequeñas de alta velocidad.tamaño de cabecera divido por 4 Type of service (TOS): utilizado para mejorar rendimiento. however. the destination machine will reconstruct a packet from all the smaller subpackets that have the same Identification field. 1 kilobyte de data • Contiene una cabecera de 24 bytes o más que precede los datos Cabecera tiene nombre de destinación de envio Nombres de máquinas tiene un número de dirección Dirección IP es un número de 32-bits Bytes de una cabecera de IP Bytes 0 1 2-3 4-5 6-7 8 9 10-11 12-15 16-19 Descripción Los bits 0-3: Versión de IP (por el momento 4) bits 4-7: Internet Header Length (IHL) . Tamaño – Tamaño de todo el paquete incluyendo la cabecera Identificación bits 0-3: Flags. This group of smaller IP packets is then given an identifying number. pero tiene un tamaño para optimizar hardware – Tambien tiene cabecera y parte de datos Sobre Marcos( Frames) de Ethernet IP packets are encapsulated within frames. in which case the IP packet is split into several smaller packets.Tema-9: Introducción a IP Comunicaciones en Internet Nivel de Hardware: tarjetas de red network enviar paquetes (o datagrams) de data entre cada uno • Paquetes: aprox. es un Ethernet frame – frames son análogo a los paquetes.

0. una de red y otra de host Parte de red identifica el LAN Parte de host. – Siguiente 24 bits dar la identidad de la máquina dentro de LAN.255.255.0.254. Debido que un octet puede ser del rango 0 hasta 255. – Las 16 bits restantes espcifican la máquina Clase C: empieza 1 1 0 – Primer número es siempre entre 192 hasta 223 – Los siguientes 21 bits especifican el LAN – Los 8 bits restantes especifican la máquina • Direcciones IP Especiales • Algunas direcciones IP nunca estan utilizadas: – 192. • Clase B: empieza por 1 y a continuación un 0 – Primer número decimal es siempre 128 hasta 191.2.0 hasta 127.0.81.168. Source Length / Client MAC Preamble Frame MAC Type (2.0.0. una dirección puede ser desde 0.0.255 .0 hasta 255. – Las siguientes 14 bits dado es para especificar el LAN.255.168.255.255 Hay dos partes de la dirección. 152.255 • estan utilizada para comunicar con el host local: localhost –que es la propia máquina.1 se utiliza para loopback – 172.16.0 hasta 172.0.255 • son direcciones privadas para usa solo dentro de un LAN local que no comunica en Internet – 127.255. identifica un Máquina determinada en el LAN Clases de Direcciones IP • Clase A: empieza con el primer bit del red con 0 – direciones de Clase A siempre tiene un número < 128 – Siguiente 7 bits dar la identidad del LAN.0. 127.0 hasta 192.255.31.MAC Start Dest. Pad (0-p bytes) Frame Check Sequence (4-bytes) Un dirección IP en una forma para leer más sencillo es una notación con decimales y puntos: p.ej.Data (7-bytes) Delimiter Address Address bytes) (0-n (1-byte) (6-bytes) (6-bytes) bytes) • • • Un dirección de IP es 32 bits.

para la máquina Funcionamiento de LANs • Tarjetas de red envían una frame al LAN para que otros tarjetas de red puede leer este frame en el LAN.26.. Vamos a ver que hay un cierto sobrecargo de comunicación dentro de redes locales…. los que no pertenece.0. – Cada una es un interfaz de red. Transimisión esta gobernada por las tarjetas.0 hasta 10.255.255. – Colisiones puede ocurrir.0.158. etc. Todos los máquinas en este red van a tener un masquera de red: 255. eth2. la dirección de hardware del destino tiene que estar determinada del dirección IP antes de que un paquete esta enviada.26.158. 10.0. Este información se guarda en tablas Se produce retrasos si despues el hardware esta cambiado.255.. eth1.27. Una máquina particular puede tener una dirección IP 137. – Todos los tarjetas en el LAN puede ver este frame. entonces los interfaces son: eth0.• • son direcciones privadas adicionales para redes internos muy grandes.0 hasta 137.158. Cada frame tiene un dirección de destino.255. – – – Departamento X tiene una dirección de red 137. Mascaras de Red y Direcciones Ejemplo: • Universidad con dirección con Clase B – Tiene rango de IP entre 137. • • • • .0 hasta 137.27.158 Interfaces para conectar al LAN • Tarjetas de Ethernet tiene un interfaz en Linux con el nombre eth0 • Si hay más que una tarjeta.158. – Se hace con un protocolo: ARP (address resolution protocol) ARP: – – – Paquetes especiales estan enviadas para determinar direcciones de hardware que corresponde a determinada IP. no ignora frames que no estan dirigidas hacia ellos.0.158.158.254. Con cuidado con el red interno que selecciona.255.255.0. pero se envia el frame otra vez un momento despues Cada tarjeta tiene un dirección física: dirección de hardware (MAC) – 48 bits – Parte del número indica el fabricante.255 estan utilizadas para redes internos – enormes. – Dicide que un departamento X va a tener 512 para su propio direcciones: • Ellos tiene 137.

la tarjeta de red tiene su MAC: (hex bytes 00:00:E8:3B:2D:A2). (no importa de donde viene) Por ejemplo: – Paquetes que tiene dirección 127.168.168.255 Mask:255.0.3. – Cualquier paquete que viene a través de un interfaz esta analizada por el núcleo.0.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1359 errors:0 dropped:0 overruns:0 frame:0 TX packets:1356 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:11 Base address:0xe400 Link encap:Local Loopback inet addr:127.3. Para consultar la configuración: utiliza /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:00:E8:3B:2D:A2 inet addr:192.3.255 netmask 255.x tiene que ir al loopback • • .3.0.168.Configuración del Loopback • Primero: Crea el interfaz lo (si no existe) – Se llama el dispositivo loopback – No tiene nada que ver con ficheros de bloque /dev/loop? Es un tarjeta de red imaginario! – Utilizada para comunicar con la propia máquina – Si haces telnet a tu propio máquina.168.9 Bcast:192.0. aunque las interfaces están hechas.9 broadcast 192.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:53175 errors:0 dropped:0 overruns:0 frame:0 TX packets:53175 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 lo Se puede ver la dirección de hardware. estas conectando hacia el loopback.x.255.1 Para crear el interfaz de Ethernet: /sbin/ifconfig eth0 192. El comando ifconfig ( inter face configure) esta utilizada para configurar y hacer consultas al interfaces • • Para eliminar cualquier definición de interfaz existente /sbin/ifconfig lo down /sbin/ifconfig eth0 down Para crear el interfaz de loopback: /sbin/ifconfig lo 127. El núcleo examina la dirección de destino para determinar como encaminar el paquete. Routing • Tenemos que indicar al kernel como encaminar paquetes.255.255.0.0 La dirección broadcast es una dirección especial que todos los máquinas dar un respuesta.1 Mask:255.255.x.

0 0.168.0 gw <gateway-ip-address> \ <interface> Comando hostname • Se puede fijar el nombre de la máquina con el comando hostname: .0 netmask 0.0.255.255.0 netmask 255. Comando de route equivalente: /sbin/route add -net 0.0 lo agrega una ruta a la red 127.0 El dispositivo eth0 se puede configurar como la siguiente: /sbin/route add -net 192.0.0/255.168.255. En Linux/Unix. • Este ruta es el default gateway.0.3.0.0 Flags Metric Ref U 0 0 U 0 0 Use Iface 0 lo 0 eth0 Significa paquetes con la destinación 127.0.0 255.168.0.0.255.0 netmask 255.0.0 0.0 192.0.0 Tiene que esta enviada al loopback Y paquetes con 192.0.0.0 eth0 Consultar tabla de Route /sbin/route -n -n es para que route no imprime las direcciones IP como nombres de hosts Kernel IP routing table Destination Gateway 127.0/255.3.0. se puede enviar un paquete a una destinación de una máquina en el LAN.0 Genmask 255.'' Gateway es cero: no esta utilzada aquí Route y Gateways • • • En nuestra ejemplo la tabla ecamina paquetes con 127.0. y 192.0.0. • default significa todo lo demas direcciones.0.168.3. Ahora tenemos que indicar como encaminar todo lo demás direcciones.0.0.0.0. Forma general /sbin/route add -net <network-address> netmask <netmask> gw \ <gateway-ip-address> <interface> Forma normalmente utilizada: /sbin/route add default gw <gateway-ip-address> <interface> Agregar una ruta para todo los otras direcciones.Configuración de Routing /sbin/route add -net 127.3.0. que despues se forward a otro sitio – Este se llama GATEWAY.255.0 Se envia al eth0.0.255.

d/network stop ) /etc/init.0 BROADCAST=192.za GATEWAY=192.3.9 NETMASK=255.168.255.168. (no tiene que editarlo) Para “stop” y “start” networking (comenzar y apagar el interfaz de networking y routing) /etc/init.hostname cericon.3.255 netmask 255.255.co.1 /sbin/ifconfig eth0 192.0 netmask 255.3. • El fichero /etc/sysconfig/network-scripts/ifcfg-eth0 contiene: DEVICE=eth0 IPADDR=192.168.0.3.0.0.0 /sbin/route add -net 127.d/init.3.168.co.255.254 • • /etc/sysconfig/network-scripts/ifcfg-lo para el dispositivo loopback se configura automaticamente en instalación.cranzgot. ifcfg-eth1 puede contener la siguiente: .za Una resumen de todos los comandos en nuestra ejemplo es: Configuración de Scripts de inicialización • Cada distribución es un poco diferente: • Sistemas RedHat contiene el directorio /etc/sysconfig/.cranzgot.3.255.0 lo /sbin/route add -net 192.254 eth0 hostname cericon.3.cranzgot.255.255 ONBOOT=yes Son equivalente a todo lo que hicimos Anteriormente en nuestro ejemplo.9 broadcast 192.168. Estos ficheros se puede utilizar muchas opciones.d/network start ( /etc/rc.3.d/network stop ( /etc/rc. Se puede usar otras protocolos que no son de IP Estos son los configuraciones más comunes. El fichero: /etc/sysconfig/network NETWORKING=yes HOSTNAME=cericon.0.za • /sbin/ifconfig lo down /sbin/ifconfig eth0 down /sbin/ifconfig lo 127.168.168. ifcfg-eth1 (en directorio /etc/sysconfig/network-scripts/ ) para un dispositivo secundario Ethernet.0 NETWORK=192.255. Por ejemplo.0 netmask 255.0 eth0 /sbin/route add default gw 192.0.d/init.0. que contiene ficheros de configuración para iniciar networking.co.d/network start ) Leer directamente los ficheros de /etc/sysconfig/ • • Puede agragar.168.

1. hay que utilizar el pppd comando. – La dirección de broadcast 192.1.12 C • • • • ppp0: 192.168.255.168. eth0: eth0: 192. Ethernet de B esta configurado con el IP address de 192. do pppd lock local mru 296 mtu 296 nodetach nocrtscts nocdtrcts \ 192.128 B 192.1. uno en cada LAN.252:192. C.168.192/26. Para utilizar el enlace serial. – Usamos `` /26'' para indicar que solo los primeros 26 bits son los bits de dirección de red.168.253 /dev/ttyS0 115200 noauth \ lcp-echo-interval 1 lcp-echo-failure 2 lcp-max-terminate 1 lcp-restart 1 done Si fuera Ethernet (en el segunda tarjeta Ethernet). B.255 ONBOOT=yes Tiene que teclar cat "1" > /proc/sys/net/ipv4/ip_forward Para habilitar forwarding de paquetes entre los dos interfaces Ejemplo • Considera dos LANs distintos que tiene que comunicar • • Dos máquinas.168.168.1 NETMASK=255.168.63 . – máquinas X.2 con una default gateway de 192.1.1.1. – Máquinas B y C va a tener direcciones IP 192.1.168.255.4. A.168. • eth0: 192.1.168.25 A eth0: 192.168. estan enlazada por un metodo alternativo (por ejemplo con un linea serie Resumir con cinco máquinas: X.168.4.128/26.1 – Sirve como gateway al Internet.1.168.1.1. – No default gateway esta configurada hasta que se configura interfaz serial. – máquinas C y D forma el LAN 2 en el subred 192.0 NETWORK=192.1.168. y B forma el LAN 1 en el subred 192.168.13 D ppp0: 192. – Require un script para remplezar pppd si corte – The script for Machine B is: • #!/bin/sh while true .168.168.168. y D. mientras los demás son de los bits de host.DEVICE=eth1 IPADDR=192.0/26.168.1.1.4.168. A.168.168. respectivamente.1. – Es como un LAN independiente. Un enlace serial esta dentro máquinas B y C que forman otra LAN.1.129.252 y 192.1.1.0 eth0: 192.1.25 X Intern Máquina X tiene IP address 192.1.0 BROADCAST=192.253. .los últimos 6 bits iguala 1 Interfaz de ethernet de C esta configurado con una dirección IP 192. La red entre B y C es el subred 192.

do pppd lock local mru 296 mtu 296 nodetach nocrtscts nocdtrcts \ 192.168.255 255.168.168.252 broadcast 192.0.128 127.252 P-t-P:192.253 0.252 echo 1 > /proc/sys/net/ipv4/ip_forward Tabla de encaminamiento en máquina C: Kernel IP routing table Destination Gateway 192.0 192.1 Mask:255.255. – Este script se ejecuta cuando pppd iniciada la conexión – Esta en /etc/pppd/ip-up.192 192.0 eth0 lo ppp0 Link inet Link inet Link inet Gateway 0.0.1.168. si el enlace serial esta funcionando.0.0.192 255.168.255.1.255.255.1.0 Genmask 255.168.1.1.128 netmask 255.0.255.168.1.0.0 192.168.255.1.0 192.255.168.255 255.1 /sbin/route /sbin/route /sbin/route /sbin/route echo 1 > /proc/sys/net/ipv4/ip_forward La tabla y lista de interfaces de B es como la siguiente Kernel IP routing table Destination 192.192 gw 192.168.168.0 192.1.0.255.0 0.1 Genmask 255.255 255.0.0 0.0.0.0.168.0.168.0.0.0.1.192 255.255.255.252 0.1.1.0.0.192 255.0.255.255.63 Mask:255.255.255.0.1.1.0.168.255.255.0 192.0 192.0.0 0.0.0.0 127.0.1.255.0.0 Flags UH UH U U UG U UG Metric 0 0 0 0 0 0 0 Ref 0 0 0 0 0 0 0 Use 0 0 0 0 0 0 0 Iface eth0 ppp0 eth0 ppp0 ppp0 lo eth0 encap:Ethernet HWaddr 00:A0:24:75:3B:69 addr:192.255.192 dev ppp0 -net 192.255.168.255 255.2 Bcast:192.0.0.255.168.192 netmask 255.192 0.168.1.168.1.0 Flags UH UH U U U Metric 0 0 0 0 0 Ref 0 0 0 0 0 Use 0 0 0 0 0 Iface eth0 ppp0 ppp0 eth0 lo .255.192 • Routing en máquina B esta hecha con la siguiente script.255.1.168.0.192 dev ppp0 /sbin/route add default gw 192.0 0.168.0.0.0.255.0.1.128 0.0 0.129 0.255 netmask 255.255 En máquina C.192 encap:Local Loopback addr:127.168.1.255.252/26).192 netmask 255.1.0 encap:Point-to-Point Protocol addr:192.168.0.1.253 192.252 /dev/ttyS0 115200 noauth \ lcp-echo-interval 1 lcp-echo-failure 2 lcp-max-terminate 1 lcp-restart 1 done Y los routes con la siguiente /sbin/route del default /sbin/route add -net 192.255.168.0 0. que pppd ejecuta automaticamente cuando el interfaz ppp0 esta disponible del add add add default -net 192.192 255.255.168.168.253 Mask:255.0. ejecuta un script parecido #!/bin/sh while true .168.192 255.2 192.1.253:192.1.253 default gw 192.1.255. Entonces el script será /sbin/ifconfig eth1 192.255.Y un LAN entre B y C (con subred 192.1.1.255.0.255.0.

Tabla de routing para máquina A es: Kernel IP routing table Destination Gateway 192.168.1.255.128 192. Machine A.168.255 netmask 255.254.1.1 ms 64 bytes from 152.81: icmp_seq=1 ttl=238 time=764.9 ms 64 bytes from 152.2 127.1.255 Máquina D puede estar configurado como cualquier máquina en un LAN. 64 bytes from 152.168.0.1 Mask:255.81: icmp_seq=6 ttl=238 time=930.0.0 0.81: icmp_seq=2 ttl=238 time=858.1. y ICMP • ICMP significa Internet Control Message Protocol y es un paquete diagnostica que funciona en una manera especial: ping metalab.168.0.19.192 encap:Local Loopback addr:127.19.128/26 LAN.0.0 En este ejemplo: La misma interfaz puede comunicar con tres LANs que tiene 192.8 ms 64 bytes from 152.unc.5.0.3 ms 64 bytes from 152.168.1 broadcast 192.1.254.0.253 P-t-P:192.0 192.5.255.1.7 ms .9 ms 64 bytes from 152.168.168.168.0 Flags U UG U UG Metric 0 0 0 0 Ref 0 0 0 0 Use 0 0 0 0 Iface eth0 eth0 lo eth0 Interface Aliasing • • Aliasing: Muchas IPs en una tarjeta de red física Si tienes una tarjeta de red. 192.168.6.168.168.255.1.81: icmp_seq=0 ttl=238 time=1059.4.0 /sbin/ifconfig eth0:2 192. se puede poner más que un IP – Nombrar interfaz eth0:n.3.0.0.168.1 Genmask 255.252 Mask:255.255.0.6.168.255.4.19.1.254. TCP.168.255.1.0 0.255 netmask 255.6.0.0 192.0.0 UG 0 0 0 ppp0 eth0 lo ppp0 Link inet Link inet Link inet encap:Ethernet HWaddr 00:A0:CC:D5:D8:A7 addr:192.255.1.1.9 : 56(84) bytes of data.0 0.255.4.19.0.252 0.168.81) from 192.254.168.19. • tabla de routing tiene otra entrada para 192. Utilidades Ping: El comando ping es el utilidad de red más común.19.0.192 255.129 Bcast:192.255 netmask 255.0 encap:Point-to-Point Protocol addr:192.5.254.255.0. • Hay tres tipos de paquetes IP: UDP.0 192.0 0.255.0. tiene que saber como enviar paquetes a subred 192.168.81: icmp_seq=3 ttl=238 time=1179.1. donde n es de 0 hasta un numero grande entero – Utilizar ifconfig como antes – Habilitar este opción en el núcleo /sbin/ifconfig eth0:0 192.0.0.1 broadcast 192.edu PING metalab.255.6 ms 64 bytes from 152.19.192 255.168.0.0.255.168.255.254.0 /sbin/ifconfig eth0:1 192.129.254.unc.19.0. • Fijar el default gateway to 192.edu (152.254. 192.0.1 broadcast 192.0.128/26 a traves de máquina B.0.0.168.81: icmp_seq=5 ttl=238 time=1274.168.81: icmp_seq=4 ttl=238 time=986.255.168.191 Mask:255.

999 ms 5 cismpjhb.254.569 ms 780.5.144.saix.314 ms 45.qwest.unc.124.553 ms 689.veloxia.5 (192.unc.net (128.135 ms tcpdump tcpdump mira un interfaz particular para todo el tráfico que pasa – Todo el trafico de todos las máquinas conectada a la misma segmento de red.cr1.483 ms 1029.321 ms 6 cisap1.273 ms 454.254 (192.371 ms 17 atl-core-02.113) 580.197 ms 1.254) 48.164 ms 3 cranzgate (192.257 ms 21 unc-gw.48.ncren.37 ms se5-10% 8.za (160.105) 595.ms1.3) 600.168.592 ms 19 * * * 20 * * unc-gw.546 ms 898.4.gt. Ping envia un paquete cada segundo – mide el tiempo que tarda para recibir – En LAN local.70.net (128.oit. que contesta con un paquete ICMP.9.755 ms 595.posix.70. o con la opción -I .654 ms 7 saix.255.124.6) 187.531 ms 639.net (205.608 ms 13 204.net (196.256 ms 255.za (160.cw.064 ms 45.ncren.qwest.81).549 ms 173.124.net 0% 0.elda.124.109.net (205.net (205.inet.171.2) 889.201) 767.238) 497.193) 451.402 ms 325.5) 45. – Una tarjeta de red coge todo las frames que estan destinada a el – Tcpdump coge todos los frames.2.za (160.inet. sin importar su destinación tcpdump -n -N -f -i eth0 Trazado de ruta a 193.783 ms * * 15 * * * 16 * wdc-core-03.971 ms 893.net (166.net 0% 0.69) 779.942 ms 14 mae-brdr-01.182.posix.WestOrange. 30 hops max.net (196.165 ms 45.saix.251 ms 400.253. debe ser menus que un milisegundo.inet.qwest. España) Salto 1 2 3 Nombre de Host Pérdidas Latencia vlan2.87.54) 735.117 ms 46.130 desde Veloxia Network (Alicante.168.168.3.254) 1.190.174 ms * 11 corerouter1.0.171.1) 252.461 ms 789.558 ms 839.255.558 ms 186.14 ms .168.070 ms 726.1) 274.363 ms 639.25.576 ms 8 ndf-core1.10.unc.70.834 ms 147.net (205. paquetes ICMP para detectar routing traceroute to metalab.171.254) 46.4.19.veloxia.WestOrange.171.886 ms 71.3.10.243) 894.254.edu.co. ping es la primer prueba. en Internet puede ser hasta 2 segundos • Si ping no funciona: – El interfaz no funciona – DNS no funciona traceroute • • Traceroute es util para identificar donde ha estado un paquete Utiliza paquetes UDP.085 ms 1.24.net (204.inet.845 ms 698.112.edu (152.369 ms 12 core6.138) 490.elda.co.810 ms 784.205 ms 48.22.qwest.050 ms 2 192. 38 byte packets 1 192.2) 646.21.co.109.254.147.edu (152.030 ms 628.cw.170 ms 48.182 (204.posix.805 ms 9 ny-core. Para probar si un interfaz esta funcionando.000 ms * 22 * helios.25.Ping envia paquetes ICMP a metalab.795 ms 10 bordercore6-serial5-0-026.70.481 ms 730.182) 644.074 ms 4 cranzposix (160.33 ms fe1-0.2.168.472 ms * 18 atl-edge-05.190.Washington.cw.net (204.

031 ms 121.es cesga-router.red.152 ms 121.162) 121.00 ms 22.87.espanix.80.8.19 ms 23.147.248.438 ms 0.147.144.uvigo.87.282 ms 134. 40 byte packets 1 atl-svcs01 (205.243 ms 127.130) 146.010 ms 15.9.32.64.038 ms 16.223 ms 143.171.iber0% x.385 ms15 NAC.telia.369 ms 9 ldn-bb1-pos6-0-0.SO3-0-0.es 0% 8.net rediris-1.c.130 from atl-engr-01.206.000 ms 15.990 ms 5 jfk-core-03 (205.SO3-00.415 ms 3 dca-core-02 (205.net (213.337 ms 150.4 5 6 7 8 9 10 11 12 13 0.rediris.388 ms 150.248.70 ms 0.50) 16.rediris.telia.287 ms16 cesga-router.6) 150.21.net (213.EB-Santiago0.es (193.206.71 ms 9.437 ms 0.053 ms 16.359 ms 2 atl-core-02 (205.64.telia.78 ms 10.275 ms 143.EB0% IRIS4.6 0% -.247 ms17 193.net (213.171.171.079 ms 146.79 ms 10.6) 144.130).rediris.net (213.22) 143.EB0% Santiago0.601 ms18 * * *19 pcolivieri.red.154) 16.veloxia.109 ms 144.net ae0-300-mad1eg02.873 ms 19.tiscali.34) 143.896 ms 7 nyk-bb2-pos0-3-1.248.144.248.EB0% IRIS4.269 ms13 madb1-pos0-0.net (213.71.976 ms 4 dca-core-03 (205.275 ms 143.248.14 (213.red.ei.SO3-0-0.340 ms 20.84 ms Traceroute to 193.967 ms 19.230.es SO0-0-0.qwest.87.telia.452 ms 134.8.es (130.248.564 ms 168.net traceroute to 193.net (213.rediris.365 ms 20.rediris.348 ms 143.014 ms11 prs-bb2-pos1-1-0.217) 19.uvigo.894 ms 19.87.233 ms 121.092 ms 8 nyk-bb1-pos0-0-0.171.618 ms .70.166 ms10 ldn-bb2-pos0-0-0.telia.br1.214) 0.ip.171.151 ms 127.147.inet.net 0% ESP.133) 20.es 0% 193.ei.madrid.166) 127.248.net (213.179 ms 127.32.75.248.red.651 ms 0.248.995 ms 20.023 ms 6 jfk-brdr-02 (205.82.net ge-1-1-00% 2.204.telia.red.21.171.es NAC. posible 100% firewall -pcolivieri.30) 134.14) 127.190 ms 121. 30 hops max.telia.54 ms 20.17) 0.130 (193.desconocido.27 ms 23.48 ms 9.65.245) 20.366 ms14 dante-01354mad-val-i1.mad40.70.red.144.219 ms12 213.es (130.242 ms 127.rediris.133 ms 20.25) 19.240.384 ms 0.147 ms 20.6 (193.082 ms 147.32.147.89) 121.

– En ejemplo de servidor de web.Tema-10 Aspectos de TCP y UDP Comunicación con TCP Comunicación de TCP tiene tres etapas: – negociación – Transferencia – disconexión TCP: Negociación 1. – En lado remoto. El cliente contesta con un paquete SYN 1 Cliente App Connect() Kernel: 2.0<CR><NL><CR><NL>. SYN-ACK Remote Web Server TCP: Transferencia • • Programador utiliza funciones de llamadas send() o recv() C para enviar/recibir un flujo de bytes. 3. indicando si algunas partes del flujo estan ausente y require retransmisión – Communicación es full-duplex • Flujos en los direcciones simultaneamente. paquetes de contestación o (ACK paquetes) estan enviada cuando recibe paquetes. 4. El flujo de bytes estan en paquetes para enviar al aplicación remoto. web browser) inicia la conexión utilizando connect() 2. Aplicación de cliente (p. SYN packet 3.ej. los primeros bytes enviadas son la linea GET /index.html HTTP/1. El servidor de web contesta con un paquete de SYN-ACK packet (ACKnowledge). . El núcleo envia un paquete SYN (SYNchronization) al servidor de remota con TCP server (en este caso un servidor de web).

25.. • Puertos aleatorios estan seleccionada para salida en local máquina Ejemplo de Comunicación de Web: • En el caso de Web: puerto de destino es puerto 80.9 and dst 207. 18 Apr 2000 10:55:14 GMT Set-cookie: CNNid=cf19472c-23286-956055314-2. Connected to 207. GET / HTTP/1. 30-Dec2037 16:00:00 GMT.71. Ejemplo de un Sesión TCP • Utiliza telnet para ver intenta entrar en una máquina.168.71.25.3. path=/.71.0 Los primeros y últimas de este sessión estan aquí [root@cericon root]# telnet 207.com Last-modified: Tue. datagram packet socket tcpdump: listening on all devices • • Como en ejemplo de web.25.168.20. protocol ALL.20 ) or ( src 207.25. utiliza comandos de HTTP con el comando GET / HTTP/1. domain=.20 80 Trying 207.com</TITLE> <META http-equiv="REFRESH" content="1800"> <!--CSSDATA:956055234--> <SCRIPT src="/virtual/2000/code/main.71.cnn. expires=Wednesday. Escape character is '^]'.9 )' Kernel filter.0 200 OK Server: Netscape-Enterprise/2.3.71.20 and dst 192. 18 Apr 2000 10:55:14 GMT Content-type: text/html <HTML> <HEAD> <TITLE>CNN.com cnn.25.20. root@cericon]# host cnn.TCP: Disconexión: • Programador utiliza shutdown() y close() para terminar la conexión • Un paquete FIN se envia para que la comunicación TCP termina. Puertos Motivación: Queremos que muchas aplicaciones pueden comunicar Simultaneamente.0 HTTP/1..25.20 Tcpdump que indica selecciona los paquetes para todos los que tiene fuente ( src) o destino ( dst) o CNN.js" language="javascript"></SCRIPT> <LINK rel="stylesheet" href="/virtual/2000/style/main.css" type="text/css"> .01 Date: Tue. • Puertes Fuente/Destino identifica y distinguir flujos individuales. root@cericon]# tcpdump \ '( src 192. • El núcleo utiliza estos números de puertos en las paquetes que entra para determinar cual aplicación require estos paquetes.71.com has address 207.

co. 53204:54652(1448) ack 19 win 10136 <nop.timestamp 154031739 1075172823> (DF) 12:52:46.4064: .4064 > www1.com.nop.cranzgot.www > cericon.co.com.co.timestamp 1075173916 154032784> 12:52:49.com.nop.www > cericon.021465 eth0 < www1.www > cericon.<SCRIPT language="javascript" type="text/javascript"> <!--// if ((navigator.timestamp 154031689 0.timestamp 1075176765 154035634> .cranzgot.co.cranzgot.co.com.www: .cranzgot.4064: .co.timestamp 154035528 1075176560> (DF) 12:53:14.timestamp 1075176659 154035528> 12:53:14.cnn.timestamp 1075174202 154033068> 12:52:50.912706 eth0 > cericon.912561 eth0 < www1.timestamp 1075174262 154033131> 12:52:51. 19:19(0) ack 53204 win 30408 <nop.za.cnn.cranzgot.com.za.timestamp 1075174200 154033068> 12:52:49.com.timestamp 1075174295 154033165> 12:53:13.sackOK.3.4064 > www1.cranzgot.co.cnn.cranzgot.4064: .71.com.cnn.cranzgot.co.za.www: .za. 3420:4868(1448) ack 19 win 10136 <nop.www: P 1:17(16) ack 1 win 32120 <nop.4064: S 4182178234:4182178234(0) ack 2463192135 win 10136 <nop.cranzgot. tcpdump demuestra nombres no direcciones IP y www de vez de 80.com.964703 eth0 < www1.053628 eth0 < www1. 1:1(0) ack 1 win 32120 <nop. 19:19(0) ack 278 win 31856 <nop.cnn.co.722738 eth0 > cericon.www > cericon.cnn.cnn. protocol ALL.za. 19:19(0) ack 1972 win 31856 <nop.com.timestamp 154035615 1075176659> (DF) 12:53:14.nop.4064: . 58500:59948(1448) ack 19 win 10136 <nop. 19:19(0) ack 54652 win 30408 <nop.nop.4064 > www1.71.nop.nop.20 ) or ( src 207.706463 eth0 < www1.cnn.za.com.www > cericon.w scale 0 12:52:35.896639 eth0 < www1.com.cranzgot. 54652:56100(1448) ack 19 win 10136 <nop.nop.cnn.4064: P 1176:1972(796) ack 19 win 10136 <nop.nop.co.cnn.nop.cnn.com.za.com.cranzgot.co.com.za.413043 eth0 > cericon.nop.4064 > www1.887039 eth0 > cericon.cnn.4064 > www1.cranzgot. • • • En otra terminal.www: .25.com.168.nop.824143 eth0 < www1.www: .za. 1:1(0) ack 17 win 10136 <nop.4064: .cnn.timestamp 154032784 1075172823> (DF) 12:52:46.4064 > www1. The local ``random'' port in this case was 4064.platform=='MacPPC')&&(navigator.cnn.259870 eth0 > cericon.cranzgot.4064 > www1.3. datagram packet socket tcpdump: listening on all devices 12:52:35.908156 eth0 < www1.nop.za.cranzgot.za.timestamp 154033165 1075174202> (DF) 12:52:50.856919 eth0 > cericon.co.cnn.nop.cranzgot.nop.168.co.cnn.cranzgot. 59948:61396(1448) ack 19 win 10136 <nop.timestamp 1075174202 154033068> 12:52:50.com.4064 > www1.nop.timestamp 1075176765 154035634> 12:53:15.4064: P 1:278(277) ack 19 win 10136 <nop.co.za.www: P 17:19(2) ack 1 win 32120 <nop.www > cericon.www > cericon. [root@cericon]# tcpdump \ '( src 192.co.za.cnn.nop.www > cericon.co.com.com.www: S 2463192134:2463192134(0) win 32120 <mss 1460. 19:19(0) ack 58500 win 30408 <nop.nop.timestamp 1075172823 154031 12:52:35.25.nop. 278:1176(898) ack 19 win 10136 <nop.9 )' Kernel filter.www > cericon.nop.cnn.za.timestamp 1075176659 154035528> 12:53:14.cnn.za.886846 eth0 < www1.za.za.www: .cranzgot.964791 eth0 > cericon. tcpdump demuestra las paquetes que se intercambia.za.4064: .za.timestamp 154035634 1075176659> (DF) 12:53:15.co.com.4064 > www1.4064: .com.220067 eth0 > cericon.co.cranzgot.4064: .za.www: .nop.www > cericon.timestamp 154033068 1075173916> (DF) 12:52:49.467121 eth0 > cericon.160740 eth0 < www1.722584 eth0 < www1.www > cericon.20 and dst 192. 1972:3420(1448) ack 19 win 10136 <nop.cranzgot.9 and dst 207.timestamp 154033131 1075174200> (DF) 12:52:50.co.ap </BODY> </HTML> Connection closed by foreign host.co.cranzgot.cnn.

7.timestamp 154036184 1075176960> (DF) 12:53:20.co.cnn.za.co.4064: FP 64292:65200(908) ack 19 win 10136 <nop.cranzgot.za.za.co.www: .timestamp 154035895 1075176960> (DF) 12:53:20.za.4064 > www1. 62844:64292(1448) ack 19 win 10136 <nop.cnn. y 9 estan en etapa de negociación.940833 eth0 < www1. pero solo como identificadores y no concepto de flujo.cranzgot.co.com.www > cericon.www > cericon.co. Fichero /etc/services • Distintos tipos de servicios utiliza puertos estandares.timestamp 1075176864 154035732> 12:53:16.www: F 19:19(0) ack 65201 win 31856 <nop.www: .868095 eth0 > cericon.za.4064: .cranzgot.com. – tcpdump utiliza formato <Sequence number>:<Sequence number + data length>(<data length>) en cada linea para indicar el contexto del pauete dentro flujo – Sequence number. – Imprime la numero de sequencia relativa Linea 11 es cuando se tecla Enter la primera vez Linea 15 ha teclada Enter con una linea vacio. 19:19(0) ack 64292 win 31856 <nop. – Puertos estan utilizada en la misma manera de TCP. – en este caso 19 bytes.nop.co.cranzgot.com.nop. 19:19(0) ack 65201 win 31856 <nop.nop. El``ack 19''s indica cuando el servidor de CNN's ha recibida los datos.4064 > www1.timestamp 154035829 1075176864> (DF) 12:53:17.timestamp 1075176960 154035829> 12:53:17. entonces el servidor web fija este valor en todos los paquetes que se envia mientras nuestra son casi todos vacios Lineas 61 y 63 estan en la etapa de terminación • • • • User Datagram Protocol (UDP) • Comunicación fiable no es siempre necesario • Ejemplos: – Comunicación con servidores de nombres – Transmisión de voz (más importante eliminar retrasos) • Con UDP el programador envia recibe paquets individuales encapsulada dentro de IP.4064 > www1.za.com.za.cranzgot.timestamp 1075177315 154035895> 103 packets received by filter • • Explanación de Salida Linea 5.nop.4064 > www1.timestamp 154035732 1075176765> (DF) 12:53:16.nop. .www > cericon.4064: .esta elijido aleatoriamente. – Todos los servicios tiene definiciones para TCP como para UDP incluso si no existe comunicación con este metodo • Ejemplo No existe UDP para acceso con FTP.co.cnn.nop.4064 > www1.com.cranzgot.com.timestamp 1075176864 154035732> 12:53:16.www > cericon.com. 65201:65201(0) ack 20 win 10136 <nop.cnn.cnn.nop.523243 eth0 > cericon.521019 eth0 < www1.za. 19:19(0) ack 61396 win 31856 <nop.12:53:15.www: F 19:19(0) ack 65201 win 31856 <nop.867963 eth0 < www1.4064: .678439 eth0 < www1.nop.timestamp 154035895 1075176960> (DF) 12:53:17.za.cranzgot.co.cnn.www: .com.cranzgot. pero esta definida.nop. – Puertos 1 hasta 1023 estan reservadas para servicios y podemos asociar un nombre con ellos.410092 eth0 > cericon.cnn. 61396:62844(1448) ack 19 win 10136 <nop.cnn.896791 eth0 > cericon.co.521154 eth0 > cericon.cnn.com.cranzgot.

Debe autentificar el servidor para asegurar que no es un trojan 2. the POP3 service) en la siguiente manera: Verifica que . Trafico debe ser encriptada para que es imposible leer 3.e. Ejemplo de partes de un fichero /etc/services tcpmux echo echo discard discard systat daytime daytime netstat qotd msp msp ftp-data ftp fsp ssh ssh telnet smtp time time rlp nameserver whois domain domain mtp bootps bootps bootpc bootpc tftp gopher gopher rje finger www www 1/tcp 7/tcp 7/udp 9/tcp 9/udp 11/tcp 13/tcp 13/udp 15/tcp 17/tcp 18/tcp 18/udp 20/tcp 21/tcp 21/udp 22/tcp 22/udp 23/tcp 25/tcp 37/tcp 37/udp 39/udp 42/tcp 43/tcp 53/tcp 53/udp 57/tcp 67/tcp 67/udp 68/tcp 68/udp 69/udp 70/tcp 70/udp 77/tcp 79/tcp 80/tcp 80/udp # TCP port service multiplexer sink null sink null users quote # message send protocol # message send protocol fspd # SSH Remote Login Protocol # SSH Remote Login Protocol mail timserver timserver resource name nicname nameserver nameserver # resource location # IEN 116 # name-domain server # deprecated # BOOTP server # BOOTP client # Internet Gopher netrjs http # WorldWideWeb HTTP # HyperText Transfer Protocol Encriptación con TCP • El flujo de TCP se puede reconstruir – no es seguro! • Quisimos encriptar nuestro datos entre cliente y servidor • Encriptación debe tener siguientes propiedades 1.• Puertos debajo 1024 estan utilizada excusivamente para programas de root uid como mail. servicios web. Debe ser imposible modificar datos sin estar detectado.. – Programas de usuarios no se puede bind a puertos debajo 1024. – binding es como se reserva una puerto para escuchar para conexiones de entrada. Existe paquetes para este tipo de encriptación • • Ejemplo: queremos utilizar POP3 para recibir correo de un máquina remoto – Podemos verificar que POP3 esta funcionado haciendo log en el servidor de POP3 – Ejecutar telnet al puerto 110 (i. DNS.

localdomain. OpenSSH package. +OK POP3 localhost. Las siguientes comandos se ejecuta en el servidor de POP3: ssh-keygen -b 1024 -f /etc/ssh/ssh_host_key -q -N '' ssh-keygen -d -f /etc/ssh/ssh_host_dsa_key -q -N '' sshd • • Para crea un canal encriptado. Inicializar el demonio de sshd (Secure Shell).64 server ready QUIT +OK Sayonara Connection closed by foreign host.in> -l <user> -v -C es para comprimir Todo data donde <user> es el nombre de una cuenta de shell en el servidor POP3 Finalmente en la máquina cliente. Escape character is '^]'.doma. ejecutamos: telnet localhost 12345 . en este caso 12345: • telnet localhost 12345 Sshd Cliente 12345 Puerto para escuchar 2 Pop3d Server Ssh 12345:pop:110pop 110 ipop3d ssh -C -c arcfour -N -n -2 -L 12345:<pop3-server.localdomain v7.Pop3 esta ejecutando telnet localhost 110 Connected to localhost.doma. utiliza el cliente de ssh para log Quisimos escuchar en un puerto particular de TCP y despues encriptar todo el trafico hacia el puerto TCP remoto en el servidor – Se llama (encrypted) port forwarding En la máquina cliente elegir un puerto abritrario que no se usa para escuchar.in>:110 \ <pop3-server.

Los resultos son identicos! Porque la conexión POP3 viene de una cliente. En la máquina de servidor.Connected to localhost. +OK POP3 localhost. no sabiendo que origina de sshd.64 server ready QUIT +OK Sayonara Connection closed by foreign host. Escape character is '^]'.localdomain. .localdomain v7.

the application can try the next in turn. The configuration files that follow are taken from an actual installation. The application sends to the name server a query with the host name.0. and onion are the hosts that this machine has the most communication with.conf. A query is made with each of <domain1>. 2.10 192. 4. cericon. before trying the query. then the application.bind in it.168. A line search <domain1> <domain2> . or hosts that might need to be known in spite of name servers being down. and hence are listed here. You can list any hosts to which you want fast lookups. This just saves you having to type in the full host name for computers within your own organization.conf for a line nameserver <nameserver>. – No tiene relación con el demonio de servidor de nombres.3. va a hacer las siguientes procedimiento. 2.168.2. If the host name is unqualified.uvigo. This file will usually have a line order hosts. queremos que podemos asignar un nombre – – host name: and is usually less than eight characters and contains only lowercase letters and numbers (and especially no dots).es localhost cericon pepper onion The hosts pepper.conf. The application checks in the file /etc/resolv.es pepper. specifying that it should first ( hosts) check the local database file /etc/hosts. <domainN> may appear in the configuration file to facilitate this. – The following are equivalent to steps 1. with the details of the configuration files filled in.0. • 1.1 192.conf. appended in turn until the query successfully returns an IP. El nombre completo: unqualified_host_name . Para buscar un nombre de host. Groups of computers have a domain name.uvigo. The application checks the file /etc/host.9 192. 3. and /etc/resolv. If the application can get an answer directly from /etc/hosts.1 localhost. cericon is the local machine and must be listed. There can actually be three of these lines so that if one name server fails.168. The name server proceeds with the hierarchical queries described from step 4 onward. fully qualified host name Configuración de Máquina local • Los ficheros de configuración son: – /etc/host. <domain2> etc.conf. appends to the host name a local domain name. El fichero /etc/hosts 127. it proceeds no further.domain_name. The file /etc/hosts contains a plain text list of IP addresses and names. /etc/hosts.uvigo.. and then ( bind) query the name server specified in /etc/resolv.es onion. and 3 above. – Especificar como las aplicaciones en la máquina local va a resolver nombres direcciones IP numbers.Tema-11 Resolución de nombres y DNS Motivación: Aunque cada máquina tiene dirección..localdomain cericon. . An example is given below.3.

add each of the domains in turn to the host name.za''. – attempts Number of attempts to make before failing.1 nameserver 196. the next in the list will then be queried. nospoof Disallow results that fail the spoof test.za are the same machine. /etc/resolv.bind (or order hosts.co. The default is 2.cranzgot. search If given a host name with less than ndots dots (i. multi on Return more than one result if there are aliases. Always use search explicitly instead of domain to reduce the number of queries to a minimum. sortlist If more than one host is returned.) Once again. trim Strip the domain some. The point of having more than one is to safeguard against a name server being down. .za ct.za uct.domain from the end of a host name before trying a lookup. You will probably never require this feature.168.1 nameserver 160.co.0. options Various additional parameters can be specified in this one line: – ndots Explained under search above. domain The line `` domain ct.cranzgot. This option allows you to type in an unqualified host name and the application work out what organization it is belongs to from the search list.168. then sort that list according to the IP that has the most convenient network route. and an IP number can have several host names.cranzgot.) Or a machine that has several networking cards and an IP address for each. sort them according to the following network /masks..co.255.ac. it could mean that some machine is trying to make it look like it is someone it really isn't.domain spoofalert nospoof multi on reorder • • • • • • order The order in which lookups are done.131 search cranzgot.co. bind.e.e.za sortlist 192.conf order hosts.255. The default is 30 seconds.123.0/255. reorder If more than one IP is returned by a lookup.co.co. No more than three may be listed. The default is 1..0/255. – timeout How long to wait before considering a query to have failed. You should leave it as order hosts.nis if you are using NIS--search for the NIS-HOWTO on the web.za co. This is a hacker's trick called spoofing. Most applications use only the first value returned.cranzgot.cranzgot.za cranzgot. Consider a computer that might want more than one name ( ftp.41. multi off is the alternative. This means that a down name server will cause your application to wait 1 full minute before deciding that it can't resolve the IP.conf nameserver 192. You can have up to six domains. Don't try fiddling with this value. bind means to then go and check the /etc/resolv.0 options ndots:1 timeout:30 attempts:2 rotate no-check-names inet6 • • • • • nameserver Specifies a name server to query. do a query to find the name from the IP). It never seems to have any effect.76.2.conf which holds the name server query options.za and www.2.za'' is the same as `` search ct. trying a lookup with each. nis trim some.0 192. a host can have several IP numbers. Actually. 1 in this case). If this query does not return the correct result.168. spoofalert Try reverse lookups on a host name after looking up the IP (i./etc/host. spoofalert warns you of such attempts in your log file /var/log/messages.3.co. This option should always be turned on. but then queries would be time consuming.bind.255.255.

This has the ef. Common DNS Operational and Configuration Errors. URLs.– – – rotate Try the name servers in round robin fashion. RIPE-203. RFC-2317. Classless IN-ADDR.org/bind. Concepts and Facilities. This distributes load across name servers. is the determining of the host name from the IP address. inet6 The man page for resolv. Domain Name System Structure and Delegation. • • Top-Level Domains (TLDs) • • Para la estructura se adoptó en forma de árbol invertido. Documentos que existe para • Formulario de solicitud de Dominios RFC-1034. • A forward lookup is an ordinary lookup of the IP address from the host name. mentioned under nospoof.isc. no se le ha dado ningún nombre especial. Domain Names. Reverse Lookups • reverse lookup.ARPA delegation. RIPE-192. Implementation and Specification. Domain Names. RIPE-114. Paul Albitz & Cricket Liu. . http://www.conf ( resolver(5)) says: inet6 sets RES_USE_INET6 in _res. DNS & BIND 4th Edition.dns. RFC-1591. RFC-1912. The course of queries is similar to forward lookups using part of the IP address to find out what machines are responsible for what ranges of IP address. Taking care of your domain. Simple DNS configuration example. RFC-1035. Recommendations for DNS SOA values.options . no-check-names Don't check for invalid characters in host names. Use of DNS Aliases for Network Services. O'Really & Associates.html http://www.fect of trying a AAAA query before an A query inside the gethostbyname function.net/dnsrc/ Bibliografia. and of mapping IPv4 responses in IPv6 ``tunnelled form'' if no AAAA records are found but an A record set exists. RFC-2219. la raíz. a cada rama le corresponde un nombre alfanumérico Al nivel mas alto.

y constituyen el corazón del sistema de Internet.org Organizaciones de fin no lucrativo. contienen todos la misma información. cuando ya había instituciones y organismos de los cinco continentes y prácticamente de todos los países. – En este nivel se establecieron en principio 8 dominios genéricos (una especie de apellidos) que englobarían los diversos dominios según un esquema que dependía del tipo de institución que utiliza el nombre.mil Organismos militares USA • . el núcleo del sistema de nombres lo constituyen 13 ordenadores especiales repartidos por el mundo y controlados por la ICANN.fr Francia • . en este sistema telefónico mundial de ordenadores que es el sistema DNS. any bandwidth reseller. Con la explosión de Internet. • . y sus correspondientes direcciones IP. son los siguientes: • .uk Reino Unido • . Estos ordenadores. An Internet service provider (ISP). hubo que ampliar el sistema.com Empresas comerciales. el hecho de ser 13 es para repartir la carga de trabajo.net domain.nato Organización del Tratado del Atlántico Norte (OTAN/NATO).es España • .net Redes de ordenadores independientes pero conectados a Internet • . • . IT company.gov Gobierno (Organismos oficiales USA) • . Actualmente.edu Educacional (Universidades y colegios). Sin embargo su distribución no es muy homogénea: diez de ellos están situados en Estados Unidos.gi Gibraltar (con protestas por parte de España) • . y el contener todos la misma información permite que cada uno sirva de copia de seguridad a los demás.va Vaticano ICANN El organismo internacional que gestiona estos aspectos de Internet es el ICANN una de sus misiones es gestionar la concesión de nombres de dominio. que contienen tablas con los nombres de dominio y sus correspondientes direcciones IP de todos los 2LDs del mundo. • . In fact. TLDs ("Top Level Domain Names"). utilizando terminaciones que recordaran al país correspondiente. Los TLDs originales de ARPANET eran 4 a los que posteriormente se añadieron otros 4. denominados servidores raíz o también TNS ("Top Name Servers").int Internacional. por ejemplo: • .• Debajo de este están los nombres de dominio de alto nivel. or any company at all might have a . • . dos en Europa (Londres y Estocolmo) y el último en Japón .

63.Lista es de ftp://ftp.107 c.14. • Que es la secuencia de lookups para resolver este en una dirección IP address.0.net 192.root-servers.root-servers.net 128.net 128.uvigo.8.36.129 l.17 j.5.net 192.root-servers.203.0.112.uvigo.10 f.32. Algoritmo para DNS • La aplicación cheque un base de datos en la máquina local.net 198. en este caso esta guarda en cache local .12 d.4 b.] a.net 198.53 i.es?''.10 k.net 192.net 202.net 192.root-servers.root-servers.41.ei.90 e. – El proceso se llama host name resolution – El algoritmo que hace este operación se llama resolver.2.12.4.148.0.root-servers.33 Proceso de resolución de nombre • Imgaina que la aplicación tiene que resolver www.10.64.net/domain/named.36.root-servers.9.net 193.root-servers.33.0.internic. que imaginamos se llama ns. • La aplicación queries ns con `` www.root-servers.241 g.net 128.41.net 198. • ns determina si este IP estaba buscada recientamente. Si puede conseguir resolución de nombres.27.ei.root-servers.es.5. entonces para allí • La aplicación busca en un servidor de nombres (geograficamente cercana).230.root.root-servers.rs.12 m.root-servers.root-servers.net 192.4 h.

124.158.es primer1. ns www.ei. ns devuleve resultado al aplicación.uvigo.es? ns • • ns mira si el dominio es local.es primer1.uvigo. preguntando cual es el servidor de nombres responsable para uvigo. o Se contesta segundo.uvigo. ns guardar cada de estos resultados en un cache local con un fecha de vencimiento.uvigo.uvigo.es • ns quita la siguiente dominio más alta: uvigo.es.158.ei.es segundo.es de IP address 160.123.uvigo.28.1 pidiendo la dirección IP de www.128.ei. o La contestación es 160.rediris.www.rediris.es.176.rediris. o La contestación es hhh.ei.ei.123.112. para evitar buscarlo otra vez .1.es • • • ns queries 196.10. o Es el caso si ns es el mismo servidor de nombres para www. preguntando cual es el servidor de nombres responsable para es.posix.1 ns www.1.es ns quita el TLD (top level domain) es .128.uvigo.es con IP address 137.posix.es o queries 137. o Solicita al root name server.

es Configuración de BIND en RH9 • • Herramienta de configuración de Bind (redhat-config-bind) para configurar las zonas básicas del servidor de BIND en la versión 8 de BIND.ns www. La Herramienta de configuración de Bind requiere el uso del sistema X Window y acceso como root.rediris.uvigo. añádalos a /etc/named.posix. No edite el archivo de configuración /etc/named. – Si desea configurar determinados parámetros que no se pueden configurar usando la Herramienta de configuración de Bind.uvigo. vaya al Menú principal (en el Panel) => Configuración del sistema => Configuración de servidores => Servicio de nombres de dominio o escriba el comando redhat-config-bind en el intérprete de comandos (por ejemplo.ei.conf y los archivos de configuración de zona en el directorio /var/named cada vez que se aplican los cambios.es trevinca.es primer1.es segundo. – La Herramienta de configuración de Bind genera este archivo después de aplicar los cambios.ei.conf. • • • . La Herramienta de configuración BIND crea el archivo de configuración /etc/named.custom.uvigo. Para arrancar la Herramienta de configuración de Bind. en una ventana de terminal XTerm o GNOME).

una zona maestra inversa y una zona esclava. La Herramienta de configuración de Bind le permite agregar una zona maestra de redireccionamiento.conf y todos los archivos de zona individuales en el directorio /var/named.Herramienta de configuración de Bind • La Herramienta de configuración de Bind configura el directorio de zona predeterminado a /var/named. Tras agregar las zonas. La Herramienta de configuración de Bind también incluye una función de comprobación de sintaxis básica cuando se introducen los valores. seleccione Zona Maestra de Reenvío e introduzca el nombre de dominio de la zona maestra en el área de texto Nombre de Dominio. Aparecerá una nueva ventana como se muestra en la Figura con las siguientes opciones: . – Por ejemplo. Todos los archivos de zona especificados son relativos a este directorio. si una entrada válida es una dirección IP. el servicio named también volverá a cargar los archivos de configuración. Agregar una zona maestra de redireccionamiento • • Para agregar una zona maestra de redireccionamiento (también denominada maestra principal). puede editarlas o eliminarlas desde la ventana principal como se muestra en la figura • • Después de agregar.) en el área de texto. pulse el bótón Añadir. debe hacer click en el botón Guardar o seleccionar Archivo => Guardar para escribir el archivo de configuración /etc/named. También puede seleccionar Archivo => Salir y guardará los cambios antes de salir de la aplicación. el usuario solamente podrá escribir los números y el carácter de punto (. editar o eliminar una zona. Al aplicar los cambios.

La configuración crea una entrada similar a lo siguiente en el archivo /etc/named. de este modo. Después de configurar la Zona maestra de redireccionamiento. Se debe especificar un Nombre de servidor primario (SOA). $TTL 86400 @ IN SOA ns.example.zone. Número de serie — Número de serie del archivo de la base de datos DNS.com" { type master. Todos los valores son en segundos. – Desde el menú. Contacto — Dirección de correo electrónico del contacto principal de la zona maestra. Reintentar.com. Alias y Nombre del servidor. haga click en Guardar para escribir el archivo de configuración /etc/named.example. Expirar. Servidor de nombres primario (SOA) — Registro de estado de autoridad (SOA).conf: • • zone "forward. y Mínimo que se almacenan en el archivo de la base de datos DNS. serial 28800 . Registros . Este número irá aumentando cada vez que cambie el archivo. }.Agrega. refresh . escribir todos los archivos de zona individuales en el directorio /var/named y hacer que el demonio recargue los archivos de configuración. edita y elimina recursos de registros de tipo Host.conf. haga click en OK para volver a la pantalla principal como se muestra en la Figura. y al menos un registro de nombre de servidor se debe especificar haciendo click en el botón Añadir en la sección Registros. file "forward. Indica el servidor de nombres considerado como el mejor recurso de información para este dominio. los servidores de nombres esclavos de la zona podrán recuperar los últimos datos.localhost ( 2 . relacionada con /var/named. Configuración del tiempo — Los valores TTL (Time to Live) Refrescar.• • • • • • • • Nombre — Nombre del dominio que se acaba de introducir en la ventana anterior. También se puede aumentar manualmente si se pulsa el botón Configurar que se encuentra junto al valor Número serie.com. Está programado para el nombre de dominio y se le ha añadido .zone".example. La Herramienta de configuración de Bind incrementa este número cada vez que cambia la configuración. Nombre del archivo — Nombre del archivo de la base de datos DNS. root.

retry 604800 . Dirección IP — Los tres primeros grupos numéricos que acaba de introducir en la ventana anterior. haga click en Añadir y seleccione Zona maestra inversa.255. Servidor de nombres primario (SOA) — Registro de estado de autoridad (SOA). expire 86400 . Expirar y Mínimo que se almacenan en el archivo de la base de datos DNS. Configuración del tiempo — Se trata de los valores TTL (Refrescar. ttl ) IN NS 192. introduzca 192. – Por ejemplo. También se puede aumentar manualmente si se pulsa el botón Configurar que se encuentra junto al valor Número serie. Este número irá aumentando cada vez que cambie el archivo. con la siguientes opciones: 1.10. si está configurando el rango de direcciones IP 192.7200 . Reenviar. 7.0/255. 4.168. 6. Introduzca los tres primeros octetos del rango de direcciones IP que desee configurar. Dirección IP inversa — No se puede editar.1.1. de este modo. tal como se muestra en la Figura. Se completa automáticamente según la dirección IP especificada. Contacto — Dirección de correo electrónico del contacto principal para la zona maestra. Nombre de archivo — Nombre del archivo de la base de datos DNS en el directorio /var/named. Agregar una zona maestra inversa Agregar una zona maestra inversa • • Para agregar una zona maestra inversa.255.168. los servidores de nombres esclavos de la zona podrán recuperar los últimos datos. Indica el servidor de nombres considerado como el mejor recurso de información para este dominio. .168. 5.10 en el área de texto Dirección IP (primeros tres octetos) Aparecerá una nueva ventana. Número de serie — Número de serie del archivo de la base de datos DNS.0. 2. 3. La Herramienta de configuración de Bind incrementa este número cada vez que cambia la configuración.

com.conf: zone "10. . retry 604800 . • • Se debe especificar un Nombre de servidor primario (SOA) y al menos un registro de nombre de servidor haciendo click en el botón Añadir en la sección Nombre de servidores.8. serial 28800 . Por ejemplo.example.arpa. puede agregar 192.in-addr.in-addr.arpa" { type master. como mínimo. pulse en OK para volver a la ventana principal. one. Tabla de dirección inversa — Lista de direcciones IP que hay en la zona maestra inversa y sus nombres host. }.localhost ( 2 .10. • También crea el archivo /var/named/10.168. edita y elimina los servidores de nombres para la zona maestra inversa.example.1 en la Tabla de dirección inversa con el nombre de host one. un servidor de nombres.zone con la siguiente información: SOA ns.com. $TTL 86400 @ IN @ 1 IN IN NS PTR 2 IN PTR two. Servidores de nombre — Agrega. – La configuración creará una entrada similar a lo siguiente en el archivo /etc/named. Este nombre debe terminar con un punto (.192.com. expire 86400 .) para indicar que se trata de un nombre de host completo. y hacer que el demonio vuelva a cargar los archivos de configuración. root. ttk ) ns2.10. escribir todos los archivos de zona individuales en el directorio /var/named. para la zona maestra inversa 192.example.zone". tal como se muestra en la Figura.192.example.com.192.arpa. – En el menú desplegable.168. 9. seleccione Guardar para escribir el archivo de configuración /etc/named.168.conf.example.com. Después de configurar la zona maestra inversa. Se necesita. refresh 7200 .in-addr.168. file "10.168.

Es seguro debido que CD son read-only.portmap) This maps service names to ports.mountd rpc. Crea un fichero /etc/exports con la siguiente contenido: 192. – Una manera eficiente para una programa para llamar una función que esta en otra máquina • Se pude utilizar por cualquier programa que tiene necesidades de distribuido – NFS utiliza RPC.168. rpc.lockd . It is basically a network version of your /etc/services file. rpc. To get NFS working.lockd – (also sometimes called lockd) This handles shared locks between different machines on the same file over the network. portmap – (also sometimes called rpc.mountd – (also sometimes called mountd) This handles the initial incoming request from a client to mount a file system and check that the request is allowable. RPC significa Remote Procedure Call. the following programs may be located in any of the bin or sbin directories.nfsd rpc.0/24(ro) localhost(ro) /mnt/cdrom Formato de /etc/exports es simplemente una linea por cada directorio compartido. Client and server processes may request a TCP port number based on a service name. – RPC desarrollada junto con NFS por Sun Microsystems. • • • • RPC • Ejemplo de Configuración de NFS • Compartiendo un directorio con NFS requiere que DNS esta funcionando para ser capaz de buscar máquina – Se puede utilizar directamente las IPs • • Imagina que se comparte el CD-ROM con todo el LAN. These are all daemon processes. they should be started in the order given here. • A continuación se monta el CD-ROM como siempre mkdir -p /mnt/cdrom mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom Ahora comienza cada servicio de NFS en secuencia: portmap rpc. pero muchas otras programas utiliza CORBA (La versión de RPC orientada a objetos).1.Tema-12 NFS (Network File System) Demonios • Depending on your distribution. rpc. and portmap handles these requests.nfsd – (also sometimes called nfsd) This is the core--the file-server program itself.

On Debian. Tambien se puede reemplezar los procesos. or iso9660. vfat. Like most services. tail -f /var/log/messages tail -f /var/log/syslog • running in a separate console to watch for any error (or success) messages (actually true of any configuration you are doing).'' A faulty DNS is also indicated by whole-minute pauses in operation.d/nfs-kernel-server start .d/nfs start /etc/init. Note that it is not always obvious that NFS is failing because of a forward or reverse DNS lookup.localdomain este comando lista directorios y hosts que se puede acceder Here we perform the NFS mounting operation proper: mkdir /mnt/nfs mount -t nfs localhost:/mnt/cdrom /mnt/nfs • Para el comando mount la máquina remota es como un dispositivo . /etc/init. aunque su tipo es nfs de vez de ext2. similarly. RedHat's NFS implementation can be invoked simply with: • • /etc/init.d/nfs-common start /etc/init.168.d/nfslock start (or /etc/rc. – El nombre de host remota host sigue con “:” y el directorio en la máquina remoto y es relativo a nivel de root – Ftp. reason given by server: Permission denied.d/init. – Despues de montar.mount will not usually be more eloquent than the classic NFS error message: `` mount: <xyz> failed. probar con ls mkdir /mnt/nfs mount -t nfs cdromserver:/mnt/cdrom /mnt/nfs Diagnosticos: mirar en los logs. so double-check beforehand that these are working-.d/).0/24 localhost.• Cuando hace cambios al fichero /etc/exports debe ejecutar exportfs -r Utilizando el comando de exportfs sin opciones: /mnt/cdrom /mnt/cdrom 192.1. por ejemplo utiliza un sistema que defina un top-level directorio. Most distributions will not require you to manually start and stop the daemon processes above.

although the configuration should be identical. nfs-server and nfs-kernelserver. disables NFS's special treatment of root-owned files. Preferably uninstall all of these services if you are not actually running an NFS server. Many naive administrators create directory exports with impunity. You can actually put host names with wildcards also. – Depending on the versions of these implementations and the performance you require.0/24(ro) to specify that we want to give read. An example is: The man page for /etc/exports.za(rw) One further option.Access Permissions • Above.only access to a range of IP addresses. and any Internet server exposed to the Internet should never run the portmap or RPC services. it is worth understanding that the NFS server was originally implemented by an ordinary daemon process before the LINUX kernel itself supported NFS. no_root_squash is really only for systems (like diskless workstations) that need full root access to a file system. This option is useful if you are finding certain files strangely inaccessible. Although this is a technical caveat.trusted.mynet. exports(5). Debian supports both implementations in two packages.168. You are advised to at least check the status of the kernel NFS implementation on the kernel web pages.write access with. Of course.za(ro) /mnt/cdrom Then also allow read.co.1. • • .very. thus exposing those machines to opportunistic hackers. Kernel NFS • • • There are actually two versions of the NFS implementation for LINUX. no_root_squash. An NFS server should be well hidden behind a firewall.mynet. we used 192. say: /home *. contains an exhaustive list of options.net(rw. NFS as a client must necessarily be supported by the kernel as a regular file system type in order to be able to mount anything.mydomain.co. for example: *.mydomain. one or the other may be better.no_root_squash) Security • • • • NFS requires that a number of services be running that have no use anywhere else. / *.