45
Fundación Código Libre Dominicano LABORATORIOS GNU/Linux GUIA PRACTICA DE CERTIFICATION GNU CERTIFIED - ADMINISTRACION    Capitulo 1 1. Defina el rol del administrador del sistemas GNU/Linux y ¿qué importancia refleja en la empresa? 2. ¿Cuándo deben las tareas administrativas ser delegada? ¿En quién deben ser delegadas? 3. Indique algunos comandos útiles para monitorear y administración (usuarios conectados, ultimo usuario ingresados, registro de accesos y salidas de usuarios, logs del sistema). 4. Como administrador de sistemas, indique el correcto particionamiento a la hora de instalar el sistema GNU/Linux y ¿por qué?. Esto, tomando como contingencia la conservación de las aplicaciones, datos, etc en caso que el sistema tenga problemas. ¿Por qué en GNU/Linux todo es considerado un archivo y que ventajas tiene? 5. Explique la jerarquía /usr y mencione algunos ejemplos. ¿Puede un usuario normal escribir en estos directorios?. ¿Por qué? 6. Explique la jerarquía /proc, su función principal. ¿Qué refleja la información contenida bajo este directorio y por que es tan variable? 7. Explique la salida del comando uname -a Linux cris-laptop 2.6.17-10-generic #2 SMP Tue Dec 5 22:28:26 UTC 2006 i686 GNU/Linux 8. Uso del comando su, ej. su root y su – root, ¿cuál es la diferencia entre ambos. 9. Explicar las diferentes carpetas encontradas en el sistema de archivos, como son dev, etc, bin, sbin, opt, home, etcétera. 10. Uso del comando man y mostrar destrezas como cambiar de idioma, manejar las 9 secciones y que contienen cada una de ellas, etc. 11. Además del man, ¿qué otras ayudas están disponibles? 12. Practica con el comando wall y write para poder comunicarse de un usuario a otro. 1 Prácticas Módulo Administración

Practica GNU Administracion Final

Embed Size (px)

Citation preview

Page 1: Practica GNU Administracion Final

Fundación Código Libre DominicanoLABORATORIOS GNU/Linux

GUIA PRACTICA DE CERTIFICATIONGNU CERTIFIED - ADMINISTRACION

                                                                                                                                                                                  

Capitulo 11. Defina el rol del administrador del sistemas GNU/Linux y ¿qué importancia refleja en la empresa?2. ¿Cuándo deben las tareas administrativas ser delegada? ¿En quién deben ser delegadas?

3. Indique algunos comandos útiles para monitorear y administración (usuarios conectados, ultimo usuario ingresados, registro de accesos y salidas de usuarios, logs del sistema).

4. Como administrador de sistemas, indique el correcto particionamiento a la hora de instalar el sistema GNU/Linux y ¿por qué?. Esto, tomando como contingencia la conservación de las aplicaciones, datos, etc en caso que el sistema tenga problemas.

¿Por qué en GNU/Linux todo es considerado un archivo y que ventajas tiene?5. Explique la jerarquía /usr y mencione algunos ejemplos. ¿Puede un usuario normal escribir en estos 

directorios?. ¿Por qué?

6. Explique la jerarquía /proc, su función principal. ¿Qué refleja la información contenida bajo este directorio y por que es tan variable?

7. Explique la salida del comando uname ­a. Linux cris­laptop 2.6.17­10­generic #2 SMP Tue Dec 5 22:28:26 UTC 2006 i686 GNU/Linux

8. Uso del comando su, ej. su root y su – root, ¿cuál es la diferencia entre ambos.

9. Explicar las diferentes carpetas encontradas en el sistema de archivos, como son dev, etc, bin, sbin, opt, home, etcétera.

10. Uso del comando man y mostrar destrezas como cambiar de idioma, manejar las 9 secciones y que contienen cada una de ellas, etc.

11. Además del man, ¿qué otras ayudas están disponibles?12.  Practica con el comando wall y write para poder comunicarse de un usuario a otro.

1 Prácticas Módulo Administración

Page 2: Practica GNU Administracion Final

Capitulo 2Preguntas:

1. Defina el modelo de versiones del kernel de GNU/Linux, ej. 2.6.23­25.1. Identificar el kernel actual desde la pagina http://www.kernel.org

Práctica #1 “Compilar el Kernel”La empresa Nuñez por razones de manejadores disponibles en una versión del kernel aún no disponible en paquetes binarios, llámese RPM, se encuentran en la necesidad de compilar un kernel para su uso, demos los pasos necesarios a seguir para exitosamente lograr esta tarea:

Mensajes y módulos del kernel en funcionamiento Administradores deberían poder administrar un kernel y sus módulos cargables. 

Archivos, términos y utilidades necesarias● /lib/modules/kernel­version/modules.dep● /etc/modules.conf● /etc/modprobe.conf● depmod● insmod● lsmod● rmmod● modinfo● modprobe● uname

El kernel El kernel (núcleo) es el corazón del sistema operativo. El es solamente una parte comparativamente pequeña del sistema GNU/Linux total. 

Los kernels pueden ser monolíticos, teniendo todas las funcionalidades dentro del mismo, o como modular teniendo mucho de la funcionalidad actuando separadamente como módulos. Aunque Linux soporta módulos del kernel, se dice que es monolítico a causa de que no está compilado sobre un microkernel. Algunos ejemplos de núcleos listos para usar en producción: 

• Linux, desarrollado por Torvalds y colaboradores de todo el mundo.• Mach, un microkernel usado por sistemas operativos de Apple. 

Un kernel de desarrollo: 

• El HURD, el kernel del proyecto GNU. 

2 Prácticas Módulo Administración

Page 3: Practica GNU Administracion Final

Algunos componentes importantes de un kernel: 

• Soporte de memoria virtual • Multitarea • Intercambio de contexto • Drivers de dispositivo • Módulos del kernel 

Práctica #2 “Módulos del kernel”Un módulo del kernel es un programa se carga separadamente. Los módulos del kernel sirven para extender las capacidades del kernel sin la necesidad de compilar funcionalidades directamente en la imagen del kernel. Un buen ejemplo es el driver de un dispositivo. 

Hay ciertas ventajas de usar módulos del kernel en contraposición a tener los drivers compilados en el kernel. Éstos se pueden descargar (rmmod) y recargar (modprobe, insmod) en cualquier momento, permitiéndole pasar diferentes parámetros en lugar de especificarlos una vez en el arranque como parámetros del kernel o actualizarlos sin reiniciar. También, para actualizar un driver modularizado necesita recompilar el módulo, mientras que si el driver es parte del kernel entonces se debe compilar un nuevo kernel. Para buses que se pueden conectar en caliente como los USB, los módulos se pueden cargar según la necesidad en lugar de cargarse todos a la vez. 

Comando “modinfo”La información como el autor, licencia, versión, dependencias y parámetros se pueden encontrar usando el comando modinfo. # modinfo reiserfsfilename:       /lib/modules/2.6.20­8­generic/kernel/fs/reiserfs/reiserfs.kolicense:        GPLauthor:         Hans Reiser <[email protected]>description:    ReiserFS journaled filesystemsrcversion:     204A083D94EECC3B0F2FB30depends:        vermagic:       2.6.20­8­generic SMP mod_unload 586 

$ modinfo ­d snd Advanced Linux Sound Architecture driver for soundcards. 

/sbin/modinfo ­p loopmax_loop:Maximum number of loop devices (1­256) 

El archivo /etc/modules.conf El archivo modules.conf contiene la configuración de los módulos del kernel que se cargan automáticamente. En muchas distros este archivo ha sido ya modularizado y reemplazado por la carpeta modpobe.d y encontramos archivos como options y alias que representan las entradas en este archivo general.

3 Prácticas Módulo Administración

Page 4: Practica GNU Administracion Final

bash­3.1$ cat /etc/modules.confalias /dev/ttySHCF[0­9]* /dev/ttySHCFalias /dev/modem /dev/ttySHCFalias char­major­240 /dev/ttySHCFalias /dev/cuaHCF[0­9]* /dev/ttySHCFalias char­major­241 /dev/ttySHCFoptions hcfpciserial serialmajor=240 calloutmajor=241alias /dev/hcfpcidiag hcfpciosspecalias /dev/hcfpcidiag* /dev/hcfpcidiagalias char­major­242 /dev/hcfpcidiag

Un ejemplo clásico de un alias sería el siguiente: alias sound sbalias eth0 ne2k­pci

Este asigna el seudónimo sound a un módulo de Sound Blaster y eth0 al módulo ne2k­pci para la placa de red. 

El archivo modprobe.conf y el directorio /etc/modprobe.d/* Estos archivos son similar al anterior y se usan en las versiones 2.6 del kernel para especificar opciones a los módulos y para crear alias a los módulos. ls /etc/modprobe.d/aliases                arch­aliases           blacklist­modem        blacklist­watchdog ipw3945                nvidia­kernel­nkc      alsa­base blacklist              blacklist­oss          bluez                  isapnp options      arch/                  blacklist­framebuffer  blacklist­scanner            ibm_acpi.modprobe      lrm­video          

Obtener información con el comando uname El comando uname muestra información valiosa del sistema 

Nombre del kernel $ uname ­sLinux

Nombre del host $ uname ­nlocalhost

Versión del kernel $ uname ­r2.6.17­5mdv

Tipo fecha y hora del kernel $ uname ­v#1 SMP Wed Sep 13 14:32:31 EDT 2006

4 Prácticas Módulo Administración

Page 5: Practica GNU Administracion Final

Tipo de máquina $ uname ­mi686

Procesador $ uname ­pIntel(R) Pentium(R) 4 CPU 3.00GHz

Tipo de plataforma de hardware $ uname ­iunknown

Sistema operativo $ uname ­oGNU/Linux

Toda la información (salvo el procesador y la plataforma de hardware en caso de no haberse podido determinar bash­3.1$ uname ­aLinux localhost 2.6.17­5mdv #1 SMP Wed Sep 13 14:32:31 EDT 2006 i686 Intel(R) Pentium(R) 4 CPU 3.00GHz GNU/Linux

lsmod lsmod es una herramienta que muestra un listado de los módulos cargados actualmente. 

root@antonio­laptop:/home/antonio# lsmodModule                   Size   Used byipv6                   261920   12 hci_usb                18204   2 binfmt_misc          12808   1 rfcomm                40856   0 l2cap                   25728   5 rfcommbluetooth               55268   7 hci_usb,rfcomm,l2cap

Práctica #3 “Reconfiguración, construcción e instalación del kernel y sus módulos” Archivos, términos y utilidades:Dirs: /usr/src/linux/* /usr/src/linux/.config /lib/modules/kernel­version/* /boot/*make targets: all, config, menuconfig, xconfig, gconfig oldconfig, modules, install, modules_install, depmod, rpm­pkg, binrpm­pkg, deb­pkg

Obtener las fuentes del kernel Para compilar un kernel, se necesitan las fuentes del mismo. Se puede obtener de http://kernel.org. La distribución puede también ya venir con las fuentes del kernel, en algún lugar de los cds. 

5 Prácticas Módulo Administración

Page 6: Practica GNU Administracion Final

Instalar las fuentes del kernel Se pueden instalar las fuentes del kernel o bien instalando el paquete que vino con la distribución, o extrayendo el tarball que se descargó de kernel.org. 

1. Cambiar el directorio a /usr/src $ cd /usr/src

2. Verificar el enlace simbólico (ej. /usr/src/linux­>/src/linux/linux­2.4.18) $ ls ­alc 

3. Verificar otra vez con este comando (ejemplo de salida) linux: symbolic to linux­2.4.18­14 

$ file linux 

4. Borrar el enlace simbólico $ rm linux 

5. Desempaquetar el tarball (kernel nuevo) $ tar ­zxvf linux­x.x.x.tar.gz $ tar ­jxvf linux­x.x.x.tar.bz2

NOTA****

Como aplicar parches al kernel Este paso viene después de desempaquetar las fuentes del kernel. Cuando se descarga el parche, hay que ponerlo en la carpeta donde se desempaquetaron las nuevas fuentes del kernel. Luego hay que tipear: 

patch ­E ­p1 < patch_descargado

6. Hacer un nuevo enlace al nuevo kernel $ ln ­s /usr/src/linux­x.x.x /usr/src/linux 

7. Tipear esto para cambiar al directorio $ cd linux

Instalar el conjunto de herramientas y los archivos de encabezados necesarios para compilar 

No todas las distribuciones vienen con todos los componentes para compilar un kernel. Se necesitará el compilador de C, GCC, make, y archivos de encabezados del sistema instalados antes de que se pueda comenzar a construir un núcleo. 

Compilación Primero, hay que eliminar cosas que no se necesitan, como el actual .config y otros archivos. 

6 Prácticas Módulo Administración

Page 7: Practica GNU Administracion Final

$ make mrproper

Haga esto si quieres usar su vieja configuración a partir del kernel actual, digamos el 2.4.x con el kernel 2.6 nuevo: $ cp /usr/src/linux­2.4.x/.config /usr/src/linux

Para interfaz con ncurses en la terminal $ make menuconfig

Nota: La mayoría de las opciones tienen que ver con especificar si se quiere una característica compilada dentro de la imagen del kernel [*], [M] compilada como un módulo, o [ ] no compilada de ninguna manera. No se debería compilar las propiedades del disco rígido y del tipo de sistema de archivos como un módulo ­ estos deben estar compilados en el kernel [*], e.g. " [*] ReiserFS".El programa de configuración sirve para especificar un enorme número de prestaciones. Es aconsejable examinar todas las secciones para obtener una idea de las diferentes cosas que se pueden hacer. La configuración del kernel es un programa de GNU/Linux que ofrece un montón de ayuda ­­ se puede seleccionar < Help > en cada prestación. Puede ser valioso también leer los archivo de ayuda que están en /usr/src/linux/Documentation/.Cuando se haya finalizado con la configuración, se tiene que hacer clic en exit y guardar la configuración actual. El archivo se conoce ahora como .config

>OMITIR LO SIGUIENTE SI SE COMPILA UN KERNEL 2.6.x<­­­­­­ $ make dep   # Asegura que las dependencias estén en su lugar$ make clean # Para limpiar las fuentes para que se compilen correctamente

>COMENZAR AQUÍ SE COMPILA UN KERNEL 2.6.x<­­­­­­ $ make && make modules_installLos comandos de arriba crean la imagen del kernel (compila y crea una imagen compilada del kernel), compila los módulos, y luego instala los módulos flamantes a /lib/modules/linux.x.x.x 

¡Ahora es tiempo de instalar el nuevo Kernel! 

Borrar los siguientes enlaces: $ rm ­rf /boot/System.map$ rm ­rf /boot/vmlinuz

Luego copia el kernel creado recientemente y System.map a /boot $ cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz­x.x.x$ cp /usr/src/linux/System.map /boot/System.map­x.x.x

Hacer los nuevos enlaces: $ ln ­s /boot/vmlinuz­x.x.x /boot/vmlinuz$ ln ­s /boot/System.map­x.x.x /boot/System.map 

A continuación, si está presente, borrar el archivo initrd.img existente: $ rm ­rf /boot/initrd.x.x.x.img

7 Prácticas Módulo Administración

Page 8: Practica GNU Administracion Final

Y crear el nuevo: $ mkinitrd /boot/initrd­x.x.x.img x.x.x

(Nota: )El último grupo de x.x.x es el equivalente a la versión del nuevo kernel

Se debe usar alguno de estos pasos • si se usa grub entonces editar /boot/grub/menu.lst • si se usa lilo entonces editar /etc/lilo.conf 

Es importante dejar la línea para el kernel viejo por si acaso, modificar lo que está en archivo de configuración originalmente para que apunte al nuevo viejo y hacer una nueva entrada para la imagen nueva que recién se hizo...

Ajuste de GRUBtitle Nuevo Kernel :Dkernel /vmlinuz­x.x.x ro root=LABEL initrd /initrd­x.x.x.img

Nota: Mirar en los parámetros anteriores en el archivo menu.lst para definir "root=" Guardar y salir 

Ajuste de Lilo (/etc/lilo.conf) image = /boot/vmlinuz­x.x.xlabel = nuevokernelroot = /dev/hdxread­only

Guardar, salir y luego ejecutar: $ /sbin/lilo$ reboot

Práctica #4 “Gestor de Arranque e Imágenes”El administrador de la empresa Nuñez tienen que agregar una imagen del kernel a su archivo de configuración de su gestor de arranque GRUB, demos los pasos necesarios a seguir para exitosamente lograr esta tarea:

Ajuste de GRUBtitle Nuevo Kernel :Dkernel /vmlinuz­x.x.x ro root=LABEL initrd /initrd­x.x.x.img

8 Prácticas Módulo Administración

Page 9: Practica GNU Administracion Final

Nota: Mirar en los parámetros anteriores en el archivo menu.lst para definir "root=" Guardar y salir 

Ajuste de Lilo (/etc/lilo.conf) image = /boot/vmlinuz­x.x.xlabel = nuevokernelroot = /dev/hdxread­only

Guardar, salir y luego ejecutar: $ /sbin/lilo$ reboot

Práctica #5 “Utilitarios de Módulos”El administrador de la empresa Nuñez tiene que manipular drivers y módulos del kernel para lograr configurar en vivo o tiempo real su kernel actual, que herramientas le ofrece el sistema para exitosamente lograr esta tarea. De ejemplos de cada uno de estos:lsmod : Despliega la información referente a los módulos que están habilitados por el "kernel".depmod: Genera un archivo que contiene las dependencias de los módulos que son cargados para el "Kernel",esto es, es capaz de reconocer cuales módulos deben de ser cargados para que un tercero sea utilizado en el sistema.insmod: Habilita ("loads") el modulo que se especifica en la linea, para que el "kernel" sea capaz de utilizarlo.(ejemplo: insmod ip_alias.o )rmmod: Quitar un modulomodprobe: igual que insmod pero mas seguro ya que primero se asesora si todo estará bien después de insertado el módulo.

Práctica #6 “Modificar parámetros del kernel tiempo real... /proc”Una de las funcionalidades avanzadas de /proc/ es, como decíamos, la posibilidad de modificar algunos de los parámetros internos del núcleo sin tener que recompilarlo y reiniciar el sistema. Esta sección presenta un pequeño resumen de cómo realizarlo. 

Como cualquier programa en ejecución, el núcleo de Linux posee internamente un conjunto de variables globales (o parámetros) que reflejan y/o condicionan su funcionamiento. Algunos de estas variables, como por ejemplo los procesos que se están ejecutando, la ocupación de la memoria o los sistemas de archivos montados, pueden ser consultados por el usuario mediante la lectura de los archivos correspondientes del directorio /proc/, tal como veíamos en la sección anterior. Pero /proc/ permite también la modificación en línea de algunas de esas variables, sin necesidad de reiniciar el sistema, de forma que podemos ajustar el comportamiento del núcleo dinámicamente. Para ello se dispone del directorio /proc/sys/. 

9 Prácticas Módulo Administración

Page 10: Practica GNU Administracion Final

El directorio /proc/sys/ contiene un subárbol de directorios y archivos en el que se organizan muchos parámetros del núcleo, subdivididos por categorías (es decir, por subdirectorios). Los archivos pueden tener permisos sólo de lectura o bien permitir su modificación, aunque sólo al administrador (root). Estas dos posibilidades indican, respectivamente, archivos que muestran información sobre parámetros y otros que permiten además, la modificación de estos parámetros. En este último caso, si sobreescribimos el contenido del archivo, estaremos cambiando el parámetro correspondiente del núcleo. Por ejemplo: # cat /proc/sys/kernel/hostnamenombre­host# echo otro­nombre > /proc/sys/kernel/hostname# cat /proc/sys/kernel/hostnameotro­nombre

/proc/sys/dev/: Este directorio proporciona los parámetros de configuración de algunos dispositivos físicos conectados al sistema, como por ejemplo unidades de cdrom. Por ejemplo:

# ls ­l /proc/sys/dev/cdrom/ total 0 ­rw­r­­r­­ 1 root root 0 2007­07­22 20:18 autoclose ­rw­r­­r­­ 1 root root 0 2007­07­22 20:18 autoeject ­rw­r­­r­­ 1 root root 0 2007­07­22 20:18 check_media ­rw­r­­r­­ 1 root root 0 2007­07­22 20:18 debug ­r­­r­­r­­ 1 root root 0 2007­07­22 20:18 info ­rw­r­­r­­ 1 root root 0 2007­07­22 20:18 lock 

$ cat /proc/sys/dev/cdrom/info CD­ROM information, Id: cdrom.c 3.20 2003/12/17 

drive name:             hdc drive speed:            24 drive # of slots:       1 Can close tray:         1 Can open tray:          1 

Mediante la modificación de archivos como autoclose o autoeject (que pueden contener 0 o 1) podemos controlar la activación o desactivación de esas características de la unidad de cd.

/proc/sys/fs/: Este directorio contiene numerosos parámetros concernientes a los sistemas de archivos montados en el sistema, incluyendo cuotas, manejadores de archivo, inodos, etc:

10 Prácticas Módulo Administración

Page 11: Practica GNU Administracion Final

$ ls ­l /proc/sys/fs/ total 0 ­rw­r­­r­­ 1 root root 0 2007­07­22 20:20 aio­max­nr ­r­­r­­r­­ 1 root root 0 2007­07­22 20:20 aio­nr drwxr­xr­x 2 root root 0 2007­07­22 18:45 binfmt_misc ­r­­r­­r­­ 1 root root 0 2007­07­22 20:20 dentry­state 

Por ejemplo, si quisiéramos incrementar la cantidad de manejadores de fichero (es decir, el número máximo de ficheros que pueden ser abiertos simultáneamente), deberíamos incrementar la cantidad que aparece en file­max. 

• /proc/sys/kernel/. El contenido de este directorio incluye aspectos de configuración y parámetros que afectan directamente el funcionamiento del núcleo, como por ejemplo el comportamiento de [Ctl]­[Alt]­[Supr] para reiniciar el sistema, el nombre del ordenador (ver ejemplo arriba), el número máximo de hilos de ejecución que el núcleo puede ejecutar, etc. 

• /proc/sys/net/. Este directorio permite ver y controlar el funcionamiento de muchos aspectos del núcleo relacionados con la red, incluyendo los diferentes protocolos queimplementa Linux (ethernet, ipx, ipv4, ipv6, etc). Por ejemplo, para permitir la retransmisión de paquetes entre dos tarjetas de red conectadas al ordenador, haríamos lo siguiente: 

# echo 1 > /proc/sys/net/ipv4/ip_forward

Otros ejemplos podrian ser:# cat /proc/sys/net/ipv4/tcp_syncookies0# echo 1 > /proc/sys/net/ipv4/tcp_syncookies

/proc/sys/vm/: Este subdirectorio permite la configuración del subsistema de memoria virtual del núcleo, como por ejemplo el funcionamiento del servicio (o "demonio") de intercambio (kswapd), la cantidad de memoria que se dedicará a buffers del núcleo, el número máximo de áreas de memoria que pueden tener los procesos, etc.

Práctica #7 “El mandato sysctl”Como alternativa a escribir directamente el valor (o los valores) en los archivos de /proc/sys/, Linux dispone de un mandato denominado sysctl, que puede ser utilizado para leer y modificar todos los parámetros del kernel que se ubican en ese directorio. Por ejemplo, para modificar el nombre de la máquina, como veíamos arriba, podríamos ejecutar lo siguiente: 

# cat /proc/sys/kernel/hostnamenombre­host

11 Prácticas Módulo Administración

Page 12: Practica GNU Administracion Final

# sysctl ­w kernel.hostname=otro­nombrekernel.hostname = obiwan.dsic.upv.es# cat /proc/sys/kernel/hostnameotro­nombre

Ya que para cambiar un valor se emplea: /sbin/sysctl ­w kernel.hostname=comp

El comando sysctl nos permite parametrizar parámetros del núcleo. No hace falta decir que son aquellos con los que fue compilado el núcleo. Toda la configuración se hace a través del fichero /etc/sysctl.conf:

Práctica #8 “La Orden stty”El nombre stty probablemente signifique “set tty,” pero la orden stty también puede ser empleada para mostrar la configuración de un terminal. Quizás aún más que setserial, la orden stty proporciona un desconcertante número de características configurables. Cubriremos las más importantes en breve. Puede usted encontrar descrito el resto en la página de manual de stty.

La orden stty se utiliza principalmente para configurar parámetros del terminal, tales como qué caracteres serán mostrados, o qué tecla deberá generar una señal de parada. Explicamos anteriormente que los dispositivos serie son dispositivos tty, y por tanto la orden stty es igualmente aplicable a ellos.

La orden stty puede ser usada para mostrar los parámetros de configuración de un dispositivo tty. Para mostrar todos los parámetros activos de un dispositivo tty se hace:

$ssty  ­a  ­F  /dev/tty1  ... desde el terminal uno..

Práctica #8 “El Comando stty” El comando stty espara establecer y reportar las opciones de entrada y salida I/O del terminal.  Usado sin parámetros nos reporta la terminal actual: $  sttyspeed 9600 baud; ­parity hupcl rows = 25; columns = 80; ypixels = 281; xpixels = 486;erase = ^h; swtch = <undef>; rprnt = <undef>; flush = <undef>; werase = <undef>; lnext = <undef>; ­inpck ­istrip icrnl ­ixany onlcr tab3 echo echoe echokUsado con la opción ­a, el stty lista todos los valores del terminal/teclado. $  stty ­aspeed 9600 baud; rows = 25; columns = 80; ypixels = 281; xpixels = 486;intr = DEL; quit = ^|; erase = ^h; kill = @;eof = ^d; eol = <undef>; eol2 = <undef>; swtch = <undef>;...............

12 Prácticas Módulo Administración

Page 13: Practica GNU Administracion Final

En los siguiente ejemplos establecemos los caracateres de borrar, fin de archivo, caracter de interrupción y caracter de suspensión. 

stty erase ^hEstablece el caracter de borrar como  ^h. Normalmente es la tecla Backspace.

stty eof ^dEstablece el caracter de fin de archivo a ^d.

stty intr ^cEstablece el caracter de interrupción a ^c.  Le permite detener los procesos ejecutandose en el primer plano de su terminal.

stty susp ^zEstablece el caracter de suspender a ^z.  Le permite suspender los procesos ejecutándose en el primer plano de su terminal.

Práctica #9 “Programas de medición y Benchmarks”El administrador de la empresa Nuñez tiene que efectuar cierta mediciones en su sistema en tiempo real, que herramientas le ofrece el sistema para exitosamente lograr esta tarea:hdparmEl comando hdparm permite visualizar y modificar los parametros del disco duro para los discos IDE en Linux, de forma que es posible mejorar el rendimiento obtenido con los mismos. Aunque hay que tener una cierta precaución y cuidado, puesto que al ser tan potente implica también ciertos riesgos, aunque si sabemos en cada momento lo que estamos haciendo no hay ningún problema:

Para Obtener información/identificación sobre un determinado disco duro:# hdparm ­i /dev/hdc

/dev/hdc:

 Model=ST36531A, FwRev=3.05, SerialNo=GS264860

Para Información general sobre el estado del disco duro:# hdparm  /dev/hdc/dev/hdc: multcount    = 32 (on)

­ Desactivar el soporte UDMA del disco duro, precisamente tengo problemas con mi disco duro /dev/hdc y desactivando el soporte udma estos desaparecen y el disco funciona perfectamente. 

#hdparm ­d0 /dev/hdc/dev/hdc: setting using_dma to 0 (off)

13 Prácticas Módulo Administración

Page 14: Practica GNU Administracion Final

 using_dma    =  0 (off)

­ Comprobar la velocidad de transferencia: 

# hdparm ­Tt /dev/hdb/dev/hdb: Timing buffer­cache reads:   128 MB in  1.67 seconds = 76.65 MB/sec Timing buffered disk reads:   64 MB in  3.76 seconds = 17.02 MB/sec

­ Más información: man hdparm y hdparm ­­help 

Para obtener hdparm: http://www.ibiblio.org/pub/Linux/system/hardware/

Existe una Interfaz gráfica (Gui) para hdparm: http://ghdparm.sourceforge.net

Comando Benchmark “hddtemp”Utilitario para verificar la temperatura de los discos# hddtemp /dev/hda

Comando Benchmark “time”Da los tiempos de ejecución. Este comando nos da tres valores cuya interpretación es: 

        real    Tiempo real gastado (Duración real)        user    Tiempo CPU de usuario.        sys.    Tiempo CPU consumido como proceso de kernel.                 (Es decir dentro de las llamadas al kernel)

La mayoría de los comandos están gran parte del tiempo sin consumir CPU porque necesitan esperar para hacer entrada salida sobre dispositivos lentos que además pueden estar en uso compartidos por otros procesos. Existe un comando capaz de esperar tiempo sin gastar tiempo de CPU. Se trata del comando 'sleep'. Para usarlo le pasaremos un argumento que indique el número de segundos de dicha espera. 

Por ejemplo vamos a comprobar cuanta CPU consume una espera de 6 segundos usando sleep $ time sleep 6 real    0m6.011s user    0m0.000s sys     0m0.000s 

El resultado obtenido puede variar ligeramente en cada sistema pero básicamente obtendrá un tiempo 'real' de unos 6 segundos y un tiempo de CPU ( 'user' + 'sys' ) muy pequeño. 

14 Prácticas Módulo Administración

Page 15: Practica GNU Administracion Final

Vamos a medir tiempos en un comando que realice operaciones de entrada salida así como proceso de datos. $ time ls /* > /dev/nullreal    0m0.099suser    0m0.080ssys     0m0.010s

En este comando verá que el consumo total de CPU es superior al del comando sleep. En cualquier caso el tiempo real tardado en la ejecución del comando es siempre muy superior al consumo de CPU.  Vamos a probar un comando que apenas realice otra cosa que entrada salida. Vamos a enviar 10Mbytes al dispositivo /dev/null. Existe un comando 'yes' que provoca la salida continua de un caracter 'y' seguido de un caracter retorno de carro. Esta pensado para sustituir la entrada de un comando interactivo en el cual queremos contestar afirmativamente a todo lo que pregunte. Nosotros filtraremos la salida de 'yes' con el comando 'head' para obtener solo los 10Mbytes primeros producidos por 'yes' y los enviaremos al dispositivo nulo '/dev/null' que viene a ser un pozo sin fondo en el cual podemos introducir cualquier cosa sin que se llene, pero no podremos sacar absolutamente nada. En una palabra vamos a provocar proceso de entrada salida perfectamente inútil. $ time yes | head ­­bytes=10000000 > /dev/null real    0m0.264s user    0m0.252s sys     0m0.040s 

Podemos hacer un consumo fuerte de CPU si forzamos a cálculos masivos que no tengan apenas entrada salida. Por ejemplo podemos poner a calcular el número PI con 300 cifras decimales. 'bc' es un comando que consiste en una calculadora. Admite uso interactivo pero también acepta que le pasemos las operaciones desde otro proceso combinando entrada salida. $ time ( echo "scale=300; 4*a(1)" | bc ­l ) 3.141592653589793238462643383279502884197169399375105820974944592307\ 81640628620899862803482534211706798214808651328230664709384460955058\ 22317253594081284811174502841027019385211055596446229489549303819644\ 28810975665933446128475648233786783165271201909145648566923460348610\ 454326648213393607260249141272 real    0m0.069s user    0m0.048s sys     0m0.004s 

15 Prácticas Módulo Administración

Page 16: Practica GNU Administracion Final

En un Pentium 200Mhz este comando tardó 3 segundos para 300 cifras y 20 segundos usando 600 cifras. Decimos esto para que vea que el tiempo que se tarda aumenta exponencialmente y que dependiendo de la potencia de su ordenador puede suponer bastante tiempo de proceso. Quizás tenga que variar el número de cifras significativas para poder medir tiempos con comodidad. 

Este comando 'time' es un comando interno pero en Linux también hay un comando externo llamado de la misma forma. Para poder ejecutarlo con esta shell debería incluir el camino completo. No deseamos abusar de su escaso 'time' así que no lo comentaremos. Para buscar en el man el comando 'time' que hemos explicado o de cualquier otro comando interno tendría que mirar en la página del manual de bash. 

16 Prácticas Módulo Administración

Page 17: Practica GNU Administracion Final

Capitulo 3

Práctica #1 “Los RPMS”La administración de paquetes con RPMEl Administrador de paquetes Red Hat (RPM) es un sistema de empaquetado abierto que trabaja en Red Hat Linux además de otros sistemas Linux y UNIX que está a la disposición de cualquiera. Red Hat, Inc. fomenta el uso de RPM por parte de otros vendedores para sus propios productos. RPM se puede distribuir bajo los términos de GPL. 

RPM facilita las actualizaciones de sistema para el usuario final. Es posible instalar, desinstalar y actualizar paquetes RPM por medio de comandos breves. RPM mantiene una base de datos de los paquetes instalados y de sus ficheros, y usted puede hacer consultas y verificaciones poderosas en su sistema. Si prefiere una interfaz gráfica, puede utilizar Gnome­RPM para ejecutar muchos comandos RPM. 

RPM permite al desarrollador tomar el código fuente del software y empaquetarlo en paquetes binarios y de fuente para los usuarios finales. Este proceso es bastante sencillo y se controla desde un único fichero y parches opcionales creados por usted mismo. Esta clara delineación de fuentes originarias y sus parches y las instrucciones de construcción facilitan el mantenimiento del paquete al ir apareciendo nuevas versiones del software. 

NotaYa que RPM efectúa cambios a su sistema, debe ser root para poder instalar, quitar, o actualizar un paquete RPM. 

El comando rpm tiene varias opciones: rpm ­q <nombre_paquete> Me dice si este paquete ya esta instalado o no. rpm ­qa Me dice todos los paquetes que están instalados. rpm ­i <nombre_paquete> Instala el paquete. rpm ­e <nombre_paquete> Desinstala un paquete. 

Los paquetes RPM normalmente tienen nombres de fichero como paquete­x.x.x.rpm. El nombre de fichero incluye el nombre de paquete (paquete), versión (x), lanzamiento (x) y arquitectura (x). La instalación de un paquete es tan simple como teclear el siguiente comando en el intérprete de comandos de shell: 

# rpm ­paquete­x.x.x.rpmpaquete                      #####################################

Tal vez usted haya borrado algunos ficheros accidentalmente, pero no está seguro de lo que ha eliminado. Si desea verificar su sistema entero y ver lo que podría hacer falta, podría intentarlo con el siguiente comando: 

rpm ­Va

Tal vez alguna vez verá un fichero que no reconoce. Para saber a qué paquete pertenece, teclearía: 

rpm ­qf /usr/X11R6/bin/ghostview

17 Prácticas Módulo Administración

Page 18: Practica GNU Administracion Final

La salida sería parecida a la siguiente: 

gv­3.5.8­10

¿Desea encontrar más información sobre un determinado programa? Puede intentar el siguiente comando para localizar la documentación que acompañaba el paquete al cual pertenece ese programa: 

rpm ­qdf /usr/bin/md5sum

La salida debería ser parecida a la siguiente: 

/usr/share/doc/textutils­2.0a/NEWS/usr/share/doc/textutils­2.0a/README/usr/info/textutils.info.gz/usr/man/man1/cat.1.gz/usr/man/man1/cksum.1.gz

• Podría encontrar un RPM nuevo y no saber para qué sirve. Para encontrar información sobre él, use el siguiente comando: 

rpm ­qip paquete­x.x­x.x.rpm

Práctica #2 “Los DEBs”DPKG

Esta es la herramienta en línea de órdenes para instalar y manipular los paquetes Debian. Tiene varias opciones que le permitirán instalar, configurar, actualizar, borrar y realizar otras operaciones con los paquetes Debian. Incluso puede construir sus propios paquetes. dpkg también permite listar los paquetes disponibles, los ficheros pertenecientes a cada paquete, a qué paquete pertenece un fichero y demás.

Debian posee una serie de herramientas que es necesario llamar para construir un paquete:

● dpkg­source empaqueta y desempaqueta los archivos fuentes de un paquete Debian. ● dpkg­gencontrol lee la información de un árbol fuente Debian desempaquetado y genera un paquete binario de control, 

generando una entrada para éste en el fichero debian/files. ● dpkg­shlibdeps calcula las dependencias de ejecutables respecto a librerías. ● dpkg­genchanges lee la información de un árbol fuente Debian desempaquetado y ya construido, generando un fichero de 

control de los últimos cambios (un .changes). ● dpkg­buildpackage es un script de control que se puede utilizar para automatizar la construcción del paquete. ● dpkg­distaddfile añade una entrada de un fichero a debian/files. ● dpkg­parsechangelog lee el fichero de cambios changelog) de un árbol fuente Debian desempaquetado y genera una salida con 

la información de estos cambios, convenientemente preparada. 

El comando dpkg es el que funciona "por debajo" de apt­get. Puede que tengas algún problema al instalar algún paquete .deb si te has bajado este de alguna Web y no a través de las fuentes especificadas en sources.list. 

En caso de que esto te ocurra puedes usar directamente el comando dpkg para instalar el paquete de la siguiente forma 

dpkg ­i /ruta/nombre_paquete.deb

18 Prácticas Módulo Administración

Page 19: Practica GNU Administracion Final

También puede ocurrir que quieras saber si existe algún paquete con un contenido determinado, por ejemplo porque un programa de instalación requiera una librería, o porque quieres descubrir en que paquete venía el programa "prog"; en ese caso usas 

dpkg ­S prog

Otra forma útil del dpkg es: dpkg ­L <paquete>que muestra todo el contenido de un paquete que ya esté instalado. 

Para saber la versión de los programas que tienes instalados usa dpkg ­l <paquete>Los paquetes de software con extensión .deb son los paquetes nativos de Debian y sus distribuciones derivadas como es el caso de Ubuntu. Contienen un instalador y los archivos necesarios para realizar automáticamente todas las operaciones de instalación. 

Para instalar y desinstalar estos paquetes, el proyecto Debian desarrolló la aplicación dpkg y más tarde, para facilitar su manejo, creó su propio sistema de gestión de paquetes, APT, que es la base para que otras aplicaciones como apt­get y aptitude puedan descargar el paquete indicado y manejarlo para configurar, resolver dependencias e instalar la aplicación. 

Sobre la base de estos últimos programas se crearon varias aplicaciones para entorno gráfico como 'Añadir y Quitar aplicaciones', 'Synaptic' ó 'Adept' , que facilitan mucho la tarea de instalación de software.

dpkg­reconfigure <nombre_del_paquete>La interfaz de configuración:dpkg­reconfigure debconf

Por ejemplo en caso de que el servidor X no este funcionando correctamente;dpkg­reconfigure xserver­xorg

El teclado:dpkg­reconfigure console­common

Ver los ficheros que contiene un paquete:dpkg ­c <paquete.deb>

Buscar en que paquete de los instalados está contenido un ficherodpkg ­S fichero

Práctica #3 “ALIEN”

¿Cómo se convierten paquetes entre RPM, DEB y TGZ con alien?Alien es un programa que permite convertir un paquete binario entre los formatos rpm (Redhat, Suse), deb (Debian) y tgz (Slackware): 

Conversion a .DEB: 

19 Prácticas Módulo Administración

Page 20: Practica GNU Administracion Final

  alien ­­to­deb <paquete.elquesea>Conversion a .RPM:   alien ­­to­rpm <paquete.elquesea>Conversion a .TGZ:   alien ­­to­tgz <paquete.elquesea>Existen otros flags (como ­i) que permiten directamente tras la conversión realizar la instalación del paquete generado. Alien realiza la conversión descomprimiendo el paquete original y generando el nuevo paquete, diciéndonos el lugar del árbol de directorios donde dejará el paquete recién generado, según la distribución (por ejemplo, en Redhat en /usr/src/redhat/RPMS/).

Práctica #4 “Los tar.gz”Instalación compilado las fuentes (tar.gz) También podemos bajar las fuentes de los programas que queramos instalar y compilarlas nosotros mismos, éste procedimiento está bastante estandarizado y la mayoría de las veces uno no tiene más que recordar 3 o 4 comandos para instalar cualquier programa que se baje a partir de las fuentes, claro que siempre pueden ocurrir problemas (programas que no compilan por estar todavía en desarrollo, dependencias a librerias que no tenemos instaladas...) por lo que siempre es recomendable instalar los programas a partir de los paquetes diseñados para las distribuciones, aun así hay programas que no se encuentran "empaquetados" para las distribuciones por lo que no nos quedará más remedio que abordar el tar.gz. 

Éste es el caso del GtkAda, así que lo primero que haremos, como antes, será descomprimir el archivo con el comando tar: 

# lsGtkAda­1.2.11.tgz                 gnat­3.13p­i686­pc­linux­gnu­bin.tar.gzgnat­3.13p­i686­pc­linux­gnu­bin # tar zxvf GtkAda­1.2.11.tgz

Una vez descomprimidos nos situamos sobre el directorio que se ha creado y ejecutamos configure que se encargará de preparar el Makefile necesario para la posterior compilación 

 # cd GtkAda­1.2.11[11:33pm]Andromeda:/instalando/GtkAda­1.2.11 # lsANNOUNCE  INSTALL      aclocal.m4    configure     docs        known­problemsAUTHORS   Makefile.in  config.guess  configure.in  examples    srcCOPYING   README       config.sub    contrib       install­sh  testgtk # ./configure

Llegado a este punto configure realizará una serie de comprobaciones para ver si se puede instalar el programa en cuestión, aquí pueden surgir problemas por no tener instaladas en el sistema librerías necesarias para que GtkAda funcione, a continuación se detalla un ejemplo de ejecución de configure en un sistema que no tiene la versión 1.2.2 de libgtk­dev o superior instalada. checking for gtk­config... nochecking for GTK ­ version >= 1.2.2... no

20 Prácticas Módulo Administración

Page 21: Practica GNU Administracion Final

*** The gtk­config script installed by GTK could not be found*** If GTK was installed in PREFIX, make sure PREFIX/bin is in*** your path, or set the GTK_CONFIG environment variable to the*** full path to gtk­config.configure: error: Test for GTK failed. See the file 'INSTALL' for help.

Para arreglar esto tendremos que instalar el paquete libgtk­dev con apt­get, dpkg, rpm ... con versión mayor o igual a la 1.2.2 y volver a ejecutar el configure, si todo ha ido bien debería acabar con unas lineas como éstas: [...]creating src/gtkada­configcreating src/gatecreating testgtk/Makefilecreating src/gtkextra/Makefilecreating src/opengl/Makefilecreating src/pixbuf/Makefilecreating src/glade/Makefilecreating src/gnome/Makefilecreating docs/gtkada_ug/Makefilecreating docs/gtkada_rm/Makefile

Ahora tendremos que compilar, para ello el configure habrá creado un Makefile de acuerdo a las características de nuestra máquina, por lo que simplemente tendremos que ejecutar `make` para que comience la compilación del gtkada # make

Una vez que se ha compilado (siempre que no haya habido errores), procedemos a copiar el programa en los directorios que le corresponda, para ello ejecutaremos `make install` y con ello finalizara la instalación. # make install[...]

A partir de ahora ya podremos usarlo, tal y como dice el archivo INSTALL gnatmake <your\_application> <your\_switches> `gtkada­config`

Práctica #5 “APT”APT (Advanced Packaging Tool) es una interfaz avanzada del sistema de paquetes de Debian que consiste en diversos programas cuyos nombres generalmente comienzan con "apt­". apt­get, apt­cache y apt­cdrom son herramientas de la línea de comandos para el manejo de paquetes. Estos también funcionan como frontales de usuario para otras herramientas tales como dselect y aptitude. 

Para más información, instale el paquete apt y lea apt­get(8), apt­cache(8), apt­cdrom(8), apt.conf(5), sources.list(5), apt_preferences(5) (Woody) y /usr/share/doc/apt/guide.html/index.html. 

21 Prácticas Módulo Administración

Page 22: Practica GNU Administracion Final

Una fuente alternativa de información es el APT HOWTO. Éste se puede instalar mediante apt­howto en /usr/share/doc/apt­howto/en/apt­howto­en.html/index.html. 

apt­get upgrade y apt­get dist­upgrade tienden a obtener todos los paquetes situados bajo "Dependen:" y descarta todos los paquetes listados en "Recomendados:" y "Sugeridos:". Para evitar esto, use dselect. 

Preguntas:1. Describa las ventajas y desventajas de las librerías compartidas.2. Verifique todos los paquetes instalados utilizando la opción verify.3. Verifique la ubicación de la base de datos RPM del paquete perl utilizando el comando rpm y la 

combinación verify.4.  Qué es una dependencia y que pasa si usted continua al instalar un paquete con una que no esta resuelta?

22 Prácticas Módulo Administración

Page 23: Practica GNU Administracion Final

Capitulo 4Práctica #1 “Los Procesos”

● Todos los procesos en Unix se identifican por un número llamado Identificador de Proceso (PID) . ● El PID es la forma habitual de referirse a un proceso cuando se ejecuta un comando para el control de 

procesos . ● Sólo los propietarios de un proceso y el administrador (root) puede realizar operaciones sobre el mismo 

Comandos para el control de procesos ps  .­ Muestra los procesos en el sistema. 

Parámetros: A  Muestra todos los procesose  Igual que el anterior x   Muestra procesos no conectados a un terminal r  Muestra procesos activos C comando Muestra los procesos correspondientes al comando U usuario  Muestra los procesos de un usuario 

   p PID  Muestra el proceso con el correspondiente PID    u usuario  Muestra los procesos con de un usuario efectivo    f  Muestra toda la información de cada proceso 

l  Muestra información más completa de cada proceso    H  Muestra la jerarquía de procesos 

Mas Comandospstree o ptree Muestra la jerarquía de procesos del sistema top  Muestra en tiempo real el uso de CPU de los procesos pmap PID  Muestra la utilización de memoria de un proceso                            fuser fichero  Muestra todos los procesos que acceden a un fichero. Tras el PID de cada proceso muestra una letra indicando como accede al fichero:      c Directorio actual      e Ejecución      f Fichero abierto      r Directorio raiz      m Biblioteca compartida 

fuser fichero Parámetros: ­k  Finaliza todos los procesos 

23 Prácticas Módulo Administración

Page 24: Practica GNU Administracion Final

nice  ­prioridad comando  Ejecuta un comando con una prioridad diferente renice prioridad PID  Cambia la prioridad de un proceso kill PID  Envía una señal a un proceso. Parámetros: ­señal Número que identifica la señal a enviar. Si no se especifica se utiliza la señal  de terminación de proceso ­L  Muestra todas las señales        killall comando Igual que kill pero envía la señal a todos los procesos correspondientes al comando free  Muestra la memoria libre en el sistema 

Algunos ejemplos:lsof: para listar archivos abiertos por los procesosSin pasar ninguna opción el comando lsof listara todos los archivos abiertos de todos los procesos actuales.

Para listar los archivos abiertos por el usuario “estudiante”', o el usuario de ID numero ID 1000 use la opción ­u. Para listar los archivos usados por el proceso numero 456, el proceso 123, o el proceso 789, usted deberá usar el banderín ­p. Poniendo todo esto en practica un comando se ve de esta manera: 

lsof ­p 456,123,789 ­u 1000,estudiante

Para listar todos los archivos abiertos en el dispositivo /dev/hd4, quedaría así: 

lsof /dev/hd4 

Para listar los procesos que utilizan el archivo   /ruta/de/archivo, use: 

lsof /etc/passwd 

fuser:Desplega los PIDs de los procesos utilizando un archivo o sistema de archivos en particular. En su manera por defecto, cada nombre de archivo es seguido por una letra denotando el tipo de acceso:

# fuser    /Ptools esun conjunto de herramientas de administración de procesos que permiten el seguimiento y la depuración de los procesos con facilidad. A partir de esta revisión, este conjunto de herramientas consta de los siguientes comandos:

• pmapEl comando pmap imprime la información del espacio de direcciones de un proceso.

• pgrepEl comando pgrep busca los procesos que tienen atributos que se ajustan a los criterios de selección especificados por los argumentos. 

24 Prácticas Módulo Administración

Page 25: Practica GNU Administracion Final

Los números de identificación de proceso de los procesos coincidentes se imprimen, separados por un delimitador, siendo la nueva línea el valor por defecto.

Cada opción de atributo puede tomar varios valores separados por una coma. pgrep seleccionará los procesos que coincidan con todas las opciones de atributo especificadas. Si una opción de atributo tiene varios valores, el proceso tiene que coincidir con uno de los valores.

• pkill

El comando pkill selecciona procesos similares a pgrep, pero, en lugar de imprimir los números de identificación de proceso, señala los procesos coincidentes.

El usuario puede especificar la señal que se va a enviar al proceso coincidente como el primer argumento en pkill. Por defecto, se da por sentado el uso de SIGTERM.

• ptree

El comando ptree imprime el árbol de proceso de todos los procesos que coinciden con los argumentos especificados. Mientras se imprime el árbol, se hace un sangrado hacia la derecha de los procesos secundarios en relación con los respectivos procesos primarios.

Preguntas:1. ¿Cuál es la diferencia entre un proceso y un daemon?2. ¿Por qué los procesos se vuelven zombies?3. ¿Qué señal le dice al proceso que vuelva a leer su archivo de configuración?4. ¿Por qué se crean los archivos core y que editor me permite leerlos?5. ¿En cuales carpetas se alojan los runlevels?

Ejercicios 1. Comprueba cual es el nombre del proceso antecesor de todos los demás. 2. Averigua el PID de tu proceso shell 3. Utiliza pmap para comprobar cuanta memoria ocupa 4. Crea un fichero de texto y abrelo con diferente editores simultáneamente. Posteriormente averigua el PID de 

todos los procesos que acceden al fichero 5. Averigua todos los usuarios que están ejecutando el mismo shell que tu. 6. Ejecuta un editor en un terminal con una unidad menos de prioridad 7. Disminuye en 2 unidades la prioridad del editor del ejercicio anterior mientras se ejecuta 8. Envía una señal de terminación al editor del ejercicio anterior 9. Ejecuta  varias veces el mismo editor y finalízalos todos utilizando el comando killall 

25 Prácticas Módulo Administración

Page 26: Practica GNU Administracion Final

Capitulo 5Práctica #1 “mtools”mtools es un conjunto de programas para trabajar sobre disquetes DOS.  Incluye mdir (dir de DOS), mcopy (copy de DOS) y otros. Las unidades de disquete se referencian como siempre: a:, b:. Se usa la barra de UNIX / en lugar de la de DOS \ para separar directorios. Ejemplos:   mdir a:   mdir a:/admunix   mcopy varios a:/archivos   mcopy * a:/todos Digitando mtools da una lista de los comandos soportados.   Para que funcione mtools a nivel de usuario común, no supervisor,   chmod u+s /usr/bin/mtools Para poder usar las disqueteras, asegurar que en el archivo /etc/mtools.conf figuren las líneas   drive a: file="/dev/fd0" privileged=1 exclusive   drive b: file="/dev/fd1" privileged=1 exclusive Para poder usar mtools sobre la partición DOS en el disco C:, asegurar que en el archivo /etc/mtools.conf figure la línea   drive c: file="/dev/hda1 privileged=1

­ Ejercicios MTOOLS1­ Formatear un disquete con la utilidad mformat.2­ Copiar información desde el disco duro a la disquetera con mcopy3­ Listar los archivos de la disquetera con mdir4­ Borrar archivos del de la disquetera con la utilidad mdel5­ Crear y borrar directorios con las utilidades mmd y mrd respectivamente.

Práctica #2 “Establecer cuotas de disco”Si queremos que los usuarios de nuestro sistema no consuman más recursos de los disponibles resulta indispensable habilitar un límite de ocupación de espacio en el disco duro. Esto es lo que se conoce como cuotas de disco y en unas pocas líneas os voy a explicar cómo es posible configurar un límite de utilización del disco en Ubuntu GNU/LinuxLos pasos son los siguientes:

● Instalar la característica de control de cuotas# apt­get install quota

● Indicar las particiones en las que aplicaremos las quotas editando/etc/fstab y añadiendo las opciones usrquota,grpquota

26 Prácticas Módulo Administración

Page 27: Practica GNU Administracion Final

# <file system> <mount point>   <type>  <options>       <dump>  <pass>/dev/hda5    /home    ext3    defaults,usrquota,grpquota    0    2

● Crearemos los archivos de control de quota y reiniciamos las particiones# touch /home/quota.user /home/quota.group# chmod 600 /home/quota.*# mount ­o remount /home

● Para a continuación inicializar el mecanismo de cuotas# quotacheck ­avugm

La primera vez obtendremos un aviso del tipo...quotacheck: WARNING ­ Quotafile //quota.user was probably truncated. Can't save quota settings...quotacheck: WARNING ­ Quotafile //quota.group was probably truncated. Can't save quota settings...

no hay que preocuparse.Ahora el comando 

# quotaon /home # activará por fin la quota

Editar la quota de los usuariosAntes de nada deberíais saber que existen dos tipos de cuota:

1. Cuotas rígidas: no será posible superar el límite y será negado el acceso.

2. Cuotas flexibles: se pueden superar y el usuario sólo recibirá un aviso de límite excedido. Tras un período de gracia ­ por defecto 7 días, configurable por partición ­ la cuota se volverá rígida.

Manos a la obra, en teoría sólo root puede hacer esto y el comando es el  siguiente:

# edquota ­u usuario

entonces se nos mostrará una serie de registros con los siguientes campos:

1. Filesystem (el sistema de archivos en el que se aplica la cuota)2. blocks (el número de bloques máximo a ocupar. 0 = ilimitados3. soft (el número de KB máximo a ocupar para cuota flexible. 0 = ilimitado)4. hard (el número de KB máximo a ocupar para quota rígida. 0 = ilimitado)5. inodes (el número de archivos máximo. 0 = ilimitado)

● Podemos copiar la configuración de un usuario con las cuotas establecidas a otros con el comando: # edquota ­p usuariomodelo usuario

27 Prácticas Módulo Administración

Page 28: Practica GNU Administracion Final

Capítulo 6Práctica #1 “Permisos de Archivos y Directorios”­ Se asume que p1 p2 p5 p4 y p5 son archivos1­ Explique chmod u+x p1 p2 p32­ Explique chmod 751 p33­ Explique chmod a­w p1

4­ Explique chmod 010 p45­ Explique chmod o+rx p26­ Explique chmod 623 p5

*** Dedemos repetir las prácticas de básico de permisos y usuarios ***Comando CHROOT      chroot <nombre­directorio> [<nombre­orden>]<nombre­directorio> es el nombre del directorio que va a ser el raíz para el nuevo proceso lanzado. <nombre­orden> es un parámetro opcional, que indica el nombre del proceso que se va a lanzar en este entorno con el raíz cambiado. Si no se especifica, se lanza una shell en modo interactivo. 1­ La empresa Nuñez tiene en su estructura de archivos directorios compartidos para la utilización de los recursos y espacio en el 

servidor, y los ha distribuido en grupos de la siguiente manera:a. Directorio tecnología : Destinado al grupo del Departamento de tecnologíab. Directorio publicidad: Para el grupo de publicidadc. Directorio gerencia: Para el grupo gerenciad. Directorio contabilidad: Para el grupo contabilidad

La empresa contrata personal para las siguientes áreas:Tecnología: Andres Perez y Jose Paredes,Publicidad: Anny Peralta, Gerencia: Vladimir Mejia, Contabilidad: Patricia Tavarez, Elvyn Bolges y Roman Vasquez

Ejercicios1. Crear los grupos señalados anteriormente.2. Crear los usuarios y asignarlos a sus respectivos grupos. Crearles a cada uno fecha de expiración al 31 de diciembre.3. Los usuarios de tecnología deben tener acceso a todos los directorios. Editar el archivo correspondiente para este fin.4. Todos los UID de los usuarios creados deben empezar a partir de 1000. Por ejemplo, el UID de Andres sea 1001. Edite el 

archivo correspondiente para este cambio.5. Crear los directorios y asignarles los permisos y grupos correspondientes. Por defecto los permisos deben ser: usuarios: Lectura, 

escritura y ejecución, Grupos: Lectura,escritura y ejecución, otros: ninguno.6. La empresa prescindió de los servicios de Jose Paredes y transfirió a Elvyn Bolges a tecnología :

a) Saque una copia de seguridad de los datos de jose paredes y elimine su usuario y archivos.b) Agregue a Elvyn Bolges al departamento de tecnología.

7. Edite el mensaje de inicio en el servidor para que cada usuario que ingrese le presente: “Bienvenido a nuestra area tecnológica, por favor lea la documentación en su directorio home para que se acoja a nuestras políticas”

Preguntas1. La empresa necesita que cada empleado nuevo tenga en su directorio home archivos informativos y de bienvenida de la empresa 

así como uso y políticas de la parte tecnológica. En que directorio se colocarían estos archivos para que cuando cada usuario sea creado se copien automáticamente ?.  

2. Explique la importancia de las variables de entorno y como crearlas, exportarlas y ver los valores de estas

28 Prácticas Módulo Administración

Page 29: Practica GNU Administracion Final

Capitulo 7Práctica #1 “El Demonio Cron” Crond es un demonio del sistema que ejecuta periódicamente tareas programadas según una combinación de la hora, día del mes, mes, día de la semana y semana. La consulta de las tareas se realiza cada minuto. 

El principal fichero de configuración del servicio cron es /etc/crontab, en el que las órdenes se especifican mediante líneas con el siguiente formato:                     minuto        hora   día    mes   día_semana  comando No se tienen en cuenta las líneas en blanco y las líneas que comiencen por # se consideran comentarios, y se ignorarán. El significado de los anteriores campos es el siguiente:               minuto:              minuto dentro de una hora (0­59)                    hora:          hora dentro de un día (0­23)                     día:          día dentro del mes (1­31)                         mes:         mes dentro del año (1­12)                     día_semana:        día de la semana (0­6, siendo el domingo el 0)                     comando:        comando a ejecutar.       Un asterisco * en alguno de los campos se entenderá como todos los valores posibles. Por lo tanto, un * en el campo mes se entenderá como que el comando se ejecuta todos los meses en el momento indicado en el resto de campos. Así, por ejemplo:       0 * * * * sync 

ejecutará el comando sync el primer minuto de cada hora. Y       0 23 10 * * sync ejecutará el comando sync todos los días 10 de cada mes a las 11:00 de la noche. Un guión (­) entre los números enteros indica un intervalo de números enteros. 

Por ejemplo, 1­4 significa los números enteros 1, 2, 3 y 4. Una lista de valores separados por comas (,) especifica una lista. Por ejemplo, 3, 4, 6, 8 indica esos cuatro números enteros. El valor de un número entero se puede omitir dentro de un intervalo si se indica a continuación del intervalo lo siguiente /<número entero>. Por ejemplo, 0­59/3 puede usarse para definir cualquier minuto excepto el tercero del campo minuto. Los valores que se omiten también pueden utilizarse junto con un asterisco. Por ejemplo, el valor */3 puede usarse en el campo de mes para omitir el tercer mes. 

Los usuarios diferentes del superusuario pueden configurar las tareas cron con la utilidad crontab. La sintaxis de dicho comando es la siguiente:      crontab       [­u usuario]        fichero 

29 Prácticas Módulo Administración

Page 30: Practica GNU Administracion Final

     crontab       [­u usuario]        [{­l|­r|­e}]              ­l:  Lista las tareas programadas       ­r:         Borra todas las tareas programadas       ­e:          Edita el fichero de tareas programadas.       Todos los crontabs definidos por el usuario se almacenan en el directorio /var/spool/cron y se ejecutan utilizando los nombres de los usuarios que los han creado. Para crear un crontab como un usuario distinto de root, se inicia la sesión como ese usuario y se ejecuta el comando crontab ­e para modificar el crontab del usuario. El fichero usa el mismo formato que /etc/crontab. También puede especificarse la orden periódica a ejecutar en un fichero. 

Los ficheros /etc/cron.allow y /etc/cron.deny se usan para restringir el acceso al servicio cron. El formato de los dos ficheros de acceso es un nombre de usuario en cada línea. No está permitido espacio en blanco en ninguno de los ficheros. Si existe el fichero cron.allow, tan sólo se permitirá a los usuarios presentes en la lista utilizar cron y el fichero cron.deny se ignorará. Si cron.allow no existe, los usuarios listados en cron.deny no pueden usar cron. El usuario root puede utilizar siempre cron. 

Práctica #2 “El comando CRONTAB”El comando crontab se emplea para facilitar la información al demonio cron de los programas que hay programados para ser ejecutados. Por medio de crontab podemos planificar la ejecucuón de comandos con cierta periodicidad. Este comando utiliza el demonio cron que debe estar en ejecución si queremos que funcione correctamente el comando crontab. Existe un fichero crontab para cada usuario, donde se especifican los comandos que esos usuarios quieren que se ejecuten.

En el archivo crontab se encuentran las órdenes a ejecutar de forma periódica. Las órdenes se disponen en líneas con el formato:minuto hora día mes día_semana comando

No se tienen en cuenta las líneas en blanco y las líneas que comiencen por # se consideran comentarios, y se ignorarán. El significado de los campos es el siguiente:

• minuto: especifica el minuto dentro de una hora (0­59) • hora: especifica la hora dentro de un día (0­23) • día: especifica el día dentro del mes (1­31) • mes: especifica el mes dentro del año (1­12) • día_semana: especifica el día de la semana (0­6, siendo el domingo el 0) • comando: especifica el comando a ejecutar 

30 Prácticas Módulo Administración

Page 31: Practica GNU Administracion Final

Un asterisco * en alguno de los campos se entenderá como todos los valores posibles, así un * en el campo mes se entenderá como todos los valores posibles, un * en el campo mes se entenderá como que el comando se ejecuta todos los meses en el momento indicado en el resto de campos.

El permiso para utilizar el comando crontab se determina de la misma forma que el comando at, con la diferencia de que los archivos se llaman cron.allow y cron.deny. 

Para obtener más información, consulte las páginas de manual at(1) y crontab(1).

Ejemplos de líneas del archivo crontab:0 * * * * sync

Esto ejecutará el comando sync cada hora un el primer minuto.

0 23 10 * * sync

Esto ejecutará el comando sync todos los días 10 de cada mes a las 11:00 de la noche.

Nota: Para obtener una lista de las entradas actuales del comando crontab, utilice la opción ­l.$ crontab ­l

Práctica #3 “El Demonio At” Mientras que cron se usa para programar tareas, el comando at se emplea para programar una única tarea en un tiempo específico. Para poder utilizar el comando at debe estar el paquete RPM at instalado y el demonio atd en funcionamiento. La sintaxis del comando at es la siguiente:      at     [­f      fichero]         [opciones]   fecha El argumento fecha puede ajustarse a cualquiera de los siguientes formatos:       HH:MM                              Por ejemplo, 04:00 especifica 4:00 AM.       nombre­mes, día y año              Por ejemplo, May 15 2004. El año es opcional.       MMDDYY, MM/DD/YY, o MM.DD.YY  Por ejemplo, 011504 para el día 15 de Enero del año 2004. Si se escribe el comando at con el argumento del tiempo pero se omite el fichero, se visualiza el “prompt” at>. A continuación se escribe el comando a ejecutar, se pulsa <intro> y Ctrl­D. Se puede especificar más de un comando escribiendo cada comando seguido de la tecla <intro>. Después de haber escrito todos los comandos, se pulsa <intro> para obtener una línea en blanco y luego Ctrl­D. 

Alternativamente, se puede introducir un “script” en el intérprete de comandos y escribir Ctrl­D en una línea en blanco para salir. Entre las opciones adicionales de la línea de comandos de la orden at se incluyen: ­f:       Lee los comandos o “script” del shell desde un fichero en vez de ser en el intérprete de comandos. ­m:                Envía un correo al usuario cuando se ha completado la tarea. ­v:                 Muestra la hora en la que la tarea será ejecutada. 

31 Prácticas Módulo Administración

Page 32: Practica GNU Administracion Final

­v:  Para visualizar las tareas pendientes del demonio atd se ejecuta el comando atq, que muestra una línea por cada tarea pendiente con el formato número de tarea, fecha, hora, tipo de tarea y nombre de usuario. Los usuarios tan sólo pueden ver sus propias tareas. Si el usuario root ejecuta el comando atq, se visualizarán todas las tareas pendientes para todos los usuarios. 

El comando atrm elimina de la lista de tareas las que se especifican tras dicho comando (separadas entre ellas por un blanco). A continuación se muestran algunos ejemplos del uso del servicio at:       $ at 15:50 Feb 14       > mail castano –s REUNION < /dev/null       > CTRL­D       job 6 at 2004­02­14 15:50       $ atq       job 6 at 2004­02­14 15:50       $ atrm 6 Los ficheros /etc/at.allow y /etc/at.deny pueden ser usados para restringir el acceso al comando at. El formato, utilidad y política de funcionamiento de dichos ficheros es análoga que la de los ficheros /etc/cron.allow y /etc/cron.deny, respectivamente, del servicio cron. 

Programa el sistema para que el superusuario ejecute el siguiente comando durante 5 minutos seguidos de cada hora de cada día de cada mes:       date       >>     /tmp/f.cron.out 

Comprueba el correcto funcionamiento de la tarea programada observando el contenido incremental del fichero /tmp/f.cron.out. Programa el sistema para que el superusuario borre los ficheros que aparezcan por debajo de la jerarquía del directorio /tmp y que no hayan sido accedidos en los últimos 3 días, esto es,       find       /tmp       –atime    +3 ­exec rm    {} \; 

La operación tendrá lugar de lunes a viernes a las 0:45 horas. Edita el fichero de tareas programadas por el superusuario y elimina la primera tarea, esto es, la que ejecuta el comando date. 

¿Cómo programaría el sistema un usuario distinto del superusuario para realizar a las 12 de la noche una copia de seguridad del contenido de su directorio “home” mediante el comando tar  (tar  ­zxvf  /home/usuario/f.tgz  /home/usuario)? Deniega el permiso a ese usuario para que utilice el comando at y repite de nuevo la operación. ¿Qué ocurre? 

Práctica #4 “El comando AT”El comando at es para ejecutar un comando a una fecha y hora especificada. Si, por ejemplo, vas a dejar el ordenador encendido, realizando una tarea, y quieres que luego realice una copia de seguridad, y después se apague, pero no vas a estar delante del ordenador: se podría aplicar una serie de comandos at para que el sistema lo haga cuando ya no estés delante.

32 Prácticas Módulo Administración

Page 33: Practica GNU Administracion Final

Hay dos archivos, que se llaman at.allow y at.deny y se ubican en el directorio /usr/lib/cron, que determinan si usted puede utilizar el comando at. Si su nombre aparece en at.allow, puede utilizarlo. 

Si el archivo at.allow no existe, el sistema comprueba si su nombre está en el archivo at.deny. En caso afirmativo, se le denegará el acceso al comando at.

Si no existen ni el archivo at.allow ni el archivo at.deny, los únicos que pueden utilizar el comando at son quienes tengan permiso de superusuario. Si sólo existe el archivo at.deny y éste está vacío, todos los usuarios podrán utilizar el comando at.

El comando at tiene la siguiente sintaxis:at [hora] [fecha]

El comando at entonces se queda esperando a que el usuario introduzca la serie de comandos que se quiere ejecutar ese día y hora. Para terminar de introducir comandos, hay que pulsar la combinación de teclas <CTRL+D>.

El comando at acepta horas con formato HH:MM para ejecutar un trabajo a una determinada hora del día. (Si esa hora ya ha pasado, se asume que es del día siguiente.) Y fechas con el formato MMDDAA o MM/DD/AA o DD.MM.AA.

Aquí tenemos un ejemplo de un comando at:[root@localhost root]# at 1700 7.7warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/shat> echo "Acuérdate del cumpleaños de tu hermano!" > ~/recordatorio.txtat> <CTRL+D>job 1 at 2002­07­07 17:00# _

Lo que hará este ejemplo es crear un fichero en el directorio inicial del usuario que contenga el texto "la web es www.codigolibre.org" . Esto pasará el siete de julio a las cinco de la tarde, como se ha especificado en el comando at.

Práctica #5 “Realizar copias de seguridad con rsync”Hay diferentes maneras de utilizar rsync en función de lo que necesitemos. Permite realizar copias locales, copias desde y hasta un servidor que corra un demonio de rsync, copias desde y hasta un servidor utilizando un shell remoto como transporte, y por último nos permite listar archivos de un servidor remoto. Todas estas características nos permiten realizar multitud de posibilidades como copias locales, copias de servidores remotos, sistemas de mirroring, mantenimiento sincronizado de sistemas de preproducción y producción, etc…

Qué es lo que queremos hacerEl ejemplo que vamos a desarrollar está basado en la utilización de un servidor remoto que corre un demonio de rsync, que exporta diferentes árboles de directorios, llámados módulos. Vamos a utilizar un planteamiento típico utilizando un servidor remoto rsync, pero sin utilizar ssh como transporte, ya que no se considera que la información a transmitir requiera ese nivel de seguridad. Utilizaremos también un equipo local en el que queremos obtener una réplica de lo que hay en los módulos exportados por el servidor de rsync.

Los backups que se realizan de esta forma son realmente una réplica de lo que hay en el servidor, por lo que si tenemos algún problema bastará con subir los archivos o carpetas directamente.

Estas son las carpetas del servidor de las que queremos hacer copias:

33 Prácticas Módulo Administración

Page 34: Practica GNU Administracion Final

• /www => los webs de los clientes • /var/lib/mysql => bases de datos de mysql 

Esta es la carpeta del equipo local donde queremos realizar las copias:/usr/local/backups/replica_hosting

Configuración del servidorVamos a ejecutar el demonio de rsync a partir del superdemonio xinetd, para lo cual debemos asegurarnos de que está asociado al puerto 873/tcp dentro del archivo /etc/services. Para ello hay que comprobar que el archivo contiene un línea como la siguiente:rsync 873/tcp

Una vez hecho esto debemos activar el servicio dentro de xidentd. Si existe el archivo /etc/xinetd.d/rsync bastará con activarlo poniendo la entrada disable a no, en caso de que el archivo no exista se puede crear con el siguiente contenidoservice rsync{        disable = no        socket_type     = stream        wait            = no        user            = root        server          = /usr/bin/rsync        server_args     = ­­daemon        log_on_failure  += USERID}

Con esto ya tendríamos preparado el servidor de rsync para escuchar las peticiones entrantes, únicamente nos queda configurar el servicio y relanzar xinetd para que comience a trabajar.

Para preparar la configuración del servidor debemos crear dos archivos, /etc/rsyncd.conf y /etc/rsyncd.secrets. El primero de ellos contiene la configuración de los módulos exportados, mientras que el segundo contiene la información de los usuarios que tienen permisos para realizar conexiones. Estos son los contenidos de cada archivo:

/etc/rsyncd.confuid = nobodygid = nobodyuse chroot = yesmax connections = 1log file = /var/log/rsyncd.logpid file = /var/run/rsyncd.pid   [www]path = /wwwcomment = datos de wwwuse chroot = true

34 Prácticas Módulo Administración

Page 35: Practica GNU Administracion Final

max connections = 1read only = truelist = falseuid = nobodygid = nobodyauth users = remote_usersecrets file = /etc/rsyncd.secretsstrict modes = truehosts allow = 111.111.111.111   [mysql]path = /var/lib/mysqlcomment = datos de mysqluse chroot = truemax connections = 1read only = truelist = falseuid = mysqlgid = mysqlauth users = remote_usersecrets file = /etc/rsyncd.secretsstrict modes = truehosts allow = 111.111.111.111

/etc/rsyncd.secretsremote_user:thepass

El archivo rsyncd.conf se puede observar que se compone de una primera parte en la que se configuran parámetros genéricos del servidor, y una segunda parte donde se muestra la configuración exacta de cada módulo exportado. En la configuración se ha puesto por defecto que se use como usuario local nobody, y que se haga bajo un entorno chroot por seguridad. Esto hace que por defecto cuando nos conectemos a un módulo lo hagamos con ese usuario, y no podamos salir de él a otras zonas del servidor. Dentro de cada módulo se indica la carpeta a la que apunta, se dice que únicamente se pueden leer archivos, mediante read only = true, pero no modificarlos ni crear nuevos. Se dice también que si se socilita un listado de módulos al servidor estos estén ocultos, que se utilice como datos de conexión un usuario de nombre remote_user cuyo password está en el archivo /etc/rsyncd.secrets, y que únicamente se permitan conexiones desde la ip 111.111.111.111

En la configuración del segundo módulo se puede ver como se ha cambiado el usuario por defecto de nobody a mysql, con el fin de poder realizar las copias de las bases de datos, ya que normalmente el usuario nobody no tendrá permiso para leerlas.

Estos deberían ser lor permisos para ambos archivos:

­rw­r­­r­­ 1 root root 472 Dec 31 14:01 /etc/rsyncd.conf­rwx­­­­­­ 1 root root 21 Dec 31 14:00 /etc/rsyncd.secrets

35 Prácticas Módulo Administración

Page 36: Practica GNU Administracion Final

Hay multitudes de opciones de configuración que nos permiten configurar el servidor para nuestras necesidades específicas, más información en la página de man de rsyncd.conf.

Una vez configurado el servidor, deberíamos reiniciar xinetd con el fin de poder conectarnos al servidor de rsync

bash# /etc/rc.d/init.d/xinetd restart

Ahora ya podemos comenzar a configurar el equipo cliente.

Configuración del ClienteDentro de la carpeta /usr/local/backups creamos el archivo password.rsync, en el que escribimos el password con el que queremos conectarnos al servidor rsync: thepass

Debemos darle permisos de sólo lectura para el usuario que vaya a ejecutar la copia.

bash# chmod 600 password.rsync

Ahora ya podemos probar la conexión al servidor, para ello lo más sencillo es pedirle que nos dé un listado de lo exportable en uno de de los módulos, por ejemplo:

bash# rsync ­­password­file=/usr/local/backups/password.rsync rsync://[email protected]/www

Con esta orden el servidor nos contestará con el conjunto de archivos y carpetas disponibles en el módulo www. Si quisiéramos que lo hiciera de manera recursiva, recorriendo las subcarpetas, deberíamos haberle pasado el parámetro ­r. Hay que prestar atención a como acaba la información que pedimos al servidor. En este caso le estamos pidiendo www, que es diferente que ponerle una barra al final em>www/. Si realizamos una copia a local a partir de la primera opción se nos crearía una carpeta www y dentro el contenido de la misma, sin embargo con la segunda opción se copiaría directamente el contenido de la carpeta.

Si el servicio no funciona disponemos de la opción de mirar el log del servidor /var/log/rsyncd.log para investigar las posibles causas del problema. Conviene asegurarse de que el servicio está disponible en xinetd reiniciando éste si es necesario, y que los datos de usuario son correctos.

Una vez probado que funciona el servicio podemos preparar un pequeño script que ejecute la petición al servidor para cada módulo disponible. Este script podríamos luego incorporarlo a un cron, o modificarlo lo que hiciera falta para montar copias totales semanales e incrementales diarias, hay información al respecto en las referencias al final del artículo.

Creamos el archivo replica.sh (son tres líneas!!!!)

#/bin/shrsync ­arzvl ­­password­file=/usr/local/backups/password.rsync rsync://[email protected]/www /usr/local/backups/replica_hostingrsync ­arzvl ­­password­file=/usr/local/backups/password.rsync rsync://[email protected]/mysql /usr/local/backups/replica_hosting

36 Prácticas Módulo Administración

Page 37: Practica GNU Administracion Final

Dándole permisos de ejecución ya es suficiente para lanzar el script y obtener una copia de toda la información del servidor. Sucesivas ejecuciones del script producirán que se actualice la información existente en base al algoritmo de rsync, consiguiendo una replica actualizada con un consumo de ancho de banda óptimo.

bash# chmod 755 replica.shbash# ./replica.sh

Escenarios

2­ La empresa Nuñez cuenta con datos almacenados en las carpetas compartidas en el servidor los cuales, deben hacerse copias de seguridad constantemente. Las carpetas son:

a. Directorio Tecnología: /data/tecnologiab. Directorio publicidad: /data/publicidadc. Directorio gerencia: /data/gerenciad. Directorio contabilidad: /data/contabilidad

Se necesita crear copias de seguridad para cada uno de estos directorios. A diferencia de las otras carpetas, el directorio de contabilidad constantemente se modifica por lo que se hace necesario hacerles copia cada hora.

Ejercicios1. Crear una tarea diaria a las 11pm para comprimir el directorio de tecnología y colocarlo en /data/backup/2. Crear una tarea diaria a las 11pm para comprimir el directorio de publicidad y colocarlo en /data/backup/  3. Crear una tarea diaria a las 11pm para comprimir el directorio de gerencia y colocarlo en /data/backup/  4. Crear una tarea cada hora para comprimir el directorio de contabilidad y colocarlo en /data/backup/  5. Crear una tarea semanal a las 0300am para todas las carpetas anteriores y colocarlo en /data/backup/semanal. 6. Verificar que estas tareas se han programado correctamente.

Debido a un proceso de auditoría en el área contable el día 22 de enero, los datos incrementaron mas de lo normal por lo que se hace necesario hacer copia de seguridad.

Ejercicios1. Emplee at para programar la copia a las 10:25am del dia 22 de enero y copiarlo en /data/backup/original.2. verifique que se programo a la hora deseada. De no ser asi, eliminar el job y crearlo nuevamente.

Se adquirio un sistema de unidad externo de cintas para las copias de seguridad. Este dispositivo fue detectado en /dev/ftape.

Ejercicios1. Hacer copia de seguridad con cpio o afio a las carpetas /etc /var/ /home /usr y enviarlas a la unidad de backup externa.2. Programar esta tarea para ser realizada todos los dias a las 0500am.3. Al inicio del dia recuerde cambiar la cinta de backup. Necesitara:

1. Rebobinar la cinta y expulsarla. Indique el comando para hacerlo.2. Imprima el status de la cinta.

37 Prácticas Módulo Administración

Page 38: Practica GNU Administracion Final

Preguntas

1. Que significa la entrada 22 10 * * 7 en crontab ?2. Que significa at now +1 hour?3. Explique “at noon” 4. Explique “at midnight”5. Explique tar ­xvzf jose.tar.gz ­C /home/jose6. Explique find /etc/* |afio ­ovb  > /dev/ftape

Práctica #6 “El syslog” El syslog es un utilitario para revisar y supervisar todos los mensajes del sistema escritos a bitacoras llamados log de información que van desde simple mensajes a de importancia critica. Cada mensaje del sistema enviado al servidor de logs es asociado con una etica para que sea mas facil de manejar. 

• La primera etica contienen la funcion o aplicación que lo genero. 

• La segunda describe el nivel del 0­7 de urgencia del mensaje. 

El archivo /etc/syslog.conf Los archivos a los cuales syslog escribe cada tipo de mensaje se estable en el archivo de configuración /etc/syslog.conf. Este archivo contiene dos columnas. La primera lista las aplicaciones y la severidad del mensaje y la segunda lista donde debemos escribir o loggear el mensaje. Por defecto las distros populares de GNU/Linux vienen para escribir las mayorias de los mensajes el el archivo /var/log/messages. aquí un ejemplo: *.info;mail.none;authpriv.none;cron.none           /var/log/messages

En este caso, todos los mensajes de mivel "info" y mas seran almacenados, pero ninguno de los sistemas de mail, cron o autenticacion. Podemos hacer esto aun mas sensitivo si reemplazamos esta linea con una para que capture todos los mensajes desde debug para arriba en el archivo /var/log/messages. Este escenario es mas adecuado para cuando estamos depurando aplicaciones y servicios. *.debug                                          /var/log/messages

En este ejemplo, todos los mensajes de severidad debug; excepto auth, authpriv, news y mail; se almacenaran en el archivo /var/log/debug en modo cache. Note como usted puede distribuir la configuracion en mas de una linea utilizando el simbolo de  (\) al final de cada linea.  *.=debug;\       auth,authpriv.none;\       news.none;mail.none     ­/var/log/debug

38 Prácticas Módulo Administración

Page 39: Practica GNU Administracion Final

aquí le mostramos el archivo configurado en modo cache de /var/log/mesagges para recibir mensajes solamente info, notice y warning excepto para las aplicaciones auth, authpriv, news y mail. *.=info;*.=notice;*.=warn;\       auth,authpriv.none;\       cron,daemon.none;\       mail,news.none          ­/var/log/messages

Podemos inclusive enviar algunos tipos de mensajes para la pantallas en las cuales los usuarios se encuentran ingresados. En este ejemplo los mensajes de emergency y mas disparan este tipo de notificacion. La definicion del archivo es simplemente reemplazado por un asterisco para hacer que esto suceda. *.emerg                         *

Es cierto que algunosas aplicaciones escribiran sus logs a archivos y directorios independiente del archivo syslog.conf. aquí algunos ejemplos: 

Files: /var/log/maillog             : Mail/var/log/httpd/access_log    : Apache web server page access logs

Directories: /var/log/var/log/samba                      : Samba messages/var/log/mrtg                       : MRTG messages/var/log/httpd                      : Apache webserver messages

Activar cambios en archivo de configuración  syslog Los cambios a /etc/syslog.conf tomaran efecto la proxima vez que reiniciemos a syslog. Ejecute este comando para efectuar esta accion: # /etc/init.d/syslog restart

Como supervisar cambios interactivamenteSi deseamos que las nuevas entradas al log se nos presenten en pantalla en el momento que ocurren solo debemos ejecutar el siguiente comando: 

# tail ­f /var/log/messages

Comandos similar a este pueden ser aplicados a todos los archivos log. Esta es una de las mejores herramientas disponibles en GNU/Linux. Otro comando importante ademas de tail es grep, este comando le buscara en los logs por la ocurrencia de la cadena de texto en cuestion; usted puede filtrar la salida por tuberia al comando more para ver la informacion una pantalla a la vez; asi: 

39 Prácticas Módulo Administración

Page 40: Practica GNU Administracion Final

# grep string /var/log/messages | more

Usted puede además simplemente usar more o less para simplemente desplegar una pantalla a la vez de su archivo log por completo, así: 

# more /var/log/messages

Enviar Mensajes de syslog a Servidor Remoto Es muy buena practica enviar los mensajes del sistema a un servidor remoto por razones de seguridad. Con todos los mensajes de los logs en un solo ordenador se facilita correlacionar problemas en toda la estructura de la empresa. 

Configurar el Servidor de Syslog en GNU/Linux Por defecto el syslog no recibe mensajes desde clientes remotos. Como ya hemos visto, el syslog revisa el archivo de configuracion /etc/syslog.conf para determinar sus parametros. Para que Syslog escuche por mensajes remotos debemos activar la opcion ­r en  SYSLOGD_OPTIONS. 

# Options to syslogd# ­m 0 disables 'MARK' messages.# ­r enables logging from remote machines# ­x disables DNS lookups on messages received with ­r# See syslogd(8) for more details

 SYSLOGD_OPTIONS="­m 0 ­r"

# Options to klogd# ­2 prints all kernel oops messages twice; once for klogd to decode, and#    once for processing with 'ksymoops'# ­x disables all klogd processing of oops messages entirely# See klogd(8) for more details

KLOGD_OPTIONS="­2"

Note: In Debian / Ubuntu systems you have to edit the syslog startup script /etc/init.d/sysklogd directly and make the SYSLOGD variable definition become "­r". 

# Options for start/restart the daemons#   For remote UDP logging use SYSLOGD="­r"##SYSLOGD="­u syslog"SYSLOGD="­r"

Luego de este cambio debera reiniciar el el servidor. El servidor abrira el puerto UDP 514, lo que podemos verificar de varias maneras con el comando netstat. 

40 Prácticas Módulo Administración

Page 41: Practica GNU Administracion Final

# netstat ­a | grep syslogudp        0      0 *:syslog                *:*# netstat ­an | grep 514udp        0      0 0.0.0.0:514             0.0.0.0:*

Configurar el cliente de GNU/Linux Ya con el servidor esperando recibir mensajes, necesitamos poder configurar el cliente remoto para que envie sus mensajes al servidor. Esto se logra editando el archivo /etc/hosts en el cliente de GNU/Linux. Estos son los pasos: 

1) Determine la direccion IP y el FQDN del su host remoto que desea enviar los mensajes. 2) Agregue una entrada en el archivo /etc/hosts en el siguiente formato: IP­address    fully­qualified­domain­name    hostname    "loghost"Ejemplo: 192.168.1.100    fcld.codigolibre.org    fcld     loghost

Ahora su archivo /etc/hosts tiene un sobre nombre de "loghost" para el servidor fcld. 

3) El próximo paso seria editar su archivo /etc/syslog.conf para que los mensajes de syslog se envíen a su nuevo nombre de host, llámese en este caso loghost. *.debug                                       @loghost*.debug                                       /var/log/messages

Con este paso usted acaba de configurar que todos sus mensajes de jerarquía superior a debug sean enviados al servidor fcld ("loghost") y al archivo local /var/log/messages. Recuerde reiniciar el syslog para que se inicie la acción. 

Ahora como prueba puede efectuar lo siguiente para comprobar que el servidor esta recibiendo los mensajes con esta simple prueba de reiniciar su servidor de impresoras lpd y verificar que el server esta recibiendo los mensajes. 

En el cliente GNU/Linux 

# /etc/init.d/lpd restartStopping lpd: [  OK  ]Starting lpd: [  OK  ]

En el Servidor GNU/Linux 

# tail /var/log/messages......Apr 11 22:09:35 cliente lpd: lpd shutdown succeededApr 11 22:09:39 cliente lpd: lpd startup succeeded......#

41 Prácticas Módulo Administración

Page 42: Practica GNU Administracion Final

Práctica #7 “El Utilitario Logrotate” El utilitario de GNU logrotate renombra y reutiliza los archivos log de los errores del sistema en base a un algoritmo periódico para que estos no ocupen espacio excesivo en disco. 

El archivo /etc/logrotate.conf Este es el archivo de configuración general, en el cual se puede indicar la frequencia de rotacion y reuso. 

• Podemos especificar parámetros de rotación semanales o diarios.• El parámetro de rotation especifica el numero de copias que se almacenaran. • El parámetro create creara un nuevo archivo log luego de cada rotación. 

Tomado esto en cuenta, un archivo de configuración tomando como parámetro de crear archivos diarios de todos los archivos logs y almacenarlo por siete días. Nombrando los archivos con el nombre archivo_log y la versión actual, seria así: archivo_logarchivo_log.0archivo_log.1archivo_log.2archivo_log.3archivo_log.4archivo_log.5archivo_log.6

Contenido del ejemplo de /etc/logrotate.conf # rotatacion semanal de los archivos log#weekly

# rotación diaria de los archivos logdaily

# Mantener 4 semanas de archivos logs anteriores.#rotate 4

# Mantener 7 días de archivos logs anterioresrotate 7

# crear un nuevo y vacío archivo log después de rotar los viejoscreate

El directorio /etc/logrotate.d La mayoría de aplicaciones que corren sobre GNU­Linux que utilizan el syslog colocaran archivos de configuración adicionales en esta carpeta. Es buena practica siempre revisar esta carpeta para que las aplicaciones que usted desea que usen el syslog tengan sus archivos de configuración en esta carpeta. aquí ejemplos de archivos que definen archivos en específicos para ser rotados para cada aplicación. 

42 Prácticas Módulo Administración

Page 43: Practica GNU Administracion Final

aquí un ejemplo de un archivo personalizado que rota los archivos de extensión .tgz que se encuentran en el directorio /data/backups. Los parámetros en este archivo tienen prioridad sobre los del archivo globa de configuración /etc/logrotate.conf. En este caso los archivos rotados no seran comprimidos, ellos permaneceran por 30 días solo si ellos no están vacíos, y se le otorgaran permisos de 600 para el usuaio root. /data/backups/*.tgz {   daily   rotate 30   nocompress   missingok   notifempty   create 0600 root root}

Nota: En sistemas basados en Debian, como es Ubuntu el script /etc/cron.daily/sysklogd lee el archivo /etc/syslog.conf y rota cualquier archivo que encuentra en este ya configurado. Esto elimina la necesidad de crear un archivo de configuración de rotación para los archivos comunes del sistema de log en el directorio /etc/logrotate.d. Como el script reside en el directorio /etc/cron.daily este automáticamente se ejecuta cada 24 horas. En sistema basados en RedHat, como en el caso de Fedora / CentOS este script daily es reemplazado por /etc/cron.daily/logrotate el cual no utiliza el contenido del archivo de configuración del syslog, este depende en su mayoría del contenido del directorio /etc/logrotate.d. 

Activar el logrotate Lo que se estableció en la sección del anterior del logrotate hasta que no ejecute el siguiente comando:  # logrotate ­fSi desea que logrotate solo recargue un archivo de configuración en especifico, y no todos, entonces ejecute ael comando logrotate con el archivo que desea cargar como argumento así: # logrotate ­f /etc/logrotate.d/syslog

Comprimir sus archivos Log En servidor muy ocupados como son los de sitios Web el tamaño de sus archivos log puede incrementarse fuera de control. Comprimirlos es logrado activando una opción el el archivo de configuración  logrotate.conf y agregándole una opción de compresión. ## File: /etc/logrotate.conf# Activate log compression / Activvar compresion de los logs

compressLos archivos logs entonces serán comprimidos en formato gzip utilizando este utilitario que debe estar previamente instalado, cada archivo tendrá la extensión  .gz. # ls /var/log/messages*/var/log/messages      /var/log/messages.1.gz /var/log/messages.2.gz

43 Prácticas Módulo Administración

Page 44: Practica GNU Administracion Final

/var/log/messages.3.gz /var/log/messages.4.gz /var/log/messages.5.gz/var/log/messages.6.gz /var/log/messages.7.gz

Para poder ver sus contenidos tendremos que usar el utilitario zcat desde la linea de comandos y desplegar sus contenidos en pantalla. Ejemplo. # zcat /var/log/messages.1.gz......

Práctica #8 “Intercambiando consolas con screen”El programa screen permite ejecutar múltiples terminales virtuales, cada una con su intérprete de comandos interactivo, en una única terminal física o ventana que emule un terminal. Incluso si utiliza consolas virtuales Linux o múltiples ventanas xterm, merece la pena experimentar con screen por sus amplias funcionalidades que incluye: 

• navegación por el histórico de comandos, 

• copiar y pegar, 

• registro de accesos al sistema, 

• entrada de caracteres especiales y 

• la capacidad de separar una sesión entera de screen del terminal para recuperarla posteriormente. 

1 Acceso remoto

Si frecuentemente se conecta a una máquina Linux desde un terminal remoto o usando el terminal VT100, screen le facilitará muchísimo las cosas. 

• Supongamos que estamos conectado a la red mediante una conexión telefónica ejecutando una sesión compleja de screen con editores y otros programas abiertos en diversas ventanas. 

• De repente necesita abandonar su terminal, pero no deseamos perder nuestro trabajo al colgar la línea. 

• Simplemente teclee ^A d para separar las sesión y desconéctese (o aún más rápido, teclee ^A DD para que screen se separe y se desconecte por sí misma) 

• Cuando se conecte nuevamente, escriba el comando screen ­r y screen mágicamente automáticamente recuperará todas las ventanas que había abierto. 

44 Prácticas Módulo Administración

Page 45: Practica GNU Administracion Final

2 Comandos de screen típicos

Una vez que arranca screen toda la entrada de datos que se hace a través del teclado se envía a la ventana actual excepto la combinación de teclas de comando, por defecto ^A. Todos los comandos de screen se ingresan escribiendo ̂ A seguido de una sola tecla [y eventualmente algunos parámetros]. Algunos comandos útiles:      ^A ?     mostrar ventana de ayuda (muestra las asociaciones de teclas)     ^A c     crear una nueva ventana y cambiar a ella     ^A n     ir a la siguiente ventana     ^A p     ir a la ventana anterior     ^A 0     ir a la ventana número 0     ^A w     mostrar la lista de ventanas     ^A a     enviar un Ctrl­A a la ventana actual como entrada del teclado     ^A h     grabar una copia de la ventana actual a un archivo      ^A H     comenzar/finalizar la grabación de ventana actual en un archivo     ^A ^X    bloquear la terminal (protegida con contraseña)     ^A d     separar una sesión del terminal     ^A DD    separar una sesión y salir

Éste es sólo una pequeña muestra de los comandos y características de screen. Si hay algo que desea que screen haga, ¡existe una gran posibilidad que pueda hacerlo!. screen(1) para más detalles. 

3 Tecla de retroceso y/o Ctrl­H en un sesión de screen

Si comprueba que la tecla de retroceso y/o Ctrl­H no funciona correctamente cuando ejecuta screen, edite el archivo /etc/screenrc, localice la línea      bindkey ­k kb stuff "\177"

y coméntela (es decir, agréguele el carácter "#" al principio). 

4 Programa para X equivalente a screenConsulte xmove. Véase xmove(1). 

45 Prácticas Módulo Administración