Sunteți pe pagina 1din 86

ACSO: Administracin y Configuracin de Sistemas Operativos David Olivieri

Administracin y Configuracin de Sistemas Operativos Prof. Dr. David Olivieri Universidade de Vigo; ESEI, Ourense Edificio Politcnico, 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 programacin de scripting en Linux/Unix Configurar redes TCP/IP, configurar gateways, y acercar temas ms 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; Gestin de ficheros bsico: puntos de montaje, permisos, Programacin en Linux/Unix BASH, AWK y PERL: programacin con lenguajes scripting; sentencias de control: while, until, for, if, case; functions, variables "built-in"; condicionales, redireccin, tuberas, valores de "return"; comparison de cadenas Sistemas de Fichero Linux/Unix y configuracin Teora 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; Gestin 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 Configuracin de Hardware Resumen de arquitectura de microprocesadores ms 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; Configuracin 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 Configuracin de Hardware en Red Gestin impresoras y colas de impresin; imprime ficheros, monitorizacin 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, Initializacin, Shutdown, Niveles de ejecucin: 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 ejecucin o reboot. Teora, Estructura y Configuracin del kernel Linux Gestionar mdulos de kernel en runtime Conocimientos de mdulos cargables, incluye comandos: lsmod, insmod, rmmod, modinfo, modprobe. Involucra ficheros: /etc/modules.conf | /etc/conf.modules (* depende del distribucin *), /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 mdulos, reconfiguracin 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 Instalacin de Linux y Gestin de Paquetes: Instalacin de programas desde los fuentes (tarballs); /configure scripts y Makefiles; gestionar libraras compartido; determinar dependencias de programas; comandos: ldd, ldconfig. Introduccin a Redes; Teora 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 bsicas de TCP/IP: FTP, telnet, host, ping, dig, traceroute, whois; conocimientos de los tcnicas 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; configuracin de ficheros de bind; comandos incluye nslookup; Servicios de Redes: NFS, NIS, Samba ; Configurar y gestionar netd y servicios relacionadas ; servicios a travs 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; introduccin 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 Configuracin 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; Configuracin basica de apache; Modificar parmetros sencillos de configuracin de apache, start, stop y restart httpd, incluye para empezar servicio durante proceso de arranque; Configuracin de Web Proxy programa Squid. Aministracin y Configuracin utilizando metodos de Seguridad; Firewalls, PGP, transacciones seguros configurar y utilizar TCP wrappers para segurar el sistema, bits de SUID y setgid, administrar contraseas; Comandos ssh; Configurar seguridad del host: shadowed passwords, herramientas de monitorizacin: cops, saint, satan, nessus, quesso Metodos de Hacking/Cracking Virus y Antivirus Detecci\'on de Intrusiones. Windows 2000 Server Comparicin con Unix/Linux Servicios nivel de usuario y redes. Bibliografa online linux HOWTOs: http://www.cesga.es/ Guas del LDP (Proyecto de documentacin Linux); http://www.cesga.es/LDP Kernel Documentacin: 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 Ncleo 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;

Evaluacin

Concepto Practicas de Laboratorio Proyecto Practica

Descripcin Un conjunto de problemas cada semana. El alumno tiene que entregar resultado de este trabajo a largo del curso Un proyecto prctica se asigna a cada alumno. Este proyecto se evala al final de la asignatura. Consiste en parte de demostracin oral y un memoria tcnica Un examen de carcter terica.

% de Nota Final 30% 35%

Examen Final

35%

Caractersticas de Proyecto Prctica: Tema asignada por profesor Consiste de un realizacin de una memoria (mnima 15 pginas) y un presentacin al profesor. Plazas de entrega Consiste de 40% de nota final

Tema-1: Introduccin al Administracin de Sistemas


proporciona a los usuarios del sistema un entorno seguro, eficiente, y fiable realizar prcticamente cualuquier operacin; se denomina superusuario o \texttt{root} realizar tareas privilegiados (pueden cambiar los attributos de cualquier archivo, iniciar el sistema, hacer copias de seguridad). Tareas para sistema: administracin de cuentas, configuracin dispositivos, copias de seguridad, establecer politica, seguridad del sistema , registrar los cambios del sistema, servicio de consejo Tareas Administracin de Redes mejoras/evolucin: la mayora de las redes no se instalan de una vez toman parte de compras y decisiones, configuracin basica del sistema,manejo de perifricos, supervisin del sistema, actualizaciones de software LINUX Vamos a concentrar en Linux en esta asignatura: Documentos - HOWTOS (COMO) Obtener informacin en muchas maneras con Linux. Documentacin on-line en forma de HOWTOs es la mejor sitio para informacin Informacin tambin en info -f Sistema de archivos (Linux) /, /usr adonde reside la mayoria parte del sistema operativo reside en estos dos sistemas /bin programas ejecutables, conocidos como binarios /sbin binarios del sistema que se utilizan para administrar el sistema /etc contiene muchos de los archivos de configuracin del sistema /lib libraras compartidos /dev archivos de dispositivos /proc un sistema de archivos virtual que se utiliza para leer informacin 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. /var contiene archivos que tienen tendencia a cambiar de tamao con el tiempo. /usr contiene varios subdirectorios, que a su vez contienen los programas ms importantes en el 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 miscelneos de configuracin /usr/includelos archivos include (cabaceras) para el compilador C. /usr/g++-include includes para el compilador C++ /usr/lib libraras para los programas /usr/man diveras pginas del comando man /usr/src cdigo fuente de distintos programas /usr/local est asignado para personalizaciones locales del sistema.

Dispositivos utilizados ms frecuente /dev/console hace referencia a la consola del sistema /dev/hd la interfaz de dispositivos para la unidades de disco duro IDE; /dev/hda1 la primer particin, /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. /dev/ttyS se corresponde con COM1 bajo MS-DOS. (con un ratn serie, /dev/mouse es un enlace simblico al dispositivo correspondiente al ttyS que est conectado el ratn) /dev/cua se utilizan con mdems /dev/null un dispositivo muy especial. /dev/null es esencialmente un agujero negro. Esto puede ser muy til si se quiere ejecutar un comando y no se necesita ni la salida estndar ni los errores estndar. Sistema de Archivos El sistema de discos y mecanismos que hacen que los discos estn juntos el sistema de archivos lgico que ve y manipula el usuario. Cuatro tipos bsicos de archivos: (1) archivos normales , (2) directorios, (3) enlaces y (4) archivos especiales Directorios son archivos que contienen los nombres de archivos y subdirectorios, as como punteros hacia esos archivos y subdirectorios a cada archivo se le asigna en Linux un nmero nico llamada inode, que se almacena en una tabla (que se llama tabla de inodes) que se asigna cuando el disco est formateado. Cada disco fsico o particin tiene su propia tabla de inodes inode contiene tabla todo la informacin sobre un archivo, incluyendo la direccin de los datos en el disco y el tipo.

Enlaces los enlaces normales no son archivos en absoluto, sino simplemente entradas de directorio que sealan al mismo inode. La tabla de inodes sigue la pista de todos los enlaces que hay con un archivo y slo 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 simblico}, 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 indicacin del archivo enlazado.

Archivos Especiales el comando tty informa del nombre del dispositivo del C terminla con el que actualmente est trabajando o prueba si la entrada estndar es un terminal los terminales e impresoras se denominan dispositivos especiales por caracteres

Permisos de los archivos Aunque los permisos deciden quien puede leer, escribir o ejecutar un archivo, tambin deciden el tipo de archivo y cmo se ejecuta el archivo.
olivieri@pcolivieri olivieri]$ ls -tl *.rpm -rw-r--r-1 olivieri users 2949328 Sep 26 19:46 openmotif-2.1.301_IST.i386.rpm -rw-r--r-1 olivieri users 2623882 Sep 15 20:07 Mesa-3.2-2.src.rpm -rw-r--r-1 olivieri users 9678627 Sep 7 18:21 ForteCE-FCS-1_0_1.noarch.rpm -rw-r--r-1 olivieri users 39740896 Sep 7 14:38 j2sdk-1_3_0-beta_refreshlinux.rpm

la primera columna muestra los permisos del archivo la segunda columna muestra el nmero de enlaces la tercera muestra el propietario del archivo la cuarta columna muestra el grupo al que pertenece la quinta muestra el nmero de bytes la sexta muestra la fecha y hora de creacin la sptima el nombre del archivo La columna de permisos -rw-r--r-Tipo de ficheros (primeros 16 bits): (1000) Ordinario, (0100) Directorio, (0010) Especial modo carcter, (0110) Especial modo bloque, (0001) FIFO, (1010) Enlace simblico, (1100) socket U G S (SETUID, SETGID, SETSUID) usuarios: (100) r, (010) w, (001) x grupo: (100) r, (010) w, (001) x otros (todos): (100) r, (010) w, (001) x

Comando chmod Este comando cambia la modalidad de los archivos, que es la contral por permisos de acceso asociados con ellos. Linux tiene tres niveles deseguridad: propiedad, acceso de grupo, y todos los dems.

NAME chmod - change file access permissions SYNOPSIS chmod [OPTION]... MODE[,MODE]... FILE... chmod [OPTION]... OCTAL-MODE FILE... chmod [OPTION]... --reference=RFILE FILE...

Directorios El concepto de directorio: cuando se entra en el sistema, ste le coloca en su directorio inicial. La variable PATH se establece para sealar a otros directorios que contiene programas ejecutables. Los comandos de manipulacin de archivos pueden agruparse en dos categoras principales: comandos que manipulan archivos como objetos, 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. Se puede copiar de un archivo a otro o de una lista de directorios a un directorio mv renombra un archivo, mueve un archivo a un nuevo directorio o ambas cosas mv tambin le permite renombrar un directorio cat concatena y mostrar un archivo. less un paginador de archivo de uso general, similar a more. more es un paginador de uso general

Bsqueda de archivos Se puede utilizar el comando find para encontrar ficheros tienen tres partes: (1) dnde buscar, (2) qu buscar y (3) qu hacer cuando se encuentre pueden contener texto, cdigo fuente en C, archivos de orden shell (programas interpretados), programas binarios ejecutables (vease find)
find [-c][-z][-L][-f -a archivo][-m mec] lista\_archivo NAME find - search for files in a directory hierarchy SYNOPSIS find [path...] [expression]

Ejemplo:
find /home/olivieri/Asignaturas/ACSO -type f -exec /bin/ls -ls {} ';'

Tema 2: Bash Scripts


2.1 Fundamentos de los shells de Linux El intrprete de lnea de comandos de Linux se llama el shell Capa de insulacin entre sistema operativo y el usuario Lenguaje poderoso; 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, (2) construcciones de condicionale, (3) funciones de shell, (4) funciones built-in Porque Scripts? Script importante para administracipn y configuracin Por Ejemplo: Linux arranque: ejecuta el shell scripts en el directorio de /etc/rc.d para restorar el configuracin de sistema y iniciar los servicios. sintaxis es como pegando comandos junto. un manera rpido para hacer prototipos. Cuando no debe usar scripting tareas intensivas de los recursos, velocidad es importante aplicaciones complejos - programacin estructurad es importante tratamiento de ficheros; E/S intensivo necesidad de generar o tratar con grficos 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 ms sencillo, el script es solo una lista de comandos guardado en un fichero. Por ejemplo, limpiar ficheros en /var/log
# limpiar # Ejecuta como root cd /var/log cat /dev/null > messages cat /dev/null > wtmp echo "Log limpia."

Un ejemplo de un script ms complicado es la siguiente. (Tenemos que estudiar distintos elementos de este script)

#!/bin/bash # cleanup, 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. Default number of lines saved. Can't change directory? Non-root exit error.

if [ "$UID" -ne "$ROOT_UID" ] then echo "Must be root to run this script." exit $E_NOTROOT fi if [ -n "$1" ] # Test if command line argument present (non-empty). then lines=$1 else lines=$LINES # Default, if not specified on command line. 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." exit $E_XCD fi # Doublecheck if in right directory, before messing with log file. tail -$lines messages > mesg.temp # Saves last section of message log file. mv mesg.temp messages # Becomes new log directory. cat /dev/null > wtmp # echo "Logs cleaned up." exit 0 ': > wtmp' and '> wtmp' have the same effect.

Un valor cero desde el script cuando exit indica exito. el simbolo #! en primer linea indica que el fichero es listo para un conjunto de comandos. En realidad es un nmero magico de dos bytes que indica el tipo de fichero. 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.2 Operaciones Basicas Dentro de operaciones bsicas que estamos interesados: caracteres especiales, variables y parametros, quoting, estatus de salir. En este apartado, investigamos estas posibilidades. Caracteres Especiales \# Comentarios ; Separador de Comandos. Permite dos o ms comandos, echo hola; echo buenos ;; Terminador de sentencia case [Double semicolon] Considera la siguiente ejemplo:
case "$variable" in abc) echo "$variable = abc" ;; xyz) echo "$variable = xyz" ;; esac

En esta ejemplo, utilizamos full quoting. Si tenemos 'STRING' preserva todos los caracteres especiales dentro de STRING. El operador coma: El operador coma enlace operaciones aritmeticas; para que todos estan evaluadas, pero solo se devuelve el ltimo

let "t2 = ((a = 9, 15 / 3))"

# Set "a" and calculate "t2".

Expansion de variables y Sustitucin de subcadenas. La combinacin :> (: con el operador de redireccin >), se puede poner el tamao de fichero a cero, sin cambiar los permisos. Si el fichero no existe, lo crea. .
: > data.xxx # Fichero "data.xxx" ahora vacio

Tiene la misma efecto que cat /dev/null >data.xxx Pero no va a fork un procesos nuevo, debido que ":" es una funcin builtin. La caractera ":" tambien sirve como separador de campo en /etc/passwd, y en la definicin del variable de entorno $PATH.

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; dentro de ciertos expresiones, la caractera ? indica una prueba para una condicin. $ sustitucin de variable [] prueba; la expresin de prueba va dentro de las claves [ ].

var1=5 var2=23skidoo echo $var1 echo $var2 # 5 # 23skidoo

Manipulando y/o expandiendo variables ${parametro} Es lo mismo que $parametro, eg. , el valor del parametro de variable. Se puede utilizarlo para concatenar variables con cadenas. En bash las cadenas y expresiones numericos se trata en una manera similar.
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. echo "New \$PATH = $PATH"

Sentencias de control: until


until TEST-COMMANDS; do CONSEQUENT-COMMANDS; done

Ejecutar CONSEQUENT-COMMANDS hasta el comando final TEST-COMMANDS tiene un estatus de salida que no es cero.
#!/bin/bash COUNTER=20 until [ $COUNTER -lt 10 ]; do echo COUNTER $COUNTER let COUNTER-=1 done

Sentencias de control: while


while TEST-COMMANDS; do CONSEQUENT-COMMANDS; done

Ejecutar CONSEQUENT-COMMANDS hasta el comando final TEST-COMMANDS tiene un estatus de salida que es cero.
#!/bin/bash COUNTER=0 while [ $COUNTER -lt 10 ]; do echo The counter is $COUNTER let COUNTER=COUNTER+1 done

Sentencia de control: for


for NAME [in WORDS ...]; do COMMANDS; done

Ejecutar COMMANDS para cada miembro en WORDS, 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 ''

Sentencias Condicional: if
if TEST-COMMANDS; then CONSEQUENT-COMMANDS; [elif MORE-TEST-COMMANDS; then MORE-CONSEQUENTS;] [else ALTERNATE-CONSEQUENTS;] fi

Un ejemplo de un script utilizando la sentencia if:


#!/bin/sh X=10 Y=5 if test ``$X'' -gt ``$Y'' ; then echo ``$X is greater than $Y'' elif test ``$X'' -lt ``$Y'' ; then echo ``$X is less than $Y'' else echo ``$X is equal to $Y'' fi

Ejemplo utilizando test


#!/bin/sh if test ``$1'' = ``'' ; then echo ``Usage: backup-lots.sh <filename>'' exit fi for i in 0 1 2 3 4 5 6 7 8 9 ; do NEW_FILE=$1.BAK-$i if test -e $NEW_FILE ; then echo ``backup-lots.sh : warning $NEW_FILE'' echo `` already exists'' else cp $1 $NEW_FILE fi done

Sentencias Condicional: case


`case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac'

Ejecutar selectivamente los COMMANDS basada sobre WORD que match PATTERN. La barra $|$ esta utilizado para separar patrones multiples.

echo -n "Entra el nombre del animal: " read ANIMAL echo -n "El \$ANIMAL tiene " case \$ANIMAL in caballo | perro | gato) echo -n "four";; hombre | kangaroo ) echo -n "two";; *) echo -n "un numero no conocido de";; esac echo "piernes."

Funciones de Shell
[`function'] NAME () { COMMAND-LIST; }

#!/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. Este ejemplo es lo mismo del factorial de antes, pero este vez utilizando un bucle while.
function factorial () { N=$1 A=1 while test $N -gt 0 ; do A = 'expr $A '+' $N' N = 'expr $N - 1' done echo $A }

Bourne Shell Builtins {':'} expander argumentos y hacer redirecciones {'.'} 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 iteracin dentro un bucle. {'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. 'hash' 'kill' seal 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. 'test', '['} Evaluar un expresin conditional. 'times'} imprime los usuarios y tiempos de sistema usado por los hijos. 'trap'} especificar comandos para ejecutar cuando el shell recieve seales. 'umask' } Fijar mascara de creacin de un fichero. unset'} causar los variables de shell para disaparacer. \ {'wait'} esperar para salida de un proceso hijo

Variables IFS una lista de caracteres que separar campos utlizado cuando el shell compartir palabras como parte de la expansin 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 opcin 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."

Example 2-2. cleanup An enhanced and generalized version of above #!/bin/bash # cleanup, version 2 # Run as root, of course. if [ -n $1 ] # Test if command line argument present. then lines=$1 else lines=50 # default, if not specified on command line. Fi cd /var/log tail -$lines messages > mesg.temp # Saves last section of message log file. mv mesg.temp messages # cat /dev/null > messages # No longer needed, as the above method is safer. cat /dev/null > wtmp echo "Logs cleaned up." exit 0 # A zero return value from the script upon exit # indicates success to the shell.

script.

Conditionals with variables


#!/bin/bash T1="foo" T2="bar" if [ "$T1" = "$T2" ]; then echo expression evaluated as true else echo expression evaluated as false fi

Tema 3: Bash Scripts Avanzada En esta Tema, ampliamos nuestra conocimiento de Bash. En particular, se trata de conocer ms caracteres especiales, el concepto de redireccin, tuberias, scripts y parametros, operaciones con cadenas y operadores logicos, ficheros, aritmetica y el concepto de wrappers. Caracteres especiales de Bash Algunas caracteres tiene distintos signficacia dependiendo en su contexto. Dos de ellos puede ser las caracteres siguientes: ; Seperador de comandos. Puede poner dos comandos en misma linea. : null command. Exit status 0, alias for true, see below En este ejemplo, vemos la manera de separar dos comandos.

echo hola; echo amigo

Endless loop:
while : do operation-1 operation-2 ... operation-n done if condition then : # Do nothing and branch ahead else take-some-action fi

${} Parameter substitution. ${parameter-default} ${parameter=default} ${parameter+otherwise} ${parameter?err_msg} Si parametro no esta fija, usar default Si parametro no esta fija, fijar al default Si parametro fija, usar 'otherwise", else usar null string Si parametro fjio, usarlo, else imprimir err_msg

#!/bin/bash : ${HOSTNAME?} {USER?} {MAIL?} echo $HOSTNAME echo $USER echo $MAIL echo Critical env. variables set. exit 0

Sustitucin y expansin ${var#pattern}, ${var##pattern} quitar mas corta/mas larga parte de patron si es similar a principio de variable ${var%pattern}, ${var%%pattern} quitar mas corta/mas larga si es similar a final de variable ${var:pos} variable var expandido, empezando con posicin pos ${var:pos:len} expansin a max de longitud len de caracteres de variable var desde la posicin pos ${var/patt/replacement} primer similaridad de patron, dentro var replaced with replacement. ${var//patt/replacement} all matches of pattern, within var replaced with replacement.

Ejemplo

#!/bin/bash var1=abcd-1234-defg echo "var1 = $var1" t=${var1#*-*} echo "var1 (with everything, up to and including first - stripped out) = $t" t=${var1%*-*} echo "var1 (with everything from the last - on stripped out) = $t" path_name=/home/bozo/ideas/thoughts.for.today echo "path_name = $path_name" t=${path_name##/*/} # Same effect as t=`basename $path_name` echo "path_name, stripped of prefixes = $t" t=${path_name%/*.*} # Same effect as t=`dirname $path_name` echo "path_name, stripped of suffixes = $t" t=${path_name:11} echo "$path_name, with first 11 chars stripped off = $t" t=${path_name:11:5} echo "$path_name, 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 (.) Grupo de comandos. \texttt{(a=hello; echo \$a)} { .} Bloque de cdigo. Crea un funci\'on anonimo. Bloque de codigo puede tener E/S rediricionado desde y hacia el.
#!/bin/bash # Bloques de cdigo y E/S redireccin { read fstab } < /etc/fstab echo "Primer linea de /etc/fstab es:" echo "$fstab" exit 0

Redireccin scriptname >filename command >&2 scriptname >>filename << | >| (redireccionar salida de un comando a stderr) (anadir la salida de scriptname a un fichero)

redireccionar stdin Tuberia. Salida de un comando a otro o shell forzar redirecci\'on. Sobre-escribir un fichero existente. redirecci\'on desde/hacia stdin or stdout.

Ejemplos:
echo ls -l | sh

cat *.lst | sort | uniq

# ordenar la salida de .lst # ficheros y borrar lineas duplicados.

(cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xvfp -) # Mover arbol de fichero entero desde un directorio a otro

bunzip2 linux-2.2.15.tar.bz2 | tar xvf -

Redireccin y ficheros Hay tres descriptores de ficheros: stdin, 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.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

Tuberias

ls -l | sed -e "s/[aeio]/u/g" ls -l | grep "\.txt$"

Acceder Parametros $0, $1,etc. parametros positional (desde linea de comandos o desde funcin, o un variable) $# numero de argumentos o parametros posicional en linea de comandos $$ id de proceso de script, utilizado a menudo en scripts para construir nombre de ficheros temporal $? estatus de salida (exit) de funcin o de script $* todo los parametros positionales $@ lo mismo de $*, pero para cada parametro es un string en comillas $flags passed to script $! PID de ltima job ejecutando en fondo = asignacin 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, denomida $?. Ejemplo de como capturar valor de salida:
#!/bin/bash cd /dada &> /dev/null echo rv: $? cd $(pwd) &> /dev/null echo rv: $?

Comparicin 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 ]; then echo "S1('$S1') no es igula a S2('$S2')" fi if [ $S1=$S1 ]; then echo "S1('$S1') es igual a S1('$S1')" fi

Sentencia de if/then

if [ condition-true ] then command 1 command 2 ... else # Opcional para anadir mas chequeos command 3 command 4 ... fi

#!/bin/bash if [ 0 ] then echo "0 es verdad." else echo "0 es falso." fi if [ ] #NULL (empty condition) then echo "NULL es verdad." else echo "NULL es falso." fi if [ xyz ] #string then echo "string aleatorio es verdad." else echo "string aleatorio es falso." fi

if [ -x filename ]; then elif

Equivalence of [ ] and test


#!/bin/bash if test -z $1 then echo "No command-line arguments." else echo "First command-line argument is $1." fi # Both code blocks are functionally identical. if [ -z $1 ] # if [ -z $1 # also works, but outputs an error message. then echo "No command-line arguments." else echo "First command-line argument is $1." fi exit 0

Tests, command chaining, redireccin


#!/bin/bash filename=sys.log if [ ! -f $filename ] then touch $filename; echo "Creating file." else cat /dev/null > $filename; echo "Cleaning out file." 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." exit 0

Aritmetica y comparaciones de cadenas


#!/bin/bash a=4 b=5

# a y b puede estar tratado como enteros o strings. 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." echo "(string comparison)" fi echo

Operadores Aritmeticas Arithmetic operators: +, -, *, / Arithmetic relational operators: -lt (<), 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 (>), -le (<=), -ge (>=), -eq (==),

-ne (!=)

Logical Operators
#!/bin/bash echo Logical Operators a=3 echo a = $a b=`expr $a \> 10` echo 'b=`expr $a \> 10`, therefore...' echo "If a > 10, b = 0 (false)" echo b = $b b=`expr $a \< 10` echo "If a < 10, b = 1 (true)" echo b = $b

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. # index: position of substring b=`expr index $a 23` echo Numerical position of first 23 in $a is $b. # substr: print substring, starting position & length specified b=`expr substr $a 2 6` echo Substring of $a, starting at position 2 and 6 chars long is $b. # length: length of string b=`expr length $a` echo Length of $a is $b. # 'match' operations similarly to 'grep' b=`expr match $a [0-9]*` echo Number of digits at the beginning of $a is $b. b=`expr match $a '\([0-9]*\)'` echo The digits at the beginning of $a are $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 - 5" echo $a let "a = a * 10" echo $a let "a %= 8" echo $a exit 0

toupper: Transforms a file to all uppercase. #!/bin/bash # Changes a file to all uppercase. if [ -z $1 ] # Standard check whether command line arg is present. then echo "Usage: `basename $0` filename" exit 1 fi tr [a-z] [A-Z] <$1 exit 0

Ejemplo Completo: killall, from /etc/rc.d/init.d

#!/bin/sh # --> Comments added by the author of this HOWTO marked by "-->". # # # # --> This is part of the 'rc' script package --> by Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org> Bring down all unneeded services that are still running (there shouldn't be any, so this is just a sanity check)

for i in /var/lock/subsys/*; do # --> Standard for/in loop, but since "do" is on same line, # --> it is necessary to add ";". # Check if the script is there. [ ! -f $i ] && continue # --> This is a clever use of an "and list", equivalent to: # --> if [ ! -f $i ]; then continue # Get the subsystem name. subsys=${i#/var/lock/subsys/} # --> Match variable name, which, in this case, is the file name. # --> This is the exact equivalent of subsys=`basename $i`. # --> It gets it from the lock file name, and since if there # --> is a lock file, that's proof the process has been running. # --> See the "lockfile" entry, above. # Bring the subsystem down. if [ -f /etc/rc.d/init.d/$subsys.init ]; then /etc/rc.d/init.d/$subsys.init stop else /etc/rc.d/init.d/$subsys stop # --> Suspend running jobs and daemons # --> using the 'stop' shell builtin. fi

done

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. if [ $# = 0 ] then echo "Usage: `basename $0` filename" exit 1 fi tar cvf - `find . -mtime -1 -type f -print` > $1.tar gzip $1.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 ms facil y utilizarlo ms veces. Comandos complejos se puede construir, piping comandos de un conjunto de sed a comandos de awk. 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, '$' es el fin y 'd' es borrar.

Ejemplo: un wrapper de script ms complejo

#!/bin/bash # "subst", es un script que sustituye un patron para otra en un fichero, # p.ej. , "subst aaaa bbbb carta.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." exit 2 fi sed -e "s/$viejo_patron/$nuevo_patron/" $nombre_fichero exit 0

Tema 5: Bash y Comandos Avanzada External Filters, Programs and Commands ls lista ficheros - muchos opciones hace muy potente; por ejemplo, el opcin -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 operacin; 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 opcin -f, at lea lista de comandos desde un fichero y es muy til en un script no interactiva ps lista de procesos ejecutando por dueo 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}

sleep 3 - Espera 3 segundos. dd comando data duplicator. Copiar un fichero de stdin/stdout, pero con conversiones; Posible conversiones son ASCII/EBCDIC, minuscula/mayusculo, intercambio de parejas de bytes entre entrada/salida; 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 ordenacin diff comparicin de ficheros;


diff file-1 file-2

patch aplicar parches


patch -p1 <patch-file;

Ejemplo: Using cpio to move a directory tree

#!/bin/bash # Copying a directory tree using cpio. 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 - visualizando procesos \item[\texttt{tee}] til para imprimir procesos tee |------> to file | ===============|=============== command--->----|-operator-->---> result of command(s) ===============================

cat listfile* | sort | tee check.file | uniq > result.file

Comandos para administracin de sistemas

/etc/rc.d los scripts de startup/shutdown demuestre el uso de estos comandos. necesita privilegios de root uname especificaciones de sistema (OS, Kernel); uname -a env ejecutar un script o programa con ciertos variables de entorno cambiadosin cambiar globalmente lockfile utilidad que es parte de procmail. Crear un fichero lock, controla el acesos a ficheros, dispositivos o recursos. (Ejemplo de un aplicacin es protegir un carpeta de correo de cambiar por multiple usuarios) cron Administrative program scheduler, ejecuta en fondo con /etc/crontab chroot Cambiar directorio de root ldd demuestra dependencias para fichero ejecutable
bash$ ldd /bin/ls libc.so.6 => /lib/libc.so.6 (0x4000c000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

who demuestre todos los usuarios logged en sistema w demuestre todos los usuarios y los procesos que pertenece - versin extendido de who
bash# w | grep startx olivieri pts/0 :0 6:42am 0.00s 40.95s 0.01s grep startx

wall write all, 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. llamada desde /etc/inittab telinit Symlinked to init, this is a means of changing the system runlevel, usually done for system maintenance or emergency filesystem repairs. runlevel demuestre runlevel actual y ltima halt, shutdown, reboot exec una llamada al sistema; Ejemplo utilizado con find

#!/bin/bash exec echo "Exiting $0." # Exit from script. # The following lines never execute. echo "Still here?" exit 0

Montando Sistemas de Ficheros mount montar sistema de ficheros; /etc/fstab mount -t iso9660 /dev/cdrom /mnt/cdrom

# 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. Los regular expresiones consiste de un caracter que tiene un interpretacin, y estan utilizado para buscadas y manipulacin de texto. Algunas de los expresiones ms utilizadas son controladas por las siguientes caracteres: . matches any one character, except a newline. ? matches zero or one of the previous RE. + matches one or more of the previous RE. ^ matches the beginning of a line; negates the meaning of a set of characters $ at the end of a an RE matches the end of a line. [] enclose a set of characters to match in a single RE. \ escapes a special 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 ms escpacio de disco duro en su sistema. Con estos usuarios (ubicado p.j. abajo /home, determinar los ficheros que son ms grandes. El comando find puede ser conveniente (con el opcin de -exec junto con el programa awk). Tambien, los aplicaciones sort y head puede ser util.

#!/bin/sh find / -type f -exec /bin/ls -ls {} ';' | awk ' {using[$4] += $1 } END {for (name in using) { print name } }' | sort -nr +0 | sed 10q > tmp.txt for i in $(exec cat tmp.txt) do echo $i find /home/$i -type f -exec /bin/ls -ls {} ';' | awk ' {print $4, $6, $10}' | sort -nr +1 | sed 4q done

Ejemplo 2: Escribir un script de BASH para determinar si un usuario esta logged en el sistema. Si esta en el sistema, 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, y sume e imprima el nmero 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. then echo "No parameters passed to function." return 0

else echo "Param #1 is $1." fi if [ $2 ] then echo "Parameter #2 is $2." 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, see if local 'a' # exists outside function. echo "a outside function is $a" # Nope, 'a' not visible globally. exit 0

Recursion, using a local variable


#!/bin/bash # "factorial". 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)." exit $RANGE_ERR fi fact () { local number=$1 # number must be declared as local # otherwise this doesn't work. if [ $number -eq 0 ]

then factorial=1 else let "decrnum = number - 1" fact $decrnum let "factorial = $number * $?" fi return $factorial } fact $1 echo "Factorial of $1 is $?." 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).tgz tar -cZf $TGTD$OF $SRCD

Ejemplos: Renombrar un fichero


#!/bin/bash # renames.sh # basic file renamer criteria=$1 re_match=$2 replace=$3 for i in $( ls *$criteria* ); do src=$i tgt=$(echo $i | sed -e "s/$re_match/$replace/") mv $src $tgt done

Tema-7: Proceso de Booting Linux


7.1. Introduccin Ser mlti-tarea, el sistema operativo Unix es muy complejo. Antes de UNIX el sistema operativo puede arrancar correctamente, hay un distintos pasos que deben realizar. Para administrar sistemas es importante entender los mecanismos de arrancar y cerrar un sistema operativo de Unix.

Otros Recursos Como siempre, la siempre la mejor manera para obtener informacin prctica es con los Howtos. Con respecto al proceso de arranque, las siguientes documentos puede ser util: HOW-TOs: BootPrompt HOW-TO, Boot disk HOW-TO, UPS HOW-TO, LILO Mini HOW-TO, Win95 + WinNT + Linux multiboot using LILO mini-HOWTO Rescue disk sets, The Linux Systems Administrator's Guide 7.2. Resumen de booting El proceso de arranca del sistema operativo de Linux comienza con un proceso muy determinada. Entonces, booting consiste en los pasos siguientes: encontrar el ncleo: el primer paso es encontrar el ncleo del sistema operativo. Cmo se alcanza esto es generalmente particular al tipo de hardware usado por la computadora. comenzar el ncleo: en este paso el ncleo comienza la operacin y en detalle va a buscar todos los dispositivos de hardware que estn conectados con la mquina comenzar los procesos: todo el trabajo realizado por una computadora de UNIX esta hecho por procesos. En esta etapa, comienzan la mayora de los procesos del sistema y a los demonios. Este paso tambin incluye un nmero de pasos que configuren los varios servicios necesarios para el sistema para trabajar. A continuacin se explica con ms detalle cada uno de estos partes en el arranque del sistema. 7.2.1 Encontrar el ncleo El ncleo proporciona un nmero de servicios esenciales que sean requeridos por el resto del sistema en para que sea funcional. El primer paso en el proceso del booting una computadora de UNIX est descubriendo donde est el ncleo. Encontrada una vez, puede ser comenzada, pero sa es la seccin siguiente. ROM La mayora de las mquinas tienen una seccin de la memoria slo para leer (ROM) que contiene un programa que la mquina se ejecuta cuando se adelanta la energa primero. Qu se programa en la ROM depender de la plataforma de hardware. Por ejemplo, en una PC de IBM, el programa de la ROM comprueba el hardware en un manera predeterminada, buscando en el floppy, disco duro primario para un programa de bootstrap. En el hardware diseado especficamente para el sistema operativo de UNIX (mquinas la DEC, el SUN etc) el proceso es ms complicado, requiriendo interaccin para especificar: en que particin debe boot la mquina si arranca en modo single o multi-usuario

Como mnimo pelado, el programa de la ROM debe ser bastante completo para resolver donde se almacena el programa bootstrap y cmo comenzar a ejecutarlo. El programa de la ROM no tiene suficiente comlplejidad para saber donde est el ncleo o como ejecutarlo

El programa bootstrap El programa ROM ejecutar el cdigo almacenado en el bloque del boot de un dispositivo (tpicamente una impulsin de disco duro). Este cdigo se refiere como bootstrap. El bloque de boot no es suficiente grande para contener un sistema operativo as que esta etapa intermedia es necesaria. El programa bootstrap es responsable de localizar y de cargar (el comenzar) el ncleo del sistema operativo de UNIX en memoria. The most common bootstrap program in the Linux world is a program called LILO. Booting on a PC El BIOS en una PC busca generalmente un programa bootstrap en uno de dos lugares (generalmente en esta orden), el primer floppy drive, or el primer disco duro. Se puede cambiar el orden cambiando parametros en el BIOS. Jugando con sus ajustes del BIOS usted puede cambiar esta orden o an evitar que el BIOS compruebe uno o el otro. El BIOS El BIOS carga el programa que est en el primer sector del elegido la impulsin y las cargas l en memoria. Este programa bootstrap asume el control. Booting de un floppy En una diskette bootable el programa bootstrap sabe simplemente para cargar los primeros bloques en el floppy que contienen el ncleo en una localizacin especfica en memoria. Un floppy de boot para Linux no contiene un sistema de ficheros. Contiene simplemente el ncleo copiado en los primeros sectores del disco. El primer sector en el disco contiene la primera parte del ncleo que sabe cargar el resto del ncleo en RAM. Esto le significa no puede montar el disco blando del cargador sobre su mquina de Linux y leer el contenido del disco usando el ls y otros comandos asociados. Hacienda un disco de arranque El mtodo ms simple para crear un diskette que le permita boot una computadora de Linux es: 1. inserte una diskette en una computadora que funciona ya Linux 2. login as root 3. cambiar el directorio a /boot 4. 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. muy util cuando esta cambiando o compilando el ncleo con nuevas opciones. El cargador examina la tabla de las particiones y identifica la particin activa; comienza el cdigo en el sector del cargador para esa particin. Leer /etc/lilo.conf

Starting the kernel Cuando el LILO o el programa de ROM ha encontrado el ncleo de su sistema Qu sucede durante el proceso de lanzamiento? El ncleo pasar con el proceso siguiente: 1. inicialice estructuras de datos internas read queues, bloques de control de procesos y otras estructuras de datos necesitan ser inicializados 2. comprobar el hardware del sistema 3. verifique la integridad del sistema de ficheros 4. crear el proceso 0 (swapper) y proceso 1 (init) El proceso del swapper es realmente parte del ncleo y no es un proceso "verdadero". El proceso del init es el ltimo padre de todos los procesos que se ejecuten en un sistema de UNIX. Una vez que el ncleo se haya inicializado, el init realizar el resto del procedimiento de lanzamiento. Kernel boot messages Cuando un ncleo de UNIX est booting, exhibir mensajes en la consola principal sobre lo que est haciendo. En Linux, estos mensajes tambin se envan al archivo /var/log/dmesg Starting the processes El ncleo se ha cargado y ha inicializado sus estructuras de datos y ha encontrado todos los dispositivos de hardware. Su sistema no puede hacer en esta etapa cualquier cosa. El ncleo del sistema operativo provee solamente los servicios que son utilizados por procesos. La pregunta es cmo son estos otros procesos creados y ejecutados. En un sistema de UNIX la nica manera de que un proceso puede crear est por un proceso existente que realiza una operacin de la fork.

Starting the processes: fork Un fork (bifurcacin) crea un proceso que contenga las copias de las estructuras del cdigo y de datos del proceso original. Pero quin comienza el primer proceso? El proceso init es el ltimo antepasado de todos los procesos del usuario en un sistema de UNIX. Tiene siempre una identificacin del proceso (PID) de 1. El proceso init se ejecuta por el ncleo 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. Los servicios que comienza son especificados por, /etc/inittab especifica la configuracin de init Run Levels El proceso init es tambin responsable para colocar la computadora en uno de un nmero de niveles del funcionamiento (run level). El nivel del funcionamiento controla qu servicios son comenzados (o parados) por el init

(Nivel de Ejecucin) Run Level 0 1 2 3 4 5 6 Pare la mquina Modo del solo usuario. Todos los sistemas de ficheros montaron, slo el sistema pequeo del ncleo procesa el funcionamiento. Solamente conexin de la lata de la raz. modo multiusos, sin la comparticin de ficheros remotos modo multiusos con la comparticin de ficheros remotos, procesos, 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, realmente usado solamente por las escrituras

Cuando los cargadores de un sistema de Linux, init examinan el archivo /etc/inittab para una entrada del initdefault del tipo. Esta entrada determinar el nivel inicial del funcionamiento del sistema. Debajo de Linux, se utiliza el comando del telinit para cambiar actual del nivel del funcionamiento. El script telinit es un soft link a init.telinit Parametros de telinit telinit acepta un argumento: 0 1 2 3 4 5 6: niveles de ejecucin definida arriba. 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 configuracin para el init Cada lnea corresponde a una sola entrada y est quebrada en cuatro campos los caracteres del identificador uno o dos para identificar nicamente la entrada.

El nivel del funcionamiento indica el nivel del funcionamiento en el cual el proceso debe ser ejecutado. La accin dice a init cmo ejecutar el proceso. El proceso la trayectoria llena del programa o del shell script a ejecutarse. Qu sucede Cuando init primero se comienza determina el nivel actual del funcionamiento (en/etc/inittab con el initdefault) y despus procede a ejecutar todos los comandos de las entradas que emparejan el nivel del funcionamiento. Lo que sigue es un ejemplo /etc/inittab tomado de una mquina de RedHat con algunos comentarios agregados.

#Specify the default run level id:3:initdefault: # System initialisation. si::sysinit:/etc/rc.d/rc.sysinit #when first entering various runlevels run the related startup scripts #before going any further l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # Things to run in every runlevel. 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; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; 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, start X x:5:respawn:/usr/bin/X11/xdm -nodaemon

El identificador El identificador: el primer campo, es un identificador nico de dos caracteres. Un proceso mingetty se debe comenzar por el proceso del init. Cada terminal tendr generalmente un archivo dispositivo con /dev/ttyXX dnde XX ser substituido por un sufijo. Es este sufijo que debe ser el identificador en archivo /etc/inittab Acciones El campo de la accin describe cmo el proceso ser ejecutado. Hay un nmero de acciones predefinidas que deben ser utilizadas. La tabla 10,2 las enumera y explica.

Accin respawn wait once boot bootwait off initdefault sysinit powerwait ondemand powerfail ctrlaltdel

Descripcin 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, cuando se incorpora el runlevel realice el proceso durante cargador del sistema (no har caso del campo del runlevel) combinacin 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 seal de SIGPWR que indica un problema con la energa, el init esperar hasta que se termina el proceso ejectese siempre que se llamen los runlevels del ondemand (un b c). Cuando se llaman estos runlevels no hay cambio en runlevel iguales que powerwait pero no esperan (refiera a la pgina del hombre para el powerokwait de la accin) ejecutado cuando el init recibe la seal de SIGINT (generalmente cuando alguien hace el Ctrl--alt--del

Demonios y archivos de la configuracin init es un ejemplo de un demonio. Lea /etc/inittab cuando comienza la ejecucin. cambios a /etc/inittab no influenciarn la ejecucin del init hasta la prxima vez que comienza,

Hay las maneras de las cuales usted puede decir a un demonio releer sus archivos de la configuracin. Un mtodo genrico, que los trabajos ms del tiempo, son enviar el demonio la seal de HUP. Para la mayora de los demonios el primer paso en hacer esto es descubrir cules es el identificador de proceso (PID) del demonio. Esto no es un problema para el init. Por qu? No es un problema para el init porque el init tiene siempre un PID de 1. El mtodo ms aceptado para decir el init releer su archivo de la configuracin es utilizar el telinit q releer su archivo de la configuracin. 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). Modifique la entrada del inittab de la pregunta anterior para exhibir el mensaje repetidas veces y.... Tome su sistema en modo del solo usuario. Tome su sistema en el runlevel 5. Qu sucede? (haga solamente esto si usted tiene X Windows configurado para su sistema). Cambie su sistema de modo que incorpore este nivel del funcionamiento cuando l los cargadores. Reanude su sistema y vea qu sucede. Se utiliza el comando "wall" de exhibir un mensaje sobre los terminales de todos los usuarios.

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. Examine su archivo del inittab para una entrada con el identificador c1. sta es la entrada para la primera consola, la pantalla que usted es encendido cuando usted primero comienza su sistema. Cambie la entrada para c1 de modo que el campo de la accin contenga una vez en vez de respawn. Fuerce el init para releer el archivo del inittab y entonces para abrirse una sesin y para registrarlo hacia fuera en esa consola. Qu sucede? Configuracin de sistema Hay un nmero de tareas que se deben terminar una vez durante el arranque de sistema que se debe terminar una vez. Estas tareas se relacionan generalmente con el configuracin de su sistema de modo que funcione. La mayora de estas tareas son realizadas por el script /etc/rc.d/rc.sysinit Es esta script que realiza las operaciones siguientes instala un camino de bsqueda en un fichero que sea utilizado por las otras scripts obtiene datos de la configuracin de red, activa las particiones del intercambio de su sistema , fija el hostname de su sistema que cada computadora de UNIX tiene un hostname. Puede utilizar el hostname del comando de UNIX para fijar y tambin para exhibir el hostname de su mquina. Fija el dominio del NIS de las mquinas (si usted est utilizando uno) realiza un cheque en los sistemas de ficheros de su sistema gira contingentes del disco (si siendo utilizado), instala plug'n'play, deletes old lock and tmp files, sets the system clock, loads any kernel modules. Startup scripts La mayora de los servicios que el init comienza se comienzan cuando el init ejecuta las escrituras del comienzo del sistema. Las escrituras del arranque de sistema son shell scriptes escritos usando la cscara de bourne (ste es una de las razones que usted necesita saber el sintaxis de la cscara de bourne). Usted puede ver donde estas escrituras son ejecutadas mirando el archivo del inittab.
l0:0:wait:/etc/rc.d/rc l1:1:wait:/etc/rc.d/rc l2:2:wait:/etc/rc.d/rc l3:3:wait:/etc/rc.d/rc l4:4:wait:/etc/rc.d/rc l5:5:wait:/etc/rc.d/rc l6:6:wait:/etc/rc.d/rc 0 1 2 3 4 5 6

comprobacin de la integridad de los sistemas de ficheros de la mquina usando el fsck, mounting the file systems, designating paging and swap areas, checking disk quotas, clearing out temporary files in /tmp and other locations, startin up system daemons for printing, mail, accounting, system logging, networking, cron and syslog. Filename rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rc init.d rc.sysinit rc.local 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. Las escrituras en el directorio apropiado. Contiene las escrituras reales se ejecutan que. funcione una vez en el tiempo del cargador para realizar pasos el funcionamiento pasado de la escritura, usado para hacer cualquier tareas especficas a su disposicin local que no se hace en la disposicin normal de SysV no siempre presente, utilizado realizar la configuracin especial en cualquier puertos seriales

Estructura fsica de un disco Discos dividido en particiones Tabla de particin: guarda informacin de cmo el disco esta compartido

Dispositivo, conconsiste de ms que un disco fsico, y utiliza dos lados Etiquetas de los lados 0, 1, 2, 3, se llama cabeceras porque un cabecera por lado hace lectura/escritura Cada lado/cabecera tiene tracks, and each track is divided into segments called sectors

Montando Dispositivos Para bind un directorio a un dispositivo fsico (como una particin o una CDROM) para poder leer el sistema de ficheros del dispositivo se llama montar el dispositivo.
mount [-t <fstype>] [-o <option>] <device> <directory> umount [-f] [<device>|<directory>]

<fstype> puede ser uno de estos adfs, affs, autofs, coda, coherent, devpts, efs, ext2, hfs, hpfs, iso9660, minix, msdos, ncpfs, nfs, ntfs, proc, qnx4, romfs, smbfs, sysv, ufs, umsdos, vfat, xenix, or xiafs. 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, En este caso, hace un enlace /dev/cdrom que apuntar al dispsitivo correcto

Reparacin Del Sistema de ficheros: fsck fsck significa file system check fsck escanea el sistema de ficheros, buscando y arreglando errores Causa: Errores poda ocurrir si el kernel esta parada antes de que el sistema de ficheros estaba desmontada puda ser en la mitad de una operacin de lectura que dejo el sistema en un estado no coherente (P.Ej. 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, 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, va a existir directorios varios: /lost+found, /home/lost+found, /var/lost+found, /usr/lost+found, etc.

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,user noauto,ro,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 particin Indica directorio Para montar Indica tipo De sistema de ficheros Opciones para montar

Si contiene ficheros Orden para fsck forma abreviada del comando mount mount /dev/cdrom
/dev/fd0 /dev/cdrom /mnt/floppy /mnt/cdrom auto noauto,user iso9660 noauto,ro,user 0 0 0 0

user: usuarios puede montar estos dispositivos ro: solo lectura, 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 fsica de RAM. 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, sin tener el floppy disco (dump ms 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 rpido. Utilizar directamente mount, pero con opciones

dd if=/dev/cdrom of=some_name.iso mount -t iso9660 -o ro,loop=/dev/loop0 some_name.iso /cdrom

lilo, initrd, y Booting lilo significa linux loader. LILO: es el prompt en el momento de boot Lilo contiene las siguientes paquetes
/sbin/lilo /usr/bin/keytab-lilo

boot/boot.b /boot/message /boot/chain.b /boot/os2_d.b /usr/share/doc/lilo-<version>

Kernel boot sequence El ncleo 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 - bootstrap

Secuencia de boot 1. Inicializar hardware. 2. Montar el sistema de ficheros raiz en un particin 3. Cuando el sistema de ficheros raiz esta montado, el ncleo ejecuta /sbin/init para empezar el sistema operativo UNIX Este es como vida de Unix comienza. 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, 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, 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, thus reconstructing the kernel image in memory. Then it jumps to the kernel to execute it

Booting partitions In addition to the MBR, each primary partition has a boot sector that can boot the operating system in that partition. MS-DOS (Windows) partitions have this, and hence lilo can optionally load and execute these partition boot sectors to start a Windows installation in another partition.

lilo.conf y el comando lilo Ejecutando el comando lilo como root, con fichero /etc/lilo.conf

Parte de fichero tipico de lilo.conf file que se puede usar para boot tres particiones: Windows y dos particiones LINUX

image = /boot/vmlinuz-2.2.17 label = linux root = /dev/hda5 read-only image = /boot/vmlinuz-2.0.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, which in turn understands where to get the /boot/vmlinuz-2.2.12-20 file Options Lilo boot Device to boot. It will most always be /dev/hda or /dev/sda. 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). compact String together adjacent sector reads. This makes the kernel load much faster. vga We would like 80x50 text mode. Your startup scripts may reset this to 80x25-search /etc/rc.d recursively for any file containing `` textmode''. lock Always default to boot the last OS booted [A very useful feature which is seldom used.]. password Require a password to boot. restricted Require a password only if someone attempts to enter special options at the LILO: prompt. append A kernel boot option. Kernel boot options are central to lilo and kernel modules and are discussed in Chapter 42.5. They are mostly not needed in simple installations. image A LINUX kernel to boot. label The text to type at the boot prompt to cause this kernel/partition to boot. root The root file system that the kernel must mount. 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, a Windows partition. table Partition table info to be passed to the partition boot sector.

Creando Discos de Boot Floppy Si LILO esta ausente, tenemos que tener otra metodo para boot Un disco floppy que puede boot el sistema tiene que tener un imagen del nucleo, esto significa que para cargar el imagen a memoria
dd if=/boot/vmlinuz-2.2.17 of=/dev/fd0 rdev /dev/fd0 /dev/hda5

Montar /dev/hda5 como el sistema de ficheros raiz Init - el primer proceso After the kernel has been unpacked into memory, it begins to execute, initializing hardware last thing it does is mount the root file system, which necessarily contains a program /sbin/init, which the kernel executes init is one of the only programs the kernel ever executes explicitly init always has the process ID 1. init, the (rather arbitrary) concept of a UNIX run level was invented The run level is the current operation of the machine, numbered run level 0 through run level 9. 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, without network file system (NFS). 3 Full multiuser mode. 4 Unused. 5X Window System Workstation (usually identical to run level 3). 6 Reboot. 7 Undefined 8 Undefined. 9 Undefined. 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? .d/SNNservice NN, K, or S En algunas sistemas los scripts tiene otras nombres /etc/rc.d/rc? .d/... .],

Start y stop

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

The most common way of shutting down the machine is to use: shutdown -h now which effectively goes to run level 0, and shutdown -r now effectively goes to run level 6.

Changing runlevels with lilo can also specify the run level at the LILO: prompt. Type linux 1 linux single single-user mode when booting your machine. You change to single-user mode on a running system

getty Invocation getty opens a tty port, prompts for a login name and invokes the /bin/login command. It is normally invoked by init(8). The most noticeable effect of init running at all is that it spawns a login to each of the LINUX virtual consoles consoles. 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, getty invokes the /bin/login program, which then prompts the user for a password The login program (discussed in Section 11.7) then executes a shell. When the shell dies (as a result of the user exiting the session) getty is just respawned.

Bootup Summary First sector loaded into RAM and executed-- LILO: prompt appears. 2. Kernel loaded from sector list. 3. Kernel executed; unpacks. 4. Kernel initializes hardware. 5. Kernel mounts root file system, say /dev/hda1. 6. Kernel executes /sbin/init as PID 1. 7. init executes all scripts for default run level. 8. init spawns getty programs on each terminal. 9. getty prompts for login. 10. getty executes /bin/login to authentic user. 11. login starts shell.

Tema-8

Unix Dispositivos

UNIX fue diseado para permitir el acceso transparente a los dispositivos de hardware a travs de todas las arquitecturas de la CPU. En Unix todos los dispositivos sea accesible con la misma interfaz

Ficheros de Dispostivos El mtodo 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; en el primer disco duro fsico de su mquina /dev/hda se conoce como archivo del dispositivo, y todos se almacenan bajo directorio de /dev. Los archivos del dispositivo permiten el acceso al hardware.

Experimentos con /dev Imagina que tienes una tarjeta de los sonidos y que esta instalada hacemos la siguiente experimento: 1. Tecla: cat /dev/dsp > mi_grabacion 2. Diga algo en el micrfono y tecla: cat mi_grabacion > /dev/dsp 3. Escuchar la grabacion en altavoces, 4. Si no tienes una tarjeta de sonido, probar la siguiente: cat /dev/mouse Otra experimento : 1. Prueba: cu -s 1200 -l /dev/mouse Qu ocurre?

Bajo nivel: los programas que tienen acceso a los archivos del dispositivo hacen dos maneras bsicas Leen/escriben al dispositivo para enviar y para recuperar datos (como less y cat arriba). Utilizan la funcin del ioctl de C (control del IO) para configurar el dispositivo. (en el caso de la tarjeta de sonido, esto pudo fijar parmetros.)

Dispositivos de bloque/carcter Caracterizar dispositivos como: Acceso aleatorio (discos y dispositivos de cinta) Serial (como ratones, tarjetas de sonido, ect.)

Dispositivos Serie Purertos serie es para comunicacin de bajo velocidad con 8 linea (o menos) cables. Algunas dispositivos que utiliza comunicacin serie: Ordinary domestic dial-up modems. Some permanent modem-like Internet connections. Mice and other pointing devices. Character text terminals. Printers. Cash registers. Magnetic card readers. Uninterruptible power supply (UPS) units. Embedded microprocessor devices. Bloque Dispositivos Bloque Dispositvios de acceso aleatorio se accede en bloques contiguos grandes de datos que se almacenan persistente. Se leen en unidades discretas (p.ej 1024bytes por vez) ls -l /dev/hda demuestra una b (para indicar que es un bloque)
brw-r----1 root disk 3, 64 Nov12 2003 /dev/hdb

Dispositivos Carcter Los dispositivos seriales, por otra parte, estn alcanzados un byte a la vez Los datos se pueden leer o escribir solamente una vez Ejemplo: despus de que un byte se haya ledo en su ratn, el mismo byte no se puede leer por otro programa Sonido /dev/dsp es un dispositivo carcter
crw-r--r-1 root sys 14, 3 Jul 18 1994 /dev/dsp

Porque se llama /dev/dsp? Nmeros de dispositivos Mayor/menor Los dispositivos se dividen en los sistemas denominadas los nmeros de dispositivo mayor Ejemplo: SCSI tiene nmero mayor de 8. Su nmero dispositivo menor es /dev/sda (que es menor numero dispositvo 0: Estos nmeros son identificadores para el ncleo
brw-rw---1 root disk 8, 0 May 5 1998 /dev/sda

Nmero mayor en este caso es 8, mientras el nmero menor es 0 Nombres de dispositivos comn Referencia completa de dispositivos: /usr/src/linux/Documentation/devices.txt /dev/hd?? hd es para hard disk, pero es para referir a dispositivos IDE ; discos duros comn. La primera letra despues de hd indica el drive fsico: /dev/hda (3) Drive Primario, o Master primario . /dev/hdb (3) Drive Secundario, or Escalvo Primary. /dev/hdc (22) Tercer drive, o Master secundario. /dev/hdd (22) Cuarto drive, o esclavo secondary. Cuando accediendo cualquiera de estos dispositivos (con less /dev/hda), estas leyendo desde disco fsico comenzando en el primer sector del primer track y secuencialmente hasta la ultima track. /dev/hda1, /dev/hda2, etc., indica la primera y secundaria etc., particin en el disco a.

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

Enlaces definido localmente

Sockets y tuberias

El comando dd (disk dump) Es como cat, pero puede escribir/leer en bloques descretas. Es un comando para leer/escribir mientras convertir data. 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. Si of= es ausente, dd escribe a stdout. Si if= es ausente, dd lee de stdin Ejemplo: Creating boot disks from boot images. Como hicimos anteriormente en otras clases, para crea un floppy de boot, buscar el fichero boot.img ,
dd if=boot.img of=/dev/fd0

En RedHat se llama boot.img. En otras distribuciones puede llamar otra nombre. Este comando esta escribiendo el imagen directamente al disco floppy. Duplicating a disk: si hay dos IDE discos que son de tamao 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. It doesn't matter what is on the original (Windows, LINUX, 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

Para SCSI tape. 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. The mt command stands for magnetic tape and controls generic SCSI tape devices Ocultar salida Otra dispositivo de Linux, que tambien vemos anteriormente en otras clases es el dispositivo especial /dev/null. Este dispositivo se puede utilizar para ocultar la salida de un programa, para que no hay mensajes a la pantalla. Entonces, si no quieres ver salida de programas, aadir la redireccin > /dev/null al comando Ejemplos:
make > /dev/null

Para ocultar errores, 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 redireccin. 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. 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. Considera el ejemplo de crear un dispositivo que exactamente como /dev/fd0 (utilizado para ver como funciona este comando), entonces, ejecuta:
mknod -m 0600 /dev/mi-floppy b 2 0 ls -al /dev/fd0 /dev/mi-floppy

Con este fichero /dev/mi-floppy, podemos acceder el floppy. El comando /dev/MAKEDEV


cd /dev ./MAKEDEV -v fd0 ./MAKEDEV -v fd1

Tema-9: Introduccin a IP Comunicaciones en Internet Nivel de Hardware: tarjetas de red network enviar paquetes (o datagrams) de data entre cada uno Paquetes: aprox. 1 kilobyte de data Contiene una cabecera de 24 bytes o ms que precede los datos Cabecera tiene nombre de destinacin de envio Nombres de mquinas tiene un nmero de direccin Direccin IP es un nmero 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 Descripcin Los bits 0-3: Versin de IP (por el momento 4) bits 4-7: Internet Header Length (IHL) - tamao de cabecera divido por 4 Type of service (TOS): utilizado para mejorar rendimiento; Tamao Tamao de todo el paquete incluyendo la cabecera Identificacin bits 0-3: Flags, bits 4-15: Offset Time to live (TTL) Tipo Checksum Direccin fuente de IP Direccin 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 pequeas de alta velocidad, denominada LANs (para Local Area Networks) Todas interconectado por enlaces de larga distancia Transmisin: En un LAN, la media de transmisin no es un paquete, es un Ethernet frame frames son anlogo a los paquetes, pero tiene un tamao para optimizar hardware Tambien tiene cabecera y parte de datos Sobre Marcos( Frames) de Ethernet IP packets are encapsulated within frames, where the IP packet fits within the Data part of the frame. A frame may, however, be too small to hold an entire IP packet, in which case the IP packet is split into several smaller packets. This group of smaller IP packets is then given an identifying number, 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. On the other side of the connection, the destination machine will reconstruct a packet from all the smaller subpackets that have the same Identification field.

MAC Start Dest. Source Length / Client MAC Preamble Frame MAC Type (2- Data (7-bytes) Delimiter Address Address bytes) (0-n (1-byte) (6-bytes) (6-bytes) bytes) Un direccin de IP es 32 bits.

Pad (0-p bytes)

Frame Check Sequence (4-bytes)

Un direccin IP en una forma para leer ms sencillo es una notacin con decimales y puntos: p.ej. 152.2.254.81, Debido que un octet puede ser del rango 0 hasta 255, una direccin puede ser desde 0.0.0.0 hasta 255.255.255.255

Hay dos partes de la direccin, una de red y otra de host

Parte de red identifica el LAN Parte de host, identifica un Mquina 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 nmero < 128 Siguiente 7 bits dar la identidad del LAN, Siguiente 24 bits dar la identidad de la mquina dentro de LAN. Clase B: empieza por 1 y a continuacin un 0 Primer nmero decimal es siempre 128 hasta 191. Las siguientes 14 bits dado es para especificar el LAN, Las 16 bits restantes espcifican la mquina Clase C: empieza 1 1 0 Primer nmero es siempre entre 192 hasta 223 Los siguientes 21 bits especifican el LAN Los 8 bits restantes especifican la mquina

Direcciones IP Especiales Algunas direcciones IP nunca estan utilizadas: 192.168.0.0 hasta 192.168.255.255 son direcciones privadas para usa solo dentro de un LAN local que no comunica en Internet 127.0.0.0 hasta 127.255.255.255 estan utilizada para comunicar con el host local: localhost que es la propia mquina. 127.0.0.1 se utiliza para loopback 172.16.0.0 hasta 172.31.255.255

son direcciones privadas adicionales para redes internos muy grandes; 10.0.0.0 hasta 10.255.255.255 estan utilizadas para redes internos enormes. Vamos a ver que hay un cierto sobrecargo de comunicacin dentro de redes locales.. Con cuidado con el red interno que selecciona.

Mascaras de Red y Direcciones Ejemplo: Universidad con direccin con Clase B Tiene rango de IP entre 137.158.0.0 hasta 137.158.255.255. Dicide que un departamento X va a tener 512 para su propio direcciones: Ellos tiene 137.158.26.0 hasta 137.158.27.255. Departamento X tiene una direccin de red 137.158.26.0. Todos los mquinas en este red van a tener un masquera de red: 255.255.254.0. Una mquina particular puede tener una direccin IP 137.158.27.158

Interfaces para conectar al LAN Tarjetas de Ethernet tiene un interfaz en Linux con el nombre eth0 Si hay ms que una tarjeta, entonces los interfaces son: eth0, eth1, eth2, etc., Cada una es un interfaz de red, para la mquina

Funcionamiento de LANs Tarjetas de red envan una frame al LAN para que otros tarjetas de red puede leer este frame en el LAN. Todos los tarjetas en el LAN puede ver este frame. Colisiones puede ocurrir, pero se envia el frame otra vez un momento despues Cada tarjeta tiene un direccin fsica: direccin de hardware (MAC) 48 bits Parte del nmero indica el fabricante. Cada frame tiene un direccin de destino; los que no pertenece, no ignora frames que no estan dirigidas hacia ellos. Transimisin esta gobernada por las tarjetas, la direccin de hardware del destino tiene que estar determinada del direccin IP antes de que un paquete esta enviada. Se hace con un protocolo: ARP (address resolution protocol) ARP: Paquetes especiales estan enviadas para determinar direcciones de hardware que corresponde a determinada IP. Este informacin se guarda en tablas Se produce retrasos si despues el hardware esta cambiado.

Configuracin 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 mquina Si haces telnet a tu propio mquina, estas conectando hacia el loopback, El comando ifconfig ( inter face configure) esta utilizada para configurar y hacer consultas al interfaces

Para eliminar cualquier definicin de interfaz existente


/sbin/ifconfig lo down /sbin/ifconfig eth0 down

Para crear el interfaz de loopback:


/sbin/ifconfig lo 127.0.0.1

Para crear el interfaz de Ethernet:


/sbin/ifconfig eth0 192.168.3.9 broadcast 192.168.3.255 netmask 255.255.255.0

La direccin broadcast es una direccin especial que todos los mquinas dar un respuesta. Para consultar la configuracin: utiliza /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:00:E8:3B:2D:A2 inet addr:192.168.3.9 Bcast:192.168.3.255 Mask:255.255.255.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.0.0.1 Mask:255.0.0.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 direccin de hardware; la tarjeta de red tiene su MAC: (hex bytes 00:00:E8:3B:2D:A2). Routing Tenemos que indicar al kernel como encaminar paquetes, aunque las interfaces estn hechas. Cualquier paquete que viene a travs de un interfaz esta analizada por el ncleo. El ncleo examina la direccin de destino para determinar como encaminar el paquete. (no importa de donde viene) Por ejemplo: Paquetes que tiene direccin 127.x.x.x tiene que ir al loopback

Configuracin de Routing
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo

agrega una ruta a la red 127.0.0.0 El dispositivo eth0 se puede configurar como la siguiente:
/sbin/route add -net 192.168.3.0 netmask 255.255.255.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.0.0 0.0.0.0 192.168.3.0 0.0.0.0 Genmask 255.0.0.0 255.255.255.0 Flags Metric Ref U 0 0 U 0 0 Use Iface 0 lo 0 eth0

Significa paquetes con la destinacin 127.0.0.0/255.0.0.0 Tiene que esta enviada al loopback Y paquetes con 192.168.3.0/255.255.255.0 Se envia al eth0.'' Gateway es cero: no esta utilzada aqu Route y Gateways En nuestra ejemplo la tabla ecamina paquetes con 127. y 192.168.3. Ahora tenemos que indicar como encaminar todo lo dems direcciones. En Linux/Unix, se puede enviar un paquete a una destinacin de una mquina en el LAN, que despues se forward a otro sitio Este se llama GATEWAY.

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. Este ruta es el default gateway. default significa todo lo demas direcciones. Comando de route equivalente: /sbin/route
add -net 0.0.0.0 netmask 0.0.0.0 gw <gateway-ip-address> \ <interface>

Comando hostname Se puede fijar el nombre de la mquina con el comando hostname:

hostname cericon.cranzgot.co.za

/sbin/ifconfig lo down /sbin/ifconfig eth0 down /sbin/ifconfig lo 127.0.0.1 /sbin/ifconfig eth0 192.168.3.9 broadcast 192.168.3.255 netmask 255.255.255.0 /sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo /sbin/route add -net 192.168.3.0 netmask 255.255.255.0 eth0 /sbin/route add default gw 192.168.3.254 eth0 hostname cericon.cranzgot.co.za

Una resumen de todos los comandos en nuestra ejemplo es:

Configuracin de Scripts de inicializacin Cada distribucin es un poco diferente: Sistemas RedHat contiene el directorio /etc/sysconfig/, que contiene ficheros de configuracin para iniciar networking. El fichero /etc/sysconfig/network-scripts/ifcfg-eth0 contiene:

DEVICE=eth0 IPADDR=192.168.3.9 NETMASK=255.255.255.0 NETWORK=192.168.3.0 BROADCAST=192.168.3.255 ONBOOT=yes

Son equivalente a todo lo que hicimos Anteriormente en nuestro ejemplo. Estos ficheros se puede utilizar muchas opciones; Se puede usar otras protocolos que no son de IP Estos son los configuraciones ms comunes. El fichero: /etc/sysconfig/network
NETWORKING=yes HOSTNAME=cericon.cranzgot.co.za GATEWAY=192.168.3.254

/etc/sysconfig/network-scripts/ifcfg-lo

para el dispositivo loopback se configura automaticamente en instalacin; (no tiene que editarlo) Para stop y start networking (comenzar y apagar el interfaz de networking y routing)

/etc/init.d/network stop ( /etc/rc.d/init.d/network stop ) /etc/init.d/network start ( /etc/rc.d/init.d/network start )

Leer directamente los ficheros de


/etc/sysconfig/

Puede agragar, ifcfg-eth1 (en directorio /etc/sysconfig/network-scripts/ ) para un dispositivo secundario Ethernet. Por ejemplo, ifcfg-eth1 puede contener la siguiente:

DEVICE=eth1 IPADDR=192.168.4.1 NETMASK=255.255.255.0 NETWORK=192.168.4.0 BROADCAST=192.168.4.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 mquinas, uno en cada LAN, estan enlazada por un metodo alternativo (por ejemplo con un linea serie Resumir con cinco mquinas: X, A, B, C, y D. mquinas X, A, y B forma el LAN 1 en el subred 192.168.1.0/26. mquinas C y D forma el LAN 2 en el subred 192.168.1.128/26. Usamos `` /26'' para indicar que solo los primeros 26 bits son los bits de direccin de red, mientras los dems son de los bits de host. Un enlace serial esta dentro mquinas B y C que forman otra LAN.

eth0: 192.168.1.13

D
ppp0: 192.168.1.25

eth0:

192.168.1.128

192.168.1.0

eth0: 192.168.1. eth0:

eth0: 192.168.1.12

ppp0: 192.168.1.25

Intern

Mquina X tiene IP address 192.168.1.1 Sirve como gateway al Internet. Ethernet de B esta configurado con el IP address de 192.168.1.2 con una default gateway de 192.168.1.1. La direccin de broadcast 192.168.1.63 - los ltimos 6 bits iguala 1 Interfaz de ethernet de C esta configurado con una direccin IP 192.168.1.129. No default gateway esta configurada hasta que se configura interfaz serial. La red entre B y C es el subred 192.168.1.192/26. Es como un LAN independiente, Mquinas B y C va a tener direcciones IP 192.168.1.252 y 192.168.1.253, respectivamente. Para utilizar el enlace serial, hay que utilizar el pppd comando. Require un script para remplezar pppd si corte The script for Machine B is:

#!/bin/sh while true ; do pppd lock local mru 296 mtu 296 nodetach nocrtscts nocdtrcts \ 192.168.1.252:192.168.1.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),

Y un LAN entre B y C (con subred 192.168.1.252/26), Entonces el script ser

/sbin/ifconfig eth1 192.168.1.252 broadcast 192.168.1.255 netmask 255.255.255.192

Routing en mquina B esta hecha con la siguiente script, si el enlace serial esta funcionando. Este script se ejecuta cuando pppd iniciada la conexin Esta en /etc/pppd/ip-up, que pppd ejecuta automaticamente cuando el interfaz ppp0 esta disponible
del add add add default -net 192.168.1.192 netmask 255.255.255.192 dev ppp0 -net 192.168.1.128 netmask 255.255.255.192 gw 192.168.1.253 default gw 192.168.1.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.168.1.2 192.168.1.253 192.168.1.0 192.168.1.192 192.168.1.128 127.0.0.0 0.0.0.0 eth0 lo ppp0 Link inet Link inet Link inet Gateway 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 192.168.1.253 0.0.0.0 192.168.1.1 Genmask 255.255.255.255 255.255.255.255 255.255.255.192 255.255.255.192 255.255.255.192 255.0.0.0 0.0.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.168.1.2 Bcast:192.168.1.63 Mask:255.255.255.192 encap:Local Loopback addr:127.0.0.1 Mask:255.0.0.0 encap:Point-to-Point Protocol addr:192.168.1.252 P-t-P:192.168.1.253 Mask:255.255.255.255

En mquina C, ejecuta un script parecido


#!/bin/sh while true ; do pppd lock local mru 296 mtu 296 nodetach nocrtscts nocdtrcts \ 192.168.1.253:192.168.1.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.168.1.192 netmask 255.255.255.192 dev ppp0 /sbin/route add default gw 192.168.1.252 echo 1 > /proc/sys/net/ipv4/ip_forward

Tabla de encaminamiento en mquina C:


Kernel IP routing table Destination Gateway 192.168.1.129 0.0.0.0 192.168.1.252 0.0.0.0 192.168.1.192 0.0.0.0 192.168.1.128 0.0.0.0 127.0.0.0 0.0.0.0 Genmask 255.255.255.255 255.255.255.255 255.255.255.192 255.255.255.192 255.0.0.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

0.0.0.0

192.168.1.252

0.0.0.0

UG

0 ppp0

eth0 lo ppp0

Link inet Link inet Link inet

encap:Ethernet HWaddr 00:A0:CC:D5:D8:A7 addr:192.168.1.129 Bcast:192.168.1.191 Mask:255.255.255.192 encap:Local Loopback addr:127.0.0.1 Mask:255.0.0.0 encap:Point-to-Point Protocol addr:192.168.1.253 P-t-P:192.168.1.252 Mask:255.255.255.255

Mquina D puede estar configurado como cualquier mquina en un LAN. Fijar el default gateway to 192.168.1.129. Machine A, tiene que saber como enviar paquetes a subred 192.168.1.128/26 a traves de mquina B. tabla de routing tiene otra entrada para 192.168.1.128/26 LAN. Tabla de routing para mquina A es:
Kernel IP routing table Destination Gateway 192.168.1.0 0.0.0.0 192.168.1.128 192.168.1.2 127.0.0.0 0.0.0.0 0.0.0.0 192.168.1.1 Genmask 255.255.255.192 255.255.255.192 255.0.0.0 0.0.0.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 fsica Si tienes una tarjeta de red, se puede poner ms que un IP Nombrar interfaz eth0:n, donde n es de 0 hasta un numero grande entero Utilizar ifconfig como antes Habilitar este opcin en el ncleo

/sbin/ifconfig eth0:0 192.168.4.1 broadcast 192.168.4.255 netmask 255.255.255.0 /sbin/ifconfig eth0:1 192.168.5.1 broadcast 192.168.5.255 netmask 255.255.255.0 /sbin/ifconfig eth0:2 192.168.6.1 broadcast 192.168.6.255 netmask 255.255.255.0

En este ejemplo: La misma interfaz puede comunicar con tres LANs que tiene 192.168.4.0, 192.168.5.0, 192.168.6.0. Utilidades Ping: El comando ping es el utilidad de red ms comn. Hay tres tipos de paquetes IP: UDP, TCP, y ICMP ICMP significa Internet Control Message Protocol y es un paquete diagnostica que funciona en una manera especial: ping metalab.unc.edu
PING metalab.unc.edu (152.19.254.81) from 192.168.3.9 : 56(84) bytes of data. 64 bytes from 152.19.254.81: icmp_seq=0 ttl=238 time=1059.1 ms 64 bytes from 152.19.254.81: icmp_seq=1 ttl=238 time=764.9 ms 64 bytes from 152.19.254.81: icmp_seq=2 ttl=238 time=858.8 ms 64 bytes from 152.19.254.81: icmp_seq=3 ttl=238 time=1179.9 ms 64 bytes from 152.19.254.81: icmp_seq=4 ttl=238 time=986.6 ms 64 bytes from 152.19.254.81: icmp_seq=5 ttl=238 time=1274.3 ms 64 bytes from 152.19.254.81: icmp_seq=6 ttl=238 time=930.7 ms

Ping envia paquetes ICMP a metalab.unc.edu, que contesta con un paquete ICMP. Para probar si un interfaz esta funcionando, ping es la primer prueba. Ping envia un paquete cada segundo mide el tiempo que tarda para recibir En LAN local, debe ser menus que un milisegundo; 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, o con la opcin -I , paquetes ICMP para detectar routing

traceroute to metalab.unc.edu (152.19.254.81), 30 hops max, 38 byte packets 1 192.168.3.254 (192.168.3.254) 1.197 ms 1.085 ms 1.050 ms 2 192.168.254.5 (192.168.254.5) 45.165 ms 45.314 ms 45.164 ms 3 cranzgate (192.168.2.254) 48.205 ms 48.170 ms 48.074 ms 4 cranzposix (160.124.182.254) 46.117 ms 46.064 ms 45.999 ms 5 cismpjhb.posix.co.za (160.124.255.193) 451.886 ms 71.549 ms 173.321 ms 6 cisap1.posix.co.za (160.124.112.1) 274.834 ms 147.251 ms 400.654 ms 7 saix.posix.co.za (160.124.255.6) 187.402 ms 325.030 ms 628.576 ms 8 ndf-core1.gt.saix.net (196.25.253.1) 252.558 ms 186.256 ms 255.805 ms 9 ny-core.saix.net (196.25.0.238) 497.273 ms 454.531 ms 639.795 ms 10 bordercore6-serial5-0-026.WestOrange.cw.net (166.48.144.105) 595.755 ms 595.174 ms * 11 corerouter1.WestOrange.cw.net (204.70.9.138) 490.845 ms 698.483 ms 1029.369 ms 12 core6.Washington.cw.net (204.70.4.113) 580.971 ms 893.481 ms 730.608 ms 13 204.70.10.182 (204.70.10.182) 644.070 ms 726.363 ms 639.942 ms 14 mae-brdr-01.inet.qwest.net (205.171.4.201) 767.783 ms * * 15 * * * 16 * wdc-core-03.inet.qwest.net (205.171.24.69) 779.546 ms 898.371 ms 17 atl-core-02.inet.qwest.net (205.171.5.243) 894.553 ms 689.472 ms * 18 atl-edge-05.inet.qwest.net (205.171.21.54) 735.810 ms 784.461 ms 789.592 ms 19 * * * 20 * * unc-gw.ncren.net (128.109.190.2) 889.257 ms 21 unc-gw.ncren.net (128.109.190.2) 646.569 ms 780.000 ms * 22 * helios.oit.unc.edu (152.2.22.3) 600.558 ms 839.135 ms

tcpdump tcpdump mira un interfaz particular para todo el trfico que pasa Todo el trafico de todos las mquinas conectada a la misma segmento de red. Una tarjeta de red coge todo las frames que estan destinada a el Tcpdump coge todos los frames, sin importar su destinacin
tcpdump -n -N -f -i eth0

Trazado de ruta a 193.147.87.130 desde Veloxia Network (Alicante, Espaa) Salto 1 2 3 Nombre de Host Prdidas Latencia vlan2.ms1.elda.veloxia.net 0% 0.33 ms fe1-0.cr1.elda.veloxia.net 0% 0.37 ms se5-10% 8.14 ms

4 5 6 7 8 9 10 11 12 13

0.br1.madrid.veloxia.net ae0-300-mad1eg02.iber0% x.net ge-1-1-00% 2.mad40.ip.tiscali.net rediris-1.espanix.net 0% ESP.SO3-0-0.EB0% IRIS4.red.rediris.es SO0-0-0.EB0% IRIS4.red.rediris.es NAC.SO3-0-0.EB0% Santiago0.red.rediris.es cesga-router.red.rediris.es 0% 193.144.32.6 0% -- desconocido, posible 100% firewall -pcolivieri.ei.uvigo.es 0%

8.71 ms 9.78 ms 10.48 ms 9.79 ms 10.54 ms 20.19 ms 23.27 ms 23.70 ms 0.00 ms 22.84 ms

Traceroute to 193.147.87.130 from atl-engr-01.inet.qwest.net


traceroute to 193.147.87.130 (193.147.87.130), 30 hops max, 40 byte packets 1 atl-svcs01 (205.171.21.214) 0.651 ms 0.384 ms 0.359 ms 2 atl-core-02 (205.171.21.17) 0.438 ms 0.437 ms 0.415 ms 3 dca-core-02 (205.171.8.154) 16.038 ms 16.010 ms 15.976 ms 4 dca-core-03 (205.171.9.50) 16.053 ms 16.000 ms 15.990 ms 5 jfk-core-03 (205.171.8.217) 19.967 ms 19.995 ms 20.023 ms 6 jfk-brdr-02 (205.171.230.25) 19.894 ms 19.873 ms 19.896 ms 7 nyk-bb2-pos0-3-1.telia.net (213.248.82.245) 20.147 ms 20.133 ms 20.092 ms 8 nyk-bb1-pos0-0-0.telia.net (213.248.80.133) 20.365 ms 20.340 ms 20.369 ms 9 ldn-bb1-pos6-0-0.telia.net (213.248.65.89) 121.233 ms 121.190 ms 121.166 ms10 ldn-bb2-pos0-0-0.telia.net (213.248.64.162) 121.031 ms 121.152 ms 121.014 ms11 prs-bb2-pos1-1-0.telia.net (213.248.64.166) 127.151 ms 127.242 ms 127.219 ms12 213.248.70.14 (213.248.70.14) 127.243 ms 127.179 ms 127.269 ms13 madb1-pos0-0.telia.net (213.248.75.6) 150.337 ms 150.388 ms 150.366 ms14 dante-01354mad-val-i1.c.telia.net (213.248.71.30) 134.282 ms 134.452 ms 134.385 ms15 NAC.SO3-00.EB-Santiago0.red.rediris.es (130.206.240.34) 143.223 ms 143.275 ms 143.287 ms16 cesga-router.red.rediris.es (130.206.204.22) 143.275 ms 143.348 ms 143.247 ms17 193.144.32.6 (193.144.32.6) 144.109 ms 144.082 ms 147.601 ms18 * * *19 pcolivieri.ei.uvigo.es (193.147.87.130) 146.564 ms 168.079 ms 146.618 ms

Tema-10 Aspectos de TCP y UDP Comunicacin con TCP Comunicacin de TCP tiene tres etapas: negociacin Transferencia disconexin TCP: Negociacin 1. Aplicacin de cliente (p.ej. web browser) inicia la conexin utilizando connect() 2. El ncleo envia un paquete SYN (SYNchronization) al servidor de remota con TCP server (en este caso un servidor de web). 3. El servidor de web contesta con un paquete de SYN-ACK packet (ACKnowledge), 4. El cliente contesta con un paquete SYN

Cliente App Connect()

Kernel:

2. SYN packet

3. SYN-ACK

Remote Web Server

TCP: Transferencia Programador utiliza funciones de llamadas send() o recv() C para enviar/recibir un flujo de bytes. El flujo de bytes estan en paquetes para enviar al aplicacin remoto. En ejemplo de servidor de web, los primeros bytes enviadas son la linea GET /index.html HTTP/1.0<CR><NL><CR><NL>. En lado remoto, paquetes de contestacin o (ACK paquetes) estan enviada cuando recibe paquetes, indicando si algunas partes del flujo estan ausente y require retransmisin Communicacin es full-duplex Flujos en los direcciones simultaneamente.

TCP: Disconexin: Programador utiliza shutdown() y close() para terminar la conexin Un paquete FIN se envia para que la comunicacin TCP termina. Puertos Motivacin: Queremos que muchas aplicaciones pueden comunicar Simultaneamente. Puertes Fuente/Destino identifica y distinguir flujos individuales. El ncleo utiliza estos nmeros de puertos en las paquetes que entra para determinar cual aplicacin require estos paquetes. Puertos aleatorios estan seleccionada para salida en local mquina Ejemplo de Comunicacin de Web: En el caso de Web: puerto de destino es puerto 80. Ejemplo de un Sesin TCP Utiliza telnet para ver intenta entrar en una mquina.

root@cericon]# host cnn.com cnn.com has address 207.25.71.20

Tcpdump que indica selecciona los paquetes para todos los que tiene fuente ( src) o destino ( dst) o CNN. root@cericon]# tcpdump \ '( src 192.168.3.9 and dst 207.25.71.20 ) or ( src 207.25.71.20 and dst 192.168.3.9 )' Kernel filter, protocol ALL, datagram packet socket tcpdump: listening on all devices Como en ejemplo de web, utiliza comandos de HTTP con el comando GET / HTTP/1.0 Los primeros y ltimas de este sessin estan aqu

[root@cericon root]# telnet 207.25.71.20 80 Trying 207.25.71.20... Connected to 207.25.71.20. Escape character is '^]'. GET / HTTP/1.0 HTTP/1.0 200 OK Server: Netscape-Enterprise/2.01 Date: Tue, 18 Apr 2000 10:55:14 GMT Set-cookie: CNNid=cf19472c-23286-956055314-2; expires=Wednesday, 30-Dec2037 16:00:00 GMT; path=/; domain=.cnn.com Last-modified: Tue, 18 Apr 2000 10:55:14 GMT Content-type: text/html <HTML> <HEAD> <TITLE>CNN.com</TITLE> <META http-equiv="REFRESH" content="1800"> <!--CSSDATA:956055234--> <SCRIPT src="/virtual/2000/code/main.js" language="javascript"></SCRIPT> <LINK rel="stylesheet" href="/virtual/2000/style/main.css" type="text/css">

<SCRIPT language="javascript" type="text/javascript"> <!--// if ((navigator.platform=='MacPPC')&&(navigator.ap </BODY> </HTML> Connection closed by foreign host. En otra terminal, tcpdump demuestra las paquetes que se intercambia. tcpdump demuestra nombres no direcciones IP y www de vez de 80. The local ``random'' port in this case was 4064.

[root@cericon]# tcpdump \ '( src 192.168.3.9 and dst 207.25.71.20 ) or ( src 207.25.71.20 and dst 192.168.3.9 )' Kernel filter, protocol ALL, datagram packet socket tcpdump: listening on all devices 12:52:35.467121 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: S 2463192134:2463192134(0) win 32120 <mss 1460,sackOK,timestamp 154031689 0,nop,w scale 0 12:52:35.964703 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: S 4182178234:4182178234(0) ack 2463192135 win 10136 <nop,nop,timestamp 1075172823 154031 12:52:35.964791 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: . 1:1(0) ack 1 win 32120 <nop,nop,timestamp 154031739 1075172823> (DF) 12:52:46.413043 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: P 1:17(16) ack 1 win 32120 <nop,nop,timestamp 154032784 1075172823> (DF) 12:52:46.908156 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: . 1:1(0) ack 17 win 10136 <nop,nop,timestamp 1075173916 154032784> 12:52:49.259870 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: P 17:19(2) ack 1 win 32120 <nop,nop,timestamp 154033068 1075173916> (DF) 12:52:49.886846 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: P 1:278(277) ack 19 win 10136 <nop,nop,timestamp 1075174200 154033068> 12:52:49.887039 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: . 19:19(0) ack 278 win 31856 <nop,nop,timestamp 154033131 1075174200> (DF) 12:52:50.053628 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: . 278:1176(898) ack 19 win 10136 <nop,nop,timestamp 1075174202 154033068> 12:52:50.160740 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: P 1176:1972(796) ack 19 win 10136 <nop,nop,timestamp 1075174202 154033068> 12:52:50.220067 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: . 19:19(0) ack 1972 win 31856 <nop,nop,timestamp 154033165 1075174202> (DF) 12:52:50.824143 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: . 1972:3420(1448) ack 19 win 10136 <nop,nop,timestamp 1075174262 154033131> 12:52:51.021465 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: . 3420:4868(1448) ack 19 win 10136 <nop,nop,timestamp 1075174295 154033165> 12:53:13.856919 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: . 19:19(0) ack 53204 win 30408 <nop,nop,timestamp 154035528 1075176560> (DF) 12:53:14.722584 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: . 53204:54652(1448) ack 19 win 10136 <nop,nop,timestamp 1075176659 154035528> 12:53:14.722738 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: . 19:19(0) ack 54652 win 30408 <nop,nop,timestamp 154035615 1075176659> (DF) 12:53:14.912561 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: . 54652:56100(1448) ack 19 win 10136 <nop,nop,timestamp 1075176659 154035528> 12:53:14.912706 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: . 19:19(0) ack 58500 win 30408 <nop,nop,timestamp 154035634 1075176659> (DF) 12:53:15.706463 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: . 58500:59948(1448) ack 19 win 10136 <nop,nop,timestamp 1075176765 154035634> 12:53:15.896639 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: . 59948:61396(1448) ack 19 win 10136 <nop,nop,timestamp 1075176765 154035634>

12:53:15.896791 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: . 19:19(0) ack 61396 win 31856 <nop,nop,timestamp 154035732 1075176765> (DF) 12:53:16.678439 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: . 61396:62844(1448) ack 19 win 10136 <nop,nop,timestamp 1075176864 154035732> 12:53:16.867963 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: . 62844:64292(1448) ack 19 win 10136 <nop,nop,timestamp 1075176864 154035732> 12:53:16.868095 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: . 19:19(0) ack 64292 win 31856 <nop,nop,timestamp 154035829 1075176864> (DF) 12:53:17.521019 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: FP 64292:65200(908) ack 19 win 10136 <nop,nop,timestamp 1075176960 154035829> 12:53:17.521154 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: . 19:19(0) ack 65201 win 31856 <nop,nop,timestamp 154035895 1075176960> (DF) 12:53:17.523243 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: F 19:19(0) ack 65201 win 31856 <nop,nop,timestamp 154035895 1075176960> (DF) 12:53:20.410092 eth0 > cericon.cranzgot.co.za.4064 > www1.cnn.com.www: F 19:19(0) ack 65201 win 31856 <nop,nop,timestamp 154036184 1075176960> (DF) 12:53:20.940833 eth0 < www1.cnn.com.www > cericon.cranzgot.co.za.4064: . 65201:65201(0) ack 20 win 10136 <nop,nop,timestamp 1075177315 154035895> 103 packets received by filter Explanacin de Salida Linea 5, 7, y 9 estan en etapa de negociacin. tcpdump utiliza formato <Sequence number>:<Sequence number + data length>(<data length>) en cada linea para indicar el contexto del pauete dentro flujo Sequence number,esta elijido aleatoriamente, 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. El``ack 19''s indica cuando el servidor de CNN's ha recibida los datos; en este caso 19 bytes, 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 terminacin

User Datagram Protocol (UDP) Comunicacin fiable no es siempre necesario Ejemplos: Comunicacin con servidores de nombres Transmisin de voz (ms importante eliminar retrasos) Con UDP el programador envia recibe paquets individuales encapsulada dentro de IP. Puertos estan utilizada en la misma manera de TCP, pero solo como identificadores y no concepto de flujo.

Fichero /etc/services Distintos tipos de servicios utiliza puertos estandares. Puertos 1 hasta 1023 estan reservadas para servicios y podemos asociar un nombre con ellos. Todos los servicios tiene definiciones para TCP como para UDP incluso si no existe comunicacin con este metodo Ejemplo No existe UDP para acceso con FTP, pero esta definida.

Puertos debajo 1024 estan utilizada excusivamente para programas de root uid como mail, DNS, servicios web. Programas de usuarios no se puede bind a puertos debajo 1024. binding es como se reserva una puerto para escuchar para conexiones de entrada.

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

Encriptacin con TCP El flujo de TCP se puede reconstruir no es seguro! Quisimos encriptar nuestro datos entre cliente y servidor Encriptacin debe tener siguientes propiedades 1. Debe autentificar el servidor para asegurar que no es un trojan 2. Trafico debe ser encriptada para que es imposible leer 3. Debe ser imposible modificar datos sin estar detectado. Existe paquetes para este tipo de encriptacin

Ejemplo: queremos utilizar POP3 para recibir correo de un mquina remoto Podemos verificar que POP3 esta funcionado haciendo log en el servidor de POP3 Ejecutar telnet al puerto 110 (i.e., the POP3 service) en la siguiente manera: Verifica que

Pop3 esta ejecutando telnet localhost 110 Connected to localhost.localdomain. Escape character is '^]'. +OK POP3 localhost.localdomain v7.64 server ready QUIT +OK Sayonara Connection closed by foreign host.

OpenSSH package. Inicializar el demonio de sshd (Secure Shell). 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, 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 mquina cliente elegir un puerto abritrario que no se usa para escuchar; en este caso 12345:

telnet localhost 12345 Sshd

Cliente

12345

Puerto para escuchar

Pop3d Server

Ssh 12345:pop:110pop

110

ipop3d

ssh -C -c arcfour -N -n -2 -L 12345:<pop3-server.doma.in>:110 \ <pop3-server.doma.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 mquina cliente, ejecutamos: telnet localhost 12345

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

Tema-11 Resolucin de nombres y DNS


Motivacin: Aunque cada mquina tiene direccin, 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). Groups of computers have a domain name.

El nombre completo: unqualified_host_name .domain_name, fully qualified host name Configuracin de Mquina local Los ficheros de configuracin son: /etc/host.conf, /etc/hosts, and /etc/resolv.conf. Especificar como las aplicaciones en la mquina local va a resolver nombres direcciones IP numbers; No tiene relacin con el demonio de servidor de nombres. Para buscar un nombre de host, va a hacer las siguientes procedimiento. The following are equivalent to steps 1, 2, and 3 above, with the details of the configuration files filled in. The configuration files that follow are taken from an actual installation.

1. The application checks the file /etc/host.conf. This file will usually have a line order hosts,bind in it, specifying that it should first ( hosts) check the local database file /etc/hosts, and then ( bind) query the name server specified in /etc/resolv.conf. The file /etc/hosts contains a plain text list of IP addresses and names. An example is given below. If the application can get an answer directly from /etc/hosts, it proceeds no further. 2. The application checks in the file /etc/resolv.conf for a line nameserver <nameserver>. There can actually be three of these lines so that if one name server fails, the application can try the next in turn. 3. The application sends to the name server a query with the host name. If the host name is unqualified, then the application, before trying the query, appends to the host name a local domain name. A line search <domain1> <domain2> ... <domainN> may appear in the configuration file to facilitate this. A query is made with each of <domain1>, <domain2> etc. appended in turn until the query successfully returns an IP. This just saves you having to type in the full host name for computers within your own organization. 4. The name server proceeds with the hierarchical queries described from step 4 onward. El fichero /etc/hosts
127.0.0.1 192.168.3.9 192.168.3.10 192.168.2.1 localhost.localdomain cericon.uvigo.es pepper.uvigo.es onion.uvigo.es localhost cericon pepper onion

The hosts pepper, cericon, and onion are the hosts that this machine has the most communication with, and hence are listed here. cericon is the local machine and must be listed. You can list any hosts to which you want fast lookups, or hosts that might need to be known in spite of name servers being down.

/etc/host.conf
order hosts, bind, nis trim some.domain spoofalert nospoof multi on reorder

order The order in which lookups are done. Don't try fiddling with this value. It never seems to have any effect. You should leave it as order hosts,bind (or order hosts,bind,nis if you are using NIS--search for the NIS-HOWTO on the web.) Once again, bind means to then go and check the /etc/resolv.conf which holds the name server query options. trim Strip the domain some.domain from the end of a host name before trying a lookup. You will probably never require this feature. spoofalert Try reverse lookups on a host name after looking up the IP (i.e., do a query to find the name from the IP). If this query does not return the correct result, it could mean that some machine is trying to make it look like it is someone it really isn't. This is a hacker's trick called spoofing. spoofalert warns you of such attempts in your log file /var/log/messages. nospoof Disallow results that fail the spoof test. multi on Return more than one result if there are aliases. Actually, a host can have several IP numbers, and an IP number can have several host names. Consider a computer that might want more than one name ( ftp.cranzgot.co.za and www.cranzgot.co.za are the same machine.) Or a machine that has several networking cards and an IP address for each. This option should always be turned on. multi off is the alternative. Most applications use only the first value returned. reorder If more than one IP is returned by a lookup, then sort that list according to the IP that has the most convenient network route.

/etc/resolv.conf
nameserver 192.168.2.1 nameserver 160.123.76.1 nameserver 196.41.0.131 search cranzgot.co.za ct.cranzgot.co.za uct.ac.za sortlist 192.168.3.0/255.255.255.0 192.168.2.0/255.255.255.0 options ndots:1 timeout:30 attempts:2 rotate no-check-names inet6

nameserver Specifies a name server to query. No more than three may be listed. The point of having more than one is to safeguard against a name server being down; the next in the list will then be queried. search If given a host name with less than ndots dots (i.e., 1 in this case), add each of the domains in turn to the host name, trying a lookup with each. 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. You can have up to six domains, but then queries would be time consuming. domain The line `` domain ct.cranzgot.co.za'' is the same as `` search ct.cranzgot.co.za cranzgot.co.za co.za''. Always use search explicitly instead of domain to reduce the number of queries to a minimum. sortlist If more than one host is returned, sort them according to the following network /masks. options Various additional parameters can be specified in this one line: ndots Explained under search above. The default is 1. timeout How long to wait before considering a query to have failed. The default is 30 seconds. attempts Number of attempts to make before failing. The default is 2. 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.

rotate Try the name servers in round robin fashion. This distributes load across name servers. no-check-names Don't check for invalid characters in host names. inet6 The man page for resolv.conf ( resolver(5)) says: inet6 sets RES_USE_INET6 in _res.options . This has the ef- fect of trying a AAAA query before an A query inside the gethostbyname function, and of mapping IPv4 responses in IPv6 ``tunnelled form'' if no AAAA records are found but an A record set exists.

Reverse Lookups reverse lookup, mentioned under nospoof, is the determining of the host name from the IP address. 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. A forward lookup is an ordinary lookup of the IP address from the host name. Documentos que existe para Formulario de solicitud de Dominios RFC-1034. Domain Names. Concepts and Facilities. RFC-1035. Domain Names. Implementation and Specification. RFC-1591. Domain Name System Structure and Delegation. RFC-1912. Common DNS Operational and Configuration Errors. RFC-2219. Use of DNS Aliases for Network Services. RFC-2317. Classless IN-ADDR.ARPA delegation. RIPE-114. Taking care of your domain. RIPE-192. Simple DNS configuration example. RIPE-203. Recommendations for DNS SOA values. URLs. http://www.isc.org/bind.html http://www.dns.net/dnsrc/ Bibliografia. DNS & BIND 4th Edition. Paul Albitz & Cricket Liu. O'Really & Associates.

Top-Level Domains (TLDs)

Para la estructura se adopt en forma de rbol invertido, a cada rama le corresponde un nombre alfanumrico Al nivel mas alto, la raz, no se le ha dado ningn nombre especial.

Debajo de este estn los nombres de dominio de alto nivel, TLDs ("Top Level Domain Names"). En este nivel se establecieron en principio 8 dominios genricos (una especie de apellidos) que englobaran los diversos dominios segn un esquema que dependa del tipo de institucin que utiliza el nombre.

An Internet service provider (ISP). In fact, any bandwidth reseller, IT company, or any company at all might have a .net domain. Los TLDs originales de ARPANET eran 4 a los que posteriormente se aadieron otros 4, son los siguientes: .com Empresas comerciales. .edu Educacional (Universidades y colegios). .org Organizaciones de fin no lucrativo. .net Redes de ordenadores independientes pero conectados a Internet .int Internacional. .gov Gobierno (Organismos oficiales USA) .mil Organismos militares USA .nato Organizacin del Tratado del Atlntico Norte (OTAN/NATO). Con la explosin de Internet, cuando ya haba instituciones y organismos de los cinco continentes y prcticamente de todos los pases, hubo que ampliar el sistema, utilizando terminaciones que recordaran al pas correspondiente, por ejemplo: .es Espaa .uk Reino Unido .fr Francia .gi Gibraltar (con protestas por parte de Espaa) .va Vaticano ICANN El organismo internacional que gestiona estos aspectos de Internet es el ICANN una de sus misiones es gestionar la concesin de nombres de dominio, y sus correspondientes direcciones IP, en este sistema telefnico mundial de ordenadores que es el sistema DNS. Actualmente, el ncleo del sistema de nombres lo constituyen 13 ordenadores especiales repartidos por el mundo y controlados por la ICANN, que contienen tablas con los nombres de dominio y sus correspondientes direcciones IP de todos los 2LDs del mundo. Estos ordenadores, denominados servidores raz o tambin TNS ("Top Name Servers"), contienen todos la misma informacin, y constituyen el corazn del sistema de Internet; el hecho de ser 13 es para repartir la carga de trabajo, y el contener todos la misma informacin permite que cada uno sirva de copia de seguridad a los dems. Sin embargo su distribucin no es muy homognea: diez de ellos estn situados en Estados Unidos, dos en Europa (Londres y Estocolmo) y el ltimo en Japn

Lista es de ftp://ftp.rs.internic.net/domain/named.root.] a.root-servers.net 198.41.0.4 b.root-servers.net 128.9.0.107 c.root-servers.net 192.33.4.12 d.root-servers.net 128.8.10.90 e.root-servers.net 192.203.230.10 f.root-servers.net 192.5.5.241 g.root-servers.net 192.112.36.4 h.root-servers.net 128.63.2.53 i.root-servers.net 192.36.148.17 j.root-servers.net 198.41.0.10 k.root-servers.net 193.0.14.129 l.root-servers.net 198.32.64.12 m.root-servers.net 202.12.27.33 Proceso de resolucin de nombre Imgaina que la aplicacin tiene que resolver www.ei.uvigo.es. Que es la secuencia de lookups para resolver este en una direccin IP address. El proceso se llama host name resolution El algoritmo que hace este operacin se llama resolver.

Algoritmo para DNS La aplicacin cheque un base de datos en la mquina local. Si puede conseguir resolucin de nombres, entonces para all La aplicacin busca en un servidor de nombres (geograficamente cercana), que imaginamos se llama ns. La aplicacin queries ns con `` www.ei.uvigo.es?''. ns determina si este IP estaba buscada recientamente; en este caso esta guarda en cache local

www.ei.uvigo.es?

ns

ns mira si el dominio es local. o Es el caso si ns es el mismo servidor de nombres para www.ei.uvigo.es ns quita el TLD (top level domain) es . o Solicita al root name server, preguntando cual es el servidor de nombres responsable para es. o La contestacin es hhh.rediris.es con IP address 137.158.128.1

ns
www.ei.uvigo.es

primer1.rediris.es

ns quita la siguiente dominio ms alta: uvigo.es o queries 137.158.128.1, preguntando cual es el servidor de nombres responsable para uvigo.es. o Se contesta segundo.posix.uvigo.es de IP address 160.124.112.10.

ns
www.ei.uvigo.es

primer1.rediris.es

segundo.posix.uvigo.es

ns queries 196.28.123.1 pidiendo la direccin IP de www.ei.uvigo.es. o La contestacin es 160.123.176.1. ns devuleve resultado al aplicacin. ns guardar cada de estos resultados en un cache local con un fecha de vencimiento, para evitar buscarlo otra vez

ns
www.ei.uvigo.es

primer1.rediris.es

trevinca.ei.uvigo.es

segundo.posix.uvigo.es

Configuracin de BIND en RH9 Herramienta de configuracin de Bind (redhat-config-bind) para configurar las zonas bsicas del servidor de BIND en la versin 8 de BIND. La Herramienta de configuracin BIND crea el archivo de configuracin /etc/named.conf y los archivos de configuracin de zona en el directorio /var/named cada vez que se aplican los cambios. No edite el archivo de configuracin /etc/named.conf. La Herramienta de configuracin de Bind genera este archivo despus de aplicar los cambios. Si desea configurar determinados parmetros que no se pueden configurar usando la Herramienta de configuracin de Bind, adalos a /etc/named.custom. La Herramienta de configuracin de Bind requiere el uso del sistema X Window y acceso como root. Para arrancar la Herramienta de configuracin de Bind, vaya al Men principal (en el Panel) => Configuracin del sistema => Configuracin de servidores => Servicio de nombres de dominio o escriba el comando redhat-config-bind en el intrprete de comandos (por ejemplo, en una ventana de terminal XTerm o GNOME).

Herramienta de configuracin de Bind La Herramienta de configuracin de Bind configura el directorio de zona predeterminado a /var/named. Todos los archivos de zona especificados son relativos a este directorio. La Herramienta de configuracin de Bind tambin incluye una funcin de comprobacin de sintaxis bsica cuando se introducen los valores. Por ejemplo, si una entrada vlida es una direccin IP, el usuario solamente podr escribir los nmeros y el carcter de punto (.) en el rea de texto. La Herramienta de configuracin de Bind le permite agregar una zona maestra de redireccionamiento, una zona maestra inversa y una zona esclava. Tras agregar las zonas, puede editarlas o eliminarlas desde la ventana principal como se muestra en la figura

Despus de agregar, editar o eliminar una zona, debe hacer click en el botn Guardar o seleccionar Archivo => Guardar para escribir el archivo de configuracin /etc/named.conf y todos los archivos de zona individuales en el directorio /var/named. Al aplicar los cambios, el servicio named tambin volver a cargar los archivos de configuracin. Tambin puede seleccionar Archivo => Salir y guardar los cambios antes de salir de la aplicacin.

Agregar una zona maestra de redireccionamiento Para agregar una zona maestra de redireccionamiento (tambin denominada maestra principal), pulse el btn Aadir, seleccione Zona Maestra de Reenvo 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:

Nombre Nombre del dominio que se acaba de introducir en la ventana anterior. Nombre del archivo Nombre del archivo de la base de datos DNS, relacionada con /var/named. Est programado para el nombre de dominio y se le ha aadido .zone. Contacto Direccin de correo electrnico del contacto principal de la zona maestra. Servidor de nombres primario (SOA) Registro de estado de autoridad (SOA). Indica el servidor de nombres considerado como el mejor recurso de informacin para este dominio. Nmero de serie Nmero de serie del archivo de la base de datos DNS. Este nmero ir aumentando cada vez que cambie el archivo; de este modo, los servidores de nombres esclavos de la zona podrn recuperar los ltimos datos. La Herramienta de configuracin de Bind incrementa este nmero cada vez que cambia la configuracin. Tambin se puede aumentar manualmente si se pulsa el botn Configurar que se encuentra junto al valor Nmero serie. Configuracin del tiempo Los valores TTL (Time to Live) Refrescar, Reintentar, Expirar, y Mnimo que se almacenan en el archivo de la base de datos DNS. Todos los valores son en segundos. Registros - Agrega, edita y elimina recursos de registros de tipo Host, Alias y Nombre del servidor. Se debe especificar un Nombre de servidor primario (SOA), y al menos un registro de nombre de servidor se debe especificar haciendo click en el botn Aadir en la seccin Registros. Despus de configurar la Zona maestra de redireccionamiento, haga click en OK para volver a la pantalla principal como se muestra en la Figura. Desde el men, haga click en Guardar para escribir el archivo de configuracin /etc/named.conf, escribir todos los archivos de zona individuales en el directorio /var/named y hacer que el demonio recargue los archivos de configuracin. La configuracin crea una entrada similar a lo siguiente en el archivo /etc/named.conf:

zone "forward.example.com" { type master; file "forward.example.com.zone"; }; $TTL 86400 @ IN SOA

ns.example.com. root.localhost ( 2 ; serial 28800 ; refresh

7200 ; retry 604800 ; expire 86400 ; ttl ) IN NS 192.168.1.1.

Agregar una zona maestra inversa

Agregar una zona maestra inversa Para agregar una zona maestra inversa, haga click en Aadir y seleccione Zona maestra inversa. Introduzca los tres primeros octetos del rango de direcciones IP que desee configurar. Por ejemplo, si est configurando el rango de direcciones IP 192.168.10.0/255.255.255.0, introduzca 192.168.10 en el rea de texto Direccin IP (primeros tres octetos)

Aparecer una nueva ventana, tal como se muestra en la Figura, con la siguientes opciones: 1. Direccin IP Los tres primeros grupos numricos que acaba de introducir en la ventana anterior. 2. Direccin IP inversa No se puede editar. Se completa automticamente segn la direccin IP especificada. 3. Contacto Direccin de correo electrnico del contacto principal para la zona maestra. 4. Nombre de archivo Nombre del archivo de la base de datos DNS en el directorio /var/named. 5. Servidor de nombres primario (SOA) Registro de estado de autoridad (SOA). Indica el servidor de nombres considerado como el mejor recurso de informacin para este dominio. 6. Nmero de serie Nmero de serie del archivo de la base de datos DNS. Este nmero ir aumentando cada vez que cambie el archivo; de este modo, los servidores de nombres esclavos de la zona podrn recuperar los ltimos datos. La Herramienta de configuracin de Bind incrementa este nmero cada vez que cambia la configuracin. Tambin se puede aumentar manualmente si se pulsa el botn Configurar que se encuentra junto al valor Nmero serie. 7. Configuracin del tiempo Se trata de los valores TTL (Refrescar, Reenviar, Expirar y Mnimo que se almacenan en el archivo de la base de datos DNS.

8. Servidores de nombre Agrega, edita y elimina los servidores de nombres para la zona maestra inversa. Se necesita, como mnimo, un servidor de nombres. 9. Tabla de direccin inversa Lista de direcciones IP que hay en la zona maestra inversa y sus nombres host. Por ejemplo, para la zona maestra inversa 192.168.10, puede agregar 192.168.10.1 en la Tabla de direccin inversa con el nombre de host one.example.com. Este nombre debe terminar con un punto (.) para indicar que se trata de un nombre de host completo. Se debe especificar un Nombre de servidor primario (SOA) y al menos un registro de nombre de servidor haciendo click en el botn Aadir en la seccin Nombre de servidores. Despus de configurar la zona maestra inversa, pulse en OK para volver a la ventana principal, tal como se muestra en la Figura. En el men desplegable, seleccione Guardar para escribir el archivo de configuracin /etc/named.conf, escribir todos los archivos de zona individuales en el directorio /var/named, y hacer que el demonio vuelva a cargar los archivos de configuracin. La configuracin crear una entrada similar a lo siguiente en el archivo /etc/named.conf:

zone "10.168.192.in-addr.arpa" { type master; file "10.168.192.in-addr.arpa.zone"; };

Tambin crea el archivo /var/named/10.168.192.in-addr.arpa.zone con la siguiente informacin:


SOA ns.example.com. root.localhost ( 2 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; ttk ) ns2.example.com. one.example.com.

$TTL 86400 @ IN

@ 1

IN IN

NS PTR

2 IN PTR two.example.com.

Tema-12 NFS (Network File System) Demonios Depending on your distribution, the following programs may be located in any of the bin or sbin directories. These are all daemon processes. To get NFS working, they should be started in the order given here. portmap (also sometimes called rpc.portmap) This maps service names to ports. Client and server processes may request a TCP port number based on a service name, and portmap handles these requests. It is basically a network version of your /etc/services file. 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.nfsd (also sometimes called nfsd) This is the core--the file-server program itself. rpc.lockd (also sometimes called lockd) This handles shared locks between different machines on the same file over the network. RPC significa Remote Procedure Call. RPC desarrollada junto con NFS por Sun Microsystems. Una manera eficiente para una programa para llamar una funcin que esta en otra mquina Se pude utilizar por cualquier programa que tiene necesidades de distribuido NFS utiliza RPC, pero muchas otras programas utiliza CORBA (La versin de RPC orientada a objetos).

RPC

Ejemplo de Configuracin de NFS Compartiendo un directorio con NFS requiere que DNS esta funcionando para ser capaz de buscar mquina Se puede utilizar directamente las IPs Imagina que se comparte el CD-ROM con todo el LAN. Es seguro debido que CD son read-only. Crea un fichero /etc/exports con la siguiente contenido:
192.168.1.0/24(ro) localhost(ro)

/mnt/cdrom

Formato de /etc/exports es simplemente una linea por cada directorio compartido. A continuacin 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.mountd rpc.nfsd rpc.lockd

Cuando hace cambios al fichero /etc/exports debe ejecutar exportfs -r Utilizando el comando de exportfs sin opciones:
/mnt/cdrom /mnt/cdrom 192.168.1.0/24 localhost.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 mquina remota es como un dispositivo , aunque su tipo es nfs de vez de ext2, vfat, or iso9660. El nombre de host remota host sigue con : y el directorio en la mquina remoto y es relativo a nivel de root Ftp, por ejemplo utiliza un sistema que defina un top-level directorio. Despues de montar, probar con ls

mkdir /mnt/nfs mount -t nfs cdromserver:/mnt/cdrom /mnt/nfs

Diagnosticos: mirar en los logs. Tambien se puede reemplezar los procesos.


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). Note that it is not always obvious that NFS is failing because of a forward or reverse DNS lookup, so double-check beforehand that these are working-- mount will not usually be more eloquent than the classic NFS error message: `` mount: <xyz> failed, reason given by server: Permission denied.'' A faulty DNS is also indicated by whole-minute pauses in operation. Most distributions will not require you to manually start and stop the daemon processes above. Like most services, RedHat's NFS implementation can be invoked simply with:

/etc/init.d/nfs start /etc/init.d/nfslock start (or /etc/rc.d/init.d/).

On Debian, similarly,
/etc/init.d/nfs-common start /etc/init.d/nfs-kernel-server start

Access Permissions Above, we used 192.168.1.0/24(ro) to specify that we want to give read- only access to a range of IP addresses. You can actually put host names with wildcards also; for example:
*.mynet.mydomain.co.za(ro)

/mnt/cdrom

Then also allow read- write access with, say:


/home *.mynet.mydomain.co.za(rw)

One further option, no_root_squash, disables NFS's special treatment of root-owned files. This option is useful if you are finding certain files strangely inaccessible. no_root_squash is really only for systems (like diskless workstations) that need full root access to a file system. An example is: The man page for /etc/exports, exports(5), contains an exhaustive list of options. / *.very.trusted.net(rw,no_root_squash) Security NFS requires that a number of services be running that have no use anywhere else. Many naive administrators create directory exports with impunity, thus exposing those machines to opportunistic hackers. An NFS server should be well hidden behind a firewall, and any Internet server exposed to the Internet should never run the portmap or RPC services. Preferably uninstall all of these services if you are not actually running an NFS server.

Kernel NFS There are actually two versions of the NFS implementation for LINUX. Although this is a technical caveat, it is worth understanding that the NFS server was originally implemented by an ordinary daemon process before the LINUX kernel itself supported NFS. Debian supports both implementations in two packages, nfs-server and nfs-kernelserver, although the configuration should be identical. Depending on the versions of these implementations and the performance you require, one or the other may be better. You are advised to at least check the status of the kernel NFS implementation on the kernel web pages. Of course, 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.

S-ar putea să vă placă și