SuSE Linux Enterprise Server 10

Administración

Temario
1.- Instalación de SLES 10 2.- Sistemas de ficheros 3.- Seguridad y usuarios 4.- Configuración manual de la red 5.- Procesos y servicios 6.- Monitorización 7.- Inicio del sistema 8.- Manejo de software 9.- Copias de seguridad 10.- Sistema de impresión 11.- Acceso remoto

1

TEMA 5
Administración de procesos y de servicios

Objetivos

Ver y manejar procesos
Automatización de tareas

2

Procesos

 

Linux es un sistema multitarea que permite la ejecución de varios procesos “a la vez”, repartiendo el tiempo de procesador entre ellos. Un proceso es la instancia de un comando o programa en ejecución. Cada proceso tiene un identificador PID y un PPID (Proceso padre que creo el proceso). Se pueden visualizar con ps y top. Un proceso reside en memoria y tiene una prioridad.

Arbol de Procesos

Los procesos que corren en Linux están organizados en forma de árbol.
Init (1)

Demonio (2)

Demonio (8) Demonio (3)

Demonio (7)

Demonio (4)

Login de usuario (10)

Shell Bash (12) Procesos (13) Procesos (15) Procesos (16)

3

‘foreground’ y ‘background’

Los comandos en una shell pueden ser ejecutados de 2 formas :  foreground : no liberan la línea de comandos hasta que finalizan.  background : permiten manejar la linea de comandos nada más ejecutarlos (se ejecutan segundo plano).  Se consigue añadiendo un '&' tras el comando :  # comando & Con nohup desligamos el proceso del terminal desde donde es lanzado  # nohup comando &

Comandos bg, fg, jobs y <Ctrl><z>
 

 

jobs : Visualiza todos los trabajos que han sido lanzados por la shell y se ejecutan en background asignándoles un número. <Ctrl><z> : Para un proceso que se esté ejecutando en foreground. bg : Continua un programa parado en background. fg : Continua un programa parado en foreground o trae a foreground un programa que se estaba ejecutando en background .
NOTA: Los procesos no asignados a un terminal (ej.: los lanzados automáticamente en el momento del arranque) no pueden ser influenciados por estos comandos.
octopus2:~ # cat <Ctrl><Z> [1]+ Stopped octopus2:~ # jobs [1]+ Stopped octopus2:~ # bg 1 [1]+ cat & octopus2:~ # fg 1 cat cat cat

4

Comando ps (1/3)
  

ps : Process status. Visualiza los procesos de usuario y del sistema. Algunas opciones :
-a : Muestra los procesos de todos los usuarios. -u : Muestra el usuario.  -x : Muestra procesos sin un terminal asociado.  -l: Salida larga, proporciona más información.  -w: No trunca líneas.  f: Lista procesos en forma de árbol. pstree : Muestra los procesos en forma de árbol.
 

[octopus2:~ # ps -aux
USER root root root root root root root root root root root root bin PID 1 2 3 4 5 8 9 12 69 384 387 423 485 %CPU 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 %MEM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.2 0.5 0.0 0.1 VSZ RSS TTY 448 232 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 1356 608 ? 2276 1444 ? 0 0 ? 1304 488 ? STAT S SW SW SWN SW SW SW SW SW< S S SW S STARTTIME 08:38 0:05 08:38 0:00 08:38 0:00 08:38 0:00 08:38 0:00 08:38 0:00 08:38 0:00 08:38 0:00 08:38 0:00 08:39 0:00 08:39 0:00 08:39 0:00 08:39 0:00 COMMAND init [keventd] [kapmd] [ksoftirqd_CPU0] [kswapd] [kinoded] [mdrecoveryd] [kreiserfsd] [lvm-mpd] /sbin/syslogd -a /sbin/klogd -c 1 [khubd] /sbin/portmap

Comando ps (2/3)
octopus2:~ # ps -axl F UID 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 PID 1 2 3 4 5 9 12 69 384 387 423 PPID PRI 0 1 1 1 1 1 1 1 1 1 1 15 15 15 34 25 25 15 0 15 15 16 NI 0 0 0 19 0 0 0 -20 0 0 0 0 0 0 1356 2276 0 608 1444 0 VSZ 448 0 0 0 0 0 0 0 RSS 232 0 0 0 0 WCHAN schedu contex schedu ksofti md_thr schedu schedu syslog ? STAT S SW SW SWN SW SW S S SW TTY ? ? ? ? SW ? ? SW< ? ? ? TIME COMMAND 0:05 0:00 0:00 0:0 ? 0:00 0:00 ? 0:00 0:00 0:00 init [keventd] [kapmd] [ksoftirqd_CP 0:00 [kswapd] [mdrecoveryd] [kreiserfsd] 0:00 [lvm-mpd] /sbin/syslogd /sbin/klogd [khubd

kswapd

down_i

5

Comando ps (3/3)

Algunos de los campos de información dados por ps :  UID : Identificador de usuario.  PID: Identificador de proceso.  PPID: identificador del proceso padre.  TTY: Terminal asignado (? si no tiene).  PRI: Prioridad.  NI: (nice) número que influye en el ajuste dinámico de la prioridad.  SIZE: memoria utilizada por el proceso.  STAT: status del proceso. Algunas posibilidades :  R: Runnable. El proceso se está ejecutando.  S: Sleeping. Esperando por un evento externo.  D: Uninterruptable sleep. Similar a S, pero el proceso no puede ser terminado.  T: Stopped. El proceso está parado.  Z: Zombi. El proceso ha terminado pero no ha podido ser eliminado.  TIME: Tiempo de proceso utilizado.  COMMAND: nombre del comando.

Prioridades

 

La prioridad de un proceso es un número entre 0 (la más alta) y 39 (la más baja), esto determinará la cantidad de tiempo de CPU que recibirá el proceso. Con top ó ps axl podemos ver estos valores. Los procesos se ejecutan con una prioridad por defecto que depende del sistema (15 en general). La prioridad de un proceso es variada dinámicamente por el sistema basándose en diversos parámetros (ej.: cuánto tiempo de proceso ya han consumido, su status actual ...) que intentan garantizar la estabilidad del sistema. A través del los comandos nice y renice podemos “influir” en la prioridad con la que se ejecuta un proceso. El valor final, no obstante, será calculado por el sistema.

6

Comandos nice y renice
 nice : permite lanzar un comando o programa alterando la prioridad con la que se ejecutará. Ej: #nice --15 vi ---> -15 #nice -15 vi ---> +15  renice : Permite modificar la prioridad de un proceso que ya está siendo ejecutado : #renice -10 -p 12455 ---> -10  Sólo root puede dar valores negativos a nice/renice => aumentar la prioridad. 0 max. -20 max.

Prioridad

15 defecto 39 min.

nice/renice 0 defecto

19 min.

Comando top
 

Visualiza en tiempo real los procesos. Algunas ordenes que admite :  r (renice): Asigna un nuevo valor nice a un proceso.  k (kill) : Manda una señal de terminación a un proceso.  N,P,M : Ordena procesos de acuerdo PID, CPU utilizada o memoria (residente) consumida.  R: orden inverso.  F : Para ordenar por cualquier campo.  f : Para añadir más campos.  q: Salir.

7

Comando kill
 

 

A un programa en ejecución se le pueden mandar señales. La sintaxis es kill -señal PID , Ej :  #kill -SIGTERM 12484 kill por defecto manda una señal de finalización (SIGTERM 15). También podemos especificar el número correspondiente en lugar del nombre de la señal. kill –l muestra todas las posibles señales. Algunas señales:
     

SIGHUP (1): Rearranca el proceso. SIGINT (2): Interrupción desde teclado <Ctrl><c> SIGKILL (9): Finaliza el proceso inmediatamente. SIGTERM (15): Termina el proceso de forma controlada. SIGCONT (18): Continúa un proceso parado por STOP. STOP (19) : Para un proceso <Ctrl><z>

Comando killall

Mata un programa indicando el nombre del proceso. La sintaxis es killall proceso , Ej :  # killall xeyes

8

Utilidad gnome-system-monitor
 

Para monitorizar los procesos y la carga del sistema mediante una aplicación gráfica Ordenador -> Más aplicaciones -> gnomesystem-monitor

Daemons
 

Disk And Execution Monitor. Son procesos que se ejecutan en background=> Independientes del terminal (? en la columna TTY de un ps x) Normalmente se arrancan a la vez que el sistema haciendo disponibles diferentes servicios. Otras veces son arrancados por un Superdaemon como el inetd o xinetd. Algunos son reconocibles como tales por que su nombre termina en d (syslogd, httpd).

9

Control de daemons

Los demonios, normalmente, pueden ser controlados a través de su script correspondientes bajo : /etc/init.d/ Suelen soportar una serie de parámetros estándar a la hora de invocarlos : start, stop, restart, reload, status... A menudo sus ficheros de configuración residen bajo : /etc/ Ej.;
/etc/init.d/cron, /etc/crontab /etc/init.d/httpd, /etc/httpd/httpd.conf /etc/init.d/syslog/, /etc/syslog.conf

Podemos dividirlos en 2 tipos:

Signal-controlled daemons: Tienden a estar siempre activos(ej.:cupsd) Interval-controlled daemon: Activo a ciertos intervalos ( ej.:cron o atd)

Práctica

Ejercicio 5-1: Manejo de procesos Linux (pag 52 del manual de prácticas)

10

Objetivos

Ver y manejar procesos
Automatización de tareas

Automatización de tareas
 

cron : tareas periódicas. at : tareas puntuales.

11

cron

Los trabajos realizados periódicamente por el sistema son realizados por el servicio cron. Se ejecuta como un demonio y comprueba cada minuto si hay algo definido para ese momento. Existen 2 tipos de crons :
 

De usuario. De sistema.

Crons de usuario

Pueden ser creados por cualquier usuario, que no este deshabilitado para ello, con el comando crontab -e. Este guión se almacena en /var/spool/cron/tabs/ con permisos para root. Otras opciones para trabajar con el comando son :

crontab -l : lista el contenido del guión del usuario que lo ejecute ( añadiendo -u user, root puede ver el de cualquier usuario). crontab -r : borrar el guión existente del usuario que lo ejecute.

El guión tiene líneas con el siguiente formato :
minutos(0-59) horas(0-23) Día_del_mes(1-31) mes(1-12) día_sem(0-7)* comando_a_ejecutar* = 0 y 7 =domingo

12

Permisos

Se definen los usuarios que no pueden tener crons en :

/var/spool/cron/deny (existe por defecto)

El resto podrán tenerlos a no ser que exista un fichero :
 

/var/spool/cron/allow En cuyo caso sólo los usuarios que figuren aquí podrán hacerlo.

Si ninguno de estos ficheros existe, sólo root puede introducir trabajos.

Crons del sistema

Vienen con la distribución o son añadidos por root. Se pueden agregar con siguiente formato. 1. Introduciendo una línea en el fichero /etc/crontab con formato :
minutos(0-59) horas(0-23) Día_del_mes(1-31) mes(1-12) día_sem(0-7) user comando_a_ejecutar

2. Poniendo ficheros con el formato anterior bajo /etc/cron.d/ 3. Poniendo el script o comando directamente bajo alguno de los directorios : /etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly  Con lo cual no es necesario ningún guión con el formato crontab.  Si se apaga el sistema, al reiniciarlo se ejecutarán las tareas pendientes en estos 4 directorios.

13

/etc/crontab
SHELL=/bin/sh PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin MAILTO=root # # check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly # -*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1 59 * 14 0 29 0 44 0 * * * * * * * * 6 1 * * root root root root rm -f /var/spool/cron/lastrun/cron.hourly rm -f /var/spool/cron/lastrun/cron.daily rm -f /var/spool/cron/lastrun/cron.weekly rm -f /var/spool/cron/lastrun/cron.monthly

at

 

Permite lanzar trabajos a una hora determinada para que se ejecuten una sola vez. El servicio atd debe estar arrancado. Controla los permisos de ejecución con la pareja de ficheros.
 

/etc/at.deny (existe por defecto). /etc/at.allow

14

Introducción de trabajos con at

Los comandos son introducidos linea por línea ejecutando at hora # at 03:50 warning: commands will be executed using /bin/sh at> /tmp/trabajo1 at> /tmp/trabajo2 at> <EOT> job 1 at 2004-10-14 03:50 También : hora : now + N (minutes, houres, days, weeks). La ordenes a ejecutar pueden ser pasadas como un script por la entrada estándar. # at now + 1 minute < /var/tmp/hola warning: commands will be executed using /bin/sh job 2 at 2004-10-14 09:48 atq: muestra los trabajos definidos actualmente. atrm: permite borrar trabajo(por su número).

 

Práctica

Ejercicio 5-2: Programación de tareas con cron y at (pag 5-6 del manual de prácticas)

15

TEMA 6
Monitorización

Objetivos

Monitorizar un SLES 10

Utilización de los servicios de log  Monitorización del acceso al sistema

16

Monitorizar un SLES 10

Vamos a ver las herramientas necesarias para responder a preguntas como:
   

¿Arrancó el sistema normalmente? ¿Cuál es la versión del kernel? ¿Qué servicios se están ejecutando? ¿Cuál es la carga del sistema?

Información sobre el arranque

Los mensajes del sistema originados por el kernel y sus módulos durante el arranque pueden dar pistas que permitan resolver problemas. Estos mensajes se mantienen dentro de un buffer circular que puede ser visto con el comando dmesg Esta información junto a la salida los scripts ejecutados durante el arranque se almacenan en el fichero /var/log/boot.msg y pueden ser visualizados a través de YaST -> Miscelanea -> Ver el log de arranque

17

Información sobre el hardware: /proc/

      

El directorio /proc te permite, entre muchas otras cosas, ver información del hardware instalado. Este directorio esta almacenado en el espacio de memoria RAM reservado para el kernel. Algunos de los ficheros disponibles son : /proc/cpuinfo : información del procesador. /proc/interrupts : IRQ's asignadas. /proc/dma : canales DMA utilizados. /proc/bus/pci/devices : dispositivos PCI. /proc/scsi/scsi : dispositivos SCSI. /proc/bus/usb/devices : dispositivos USB.

Información sobre el hardware: comandos (1/3)

hwinfo : informacion detallada del hardware del sistema

hwinfo --short para obtener un resumen

hdparm : permite visualizar y modificar parámetros del disco duro.(no funciona con discos SCSI o SATA)

hdparm -I /dev/hda : Muestra información proporcionada por el disco duro (sólo ATA/IDE) hdparm /dev/hda :lista los el valor actual de los parámetros modificables fdisk -l /dev/hda : Muestra la tabla de particiones actual

fdisk : particionador de discos.

18

Información sobre el hardware: comandos (2/3)

iostat : Muestra estadísticas sobre le uso de la CPU y de las transferencias de entrada/salida con los dispositivos. El paquete sysstat debe estar instalado.
  

iostat -c: Sólo información de la CPU iostat -d: Sólo información de los dispositivos iostat N : Da información a intervalos de N segundos. El primer informe es la media desde el arranque del sistema
%user : Procesos ejecutados a nivel de usuario %nice : Procesos ejecutados a nivel de usuario con prioridad nice %system: Procesos a nivel de sistema (kernel) %iowait: Tiempo de espera de la CPU por operaciones de entrada/salida %steal: Espara debida a que el hypervisor está atendiendo otro procesador virtual %idle: Tiempo durante el cual la CPU está ociosa (tampoco esperando por E/S)

En cuanto a los informes de consumo de CPU:
  

 

Información sobre el hardware: comandos (3/3)

lspci , lsusb, lsscsi : muestra información sobre los buses pci, USB y SCSI. siga : System Information GAthering. Herramienta de SuSE que muestra información detallada del sistema. Por defecto invoca al navegador en texto w3m para mostrar el informe. sitar: System InformaTion At Runtime. Muestra información del sistema utilizando Perl y leyendo el directorio /proc. Por defecto muestra su salida en varios formatos bajo un directorio en /tmp

19

Información sobre procesos y sistema

uname : Nos muestra la versión del Kernel, el nombre de la máquina, el microprocesador para el que el kernel fue creado, la fecha del kernel, arquitectura, ...
# uname -a Linux mabsLinux 2.6.11.4-20a-default #1 Wed Mar 23 21:52:37 UTC 2005 i686 i686 i386 GNU/Linux

uptime : Da información sobre :
  

Tiempo que lleva arrancado Número de usuarios Carga del sistema : media de procesos esperando en la cola en un momento determinado (últimos 1, 5 y 15 minutos)
3 users,

# uptime 10:58AM funcionando 3 days 21:53, carga promedio: 0,01, 0,03, 0,00

Información sobre procesos y sistema

netstat : Nos permite ver el estado de las conexiones, rutas e interfaces en un host. Parámetros :
    

n : Suprime la traducción de nombres. t : Sólo muestra conexiones TCP. u : Sólo muestra conexiones UDP. p : Muestra el pid/nombre del programa que ha abierto la conexión. a : Muestra todos los sockes, también los que no tienen conexiones activas e: Amplia la información

 

r : Muestra la tabla de rutas. # netstat -natp
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address tcp tcp tcp tcp tcp ... 0 0 0 0 0 0 0.0.0.0:111 0 0.0.0.0:631 0 127.0.0.1:25 0 127.0.0.1:1054 0 :::22 Foreign Address 0.0.0.0:* 0.0.0.0:* 0.0.0.0:* 127.0.0.1:427 :::* State LISTEN LISTEN LISTEN TIME_WAIT LISTEN PID/Program name 4316/portmap 5091/cupsd 5223/master 4596/sshd

20

Información sobre procesos y sistema

xosview muestra el estado de varios parámetros del sistema (Utilización de CPU, carga media, utilización de memoria, utilización de swap, utilización de red, interrupciones) Para lanzarlo ejecutar en un terminal del entorno gráfico xosview

Monitorización del espacio en disco

El Monitor de Sistema Gnome proporciona a través de su pestaña Dispositivos información similar a la que nos proporciona el comando df y du Ordenador -> Más aplicaciones -> Sistema -> Monitor del sistema Gnome

21

Práctica

Ejercicio 6-1: Recolección de información sobre SLES 10 (pag 6-2 del manual de prácticas)

Objetivos

Monitorizar un SLES 10

Utilización de los servicios de log  Monitorización del acceso al sistema

22

syslog-ng
 

New Generation Syslog Es un daemon utilizado por muchos servicios para registrar eventos. De esta forma el loggin de todos ellos puede ser configurado de forma centralizada A diferecia de versiones pasadas de syslogd, syslog-ng permite filtrar mensajes en función del contenido de los mismos (no sólo por el servicio que lo generó y su prioridad) Sus ficheros de configuración principales son:  /etc/sysconfig/syslog  /etc/syslog-ng/syslog-ng.conf.in  /etc/syslog-ng/syslog-ng.conf

/etc/sysconfig/syslog

Contiene parámetros generales que pueden ser válidos tanto para syslog-ng como syslogd (caso de que se emplease) Entre otra cosas contiene:

Parámetros que se pasan durante el arranque al servicio Si se genera automáticamente el fichero /etc/syslog-ng/syslogng.conf a partir de /etc/syslogng/syslog-ng.conf.in

23

/etc/syslog-ng/syslog-ng.conf.in

Si está habilitado, SuSEconfig genera el fichero /etc/syslog-in/syslogin.conf a partir de el. Tiene la misma sintaxis que /etc/syslog-in/syslog-in.conf Si se introducen cambios manuales deberán ser siempre en este fichero para que no sean machacados. Después de introducir los cambios ejecutamos: SuSEconfig --module syslog-ng

/etc/syslog-ng/syslog-ng.conf: Facilities

Hace referencia al subsistema que genera el mensaje
auth authpriv cron daemon kern lpr mail news syslog user uucp local0-local7
Utilizado por ssh entre otros. Utilizado por PAM (Pluggable Authentication Modules). cron y at. demonios del sistema que no tienen su propia categoría. Todos los mensajes del kernel. demonio de impresión. Sistema de correo. Sistema de news. Mensajes internos del propio syslog. Mensajes a nivel de usuario. Utilizado por login por ejemplo. Sistema UUCP. Categorías disponibles para el usuario.

24

/etc/syslog-ng/syslog-ng.conf: Priorities

La prioridad da detalles sobre la urgencia del mensaje
emerg alert crit err warning notice info debug
El sistema no es usable (es demasiado tarde). El administrador del sistema es requerido inmediatamente. Condición crítica para el program que lo muestra. Error. Mensajes que muestran desviaciones sobre el comportamiento normal. Mensajes que describen estados normales del sistema que deben ser tenidos en cuenta. Mensajes puramente informativos. genera la mayor cantidad de log. Debería ser utilizada con cuidado.

/etc/syslog-ng/syslog-ng.conf.in : fileter, destination, log
... filter f_local4debug { level(debug) and facility(local4); }; filter f_local4info { level(info) and facility(local4); }; filter f_local4 {facility(local4) and match (“ERROR:”); }; destination local4debug { file("/var/log/local4.debug"); }; destination local4info { file("/var/log/local4.info"); }; destination local4 { file("/var/log/local4"); }; log { source(src); filter(f_local4debug);destination (local4debug); }; log { source(src); filter(f_local4info);destination (local4info); }; log { source(src); filter(f_local4);destination (local4); }; ...

25

/etc/syslog-ng/syslog-ng.conf.in : src
fsource src { # # include internal syslog-ng messages # note: the internal() soure is required! # internal(); # the following line will be replaced by the # socket list generated by SuSEconfig using # variables from /etc/sysconfig/syslog: # unix-dgram("/dev/log"); # # uncomment to process log messages from network: # #udp(ip("0.0.0.0") port(514)); };

Ficheros de log importantes

(1/2)

/var/log/messages

Es el log principal del sistema y donde se debería acudir a ver cuando algo no funcione correctamente (tail -f /var/log/messages) Log de AppArmor Directorio que almacena los logs del sistema de impresión

/var/log/audit/audit.log

/var/log/cups/

/var/log/YaST2/
Log para YaST /var/log/boot.msg
 

Mensajes producidos durante el arranque

26

Ficheros de log importantes

(2/2)

/var/log/mail
 

Mensajes producidos por el servicios de correo Debido a la cantidad de mensajes que se pueden originar estos se suelen dividir en los siguiente ficheros: /var/log/mail.err, /var/log/mail.inf ,
/var/log/mail.warn

/var/log/wtmp
Fichero binario que contiene información de quien se ha logeado en el sistema, desde donde y durante cuanto tiempo. Su información puede ser consultada con el comando last /var/log/lastlog
 

Fichero binario que contiene información sobre cuando fue la última vez que se logearon los usuarios del sistema Puede ser consultado con lastlog

Rotación de logs
 

Es importante asegurar que los logs no alcanzan tamaños mayores de lo que podemos almacenar. Por esta razón el tamaño y edad de cada log puede ser monitorizado automáticamente por el programa /usr/sbin/logrotate. logrotate es ejecutado diariamente por el cron (/etc/cron.daily/logrotate). El programa comprueba los ficheros configurados en /etc/logrotate.conf. Cada fichero puede tener aquí sus propios parámetros que indiquen, por ejemplo :  Que el log debe ser comprimido o borrado a intervalos regulares o cuando determinados tamaños son alcanzados.  Cuantas versiones de los ficheros comprimidos se deben conservar durante cuanto tiempo.

27

/etc/logrotate.conf : Parámetros generales
# Ejemplo de fichero. Mantiene parámetros globales o por defecto así como # definiciones exclusivas para alguna ficheros # see "man logrotate" for details # Los logs son rotados o reemplazados una vez por semana weekly # Se conservan 4 versiones (=>4 semanas) de los ficheros viejos rotate 4 # En ese caso el fichero antiguo es salvado con otro nombre creándose uno nuevo vacío create # La opción de compresión está desactivada #compress # Descomentar para comprimir con bzip2 #compresscmd /usr/bin/bzip2 #uncompresscmd /usr/bin/bunzip2 # Los paquetes RPM pueden dejar aquí info. especifica de sobre sus necesidades include /etc/logrotate.d # Opción para rotación log para last or wtmp #/var/log/wtmp { # monthly # create 0664 root utmp # rotate 1 #} # Otros log específicos de sistema se podrían incluir aquí

/etc/logrotate.d/syslog
# Ejemplo de fichero con parámetros específicos
/var/log/mail /var/log/warn /var/log/messages /var/log/allmessages /var/log/localmessages /var/log/firewall { compress dateext # Para renombrar el fichero utiliza una fecha en lugar de un simple número maxage 365 # log log rotados se borran en 365 días rotate 99 # 99 versiones missingok size +4096k create 644 root root # Permisos para los nuevos ficheros sharedscripts postrotate # ejecución de script post rotación /etc/init.d/syslog reload endscript } # Si el fichero no existe no da error notifempty # si está vacío no se rota

}

28

Práctica

Ejercicio 6-2: Manejo de los logs del sistema (pag 6-4 del manual de prácticas)

Objetivos

Monitorizar un SLES 10

Utilización de los servicios de log  Monitorización del acceso al sistema

29

who


Los siguientes comandos nos ayudan a detectar actividades sospechosas en nuestro sistema who
Muestra que usuarios hay logeados actualmente en el sistema, indicando su hora de conexión y desde donde lo hacen

 

-H: añade cabeceras
-r: da el nivel de ejecución actual -a: Muestra toda la información
LÍNEA :0 pts/0 pts/1 pts/2 TIEMPO COMENTARIO

# who -H NOMBRE root root root geeko 2007-04-19 07:51 2007-04-19 08:12 (192.168.3.139) 2007-04-19 08:49 (192.168.3.139) 2007-04-19 10:09 (dhcp15.afina.es)

w

Muestra usuarios actualmente logeados y carga del sistema
# w 10:21:57 up USER root root root geeko
  

2:32,

4 users, LOGIN@ 07:51 08:12 08:49 10:09

load average: 0,00, 0,00, 0,00 JCPU 1:34 0.65s 0.48s 0.23s PCPU WHAT 2.44s /opt/gnome/bin/gnome-session 0.65s -bash 0.03s w 0.23s -bash

TTY :0 pts/0 pts/1 pts/2

IDLE ?xdm? 1:17m 0.00s 12:19

LOGIN@: Tiempo que lleva durando el login IDLE: Tiempo que la sesión lleva sin tener actividad JCPU: Tiempo que han utilizado todos los procesos asignados al terminal (no incluye trabajos en background ya pasados) PCPU:Tiempo utilizado por el proceso nombra en el campo WHAT

30

finger

Muestra información sobre los usuarios locales: Login, nombre completo, terminal, tiempo sin actividad, tiempo logeado, desde donde -l: Listado largo
# finger Login geeko root root root Name geeko root root root Tty pts/2 *:0 pts/0 pts/1 Idle 29 1:34 Login Time Thu 10:09 Thu 07:51 Thu 08:12 Thu 08:49 192.168.3.139 192.168.3.139 Where dhcp15.afina.es

last

Muestra la información en /var/log/wtmp con todos los logins realizados en el sistema así como los reinicios del mismo Se puede especificar un nombre de usuario o terminal para restringir la información

# last
pts/0 :0 system boot pts/0 :0 192.168.3.139 192.168.3.139 Thu Apr 19 08:12 Thu Apr 19 07:51 2.6.16.21-0.8-de Thu Apr 19 05:59 Wed Apr 18 05:06 - 05:06 Wed Apr 18 05:02 - down still logged in still logged in (04:50) (00:00) (10:27)

root root reboot root geeko ...

31

lastlog

Muestra la información en /var/log/lastlog con el último login realizado por cada usuario del sistema -u login: Para limitar la información a un sólo usuario
# lastlog Nombre at bin ... root ... geeko pts/1 pts/2 Puerto Último **Nunca ha entrado** **Nunca ha entrado** jue abr 19 08:49:58 +0200 2007 jue abr 19 10:09:38 +0200 2007

faillog

Muestra la información en /var/log/faillog con los logins fallidos realizado por cada usuario (cuando se produce un éxito el contador se reinicia) -u login: Para limitar la información a un sólo usuario -m N : Establece un número de N intentos fallidos antes de bloquear la cuenta Para su funcionamiento debemos configurar el uso del módulo pam_tally.so en cada fichero de configuración PAM de las aplicaciones que lo vayan a utilzar (bajo /etc/pam.d/): login, xdm, gdm ...

 

32

TEMA 7
Inicio del sistema

Objetivos

Proceso de arranque.

GRUB.  Manejo de niveles de ejecución

33

La BIOS y el MBR
1. El procesador busca al final de la memoria del sistema, el programa contenido en la BIOS y lo ejecuta. La BIOS no solo controla el primer paso del proceso de arranque sino que también proporciona el interfaz de más bajo nivel con los periféricos. Por esta razón reside en una memoria de sólo lectura siempre disponible. 2. La BIOS procede a comprobar el sistema, buscando entre los
dispositivos uno con un sistema de arranque. Una vez encontrado, carga cualquier programa que se encuentre en el primer sector del disco (Master Boot Record (MBR)) en memoria. El MBR tiene sólo 512 bytes y contiene, junto con la tabla de particiones, las instrucciones de código máquina necesarias para seguir el arranque. La BIOS, entonces, cede el control a este programa, que representa el primer paso de GRUB o LILO (gestores de arranque).

El gestor de arranque
3. El paso 1 o MBR localiza el paso 2 del gestor de arranque (GRUB o LILO) y carga su primera parte en memoria. 4. Una vez cargado el paso 2, éste muestra un menú gráfico con las opciones disponibles por el usuario. 5. Tras seleccionar la opción (ejecutada por defecto o por el usuario), se localiza a través de ésta el kernel ( normalmente bajo el directorio /boot).

34

Initrd y kernel
6. (Opcional) Si el kernel necesita cargar módulos
adicionales para poder acceder a hardware involucrado en el arranque , se lanza la generación de un disco imagen en memoria RAM, denominado initrd (formato initramfs). 7. El filesystem root es montado y el gestor de arranque pasa el control al kernel, para que continue el proceso de arranque. En la llamada al kernel se le pueden pasar parámetros que determinarán su comportamiento y el de otros programas invocados por él (ej.: init ).

init
8. Con el acceso al filesystem root habilitado, el
kernel ejecuta un script llamado init dentro del filesystem initrd. Este script se encarga de localizar y lanzar, desde la partición root recien montada, el primer programa (PID=1) /sbin/init. /sbin/init controlará el resto del proceso de arranque y, cuando ocurra, la parada del sistema.

35

Diagrama de arranque
Se ejecuta... Se carga en memoria Se cargan los módulos

Initrd
(initramfs)

Initrd
(initramfs)

init
(antes linuxrc)

modules

BIOS

Boot Manager (GRUB)
Si existe initrd, continua la carga por el.

Se descarga de memoria

Initrd
(initramfs)

kernel
Se carga en memoria SI no existe initrd, los drivers para montar el sistema de ficheros raiz estan dentro del kernel.

/sbin/init

Generación de initrd

El initrd es creado con los módulos necesarios para acceder al file system. Estos módulos se determinan por la directiva INITRD_MODULES dentro del fichero /etc/sysconfig/kernel Si fuese necesario el comando mkinitrd permite generar un nuevo initrd

36

proceso init

El kernel después de cargarse ejecuta el programa ‘init’ y su PID será el 1.
USER root PID TTY 1 ? STAT S TIME COMMAND 0:02 init [5]

   

Todos los procesos son hijos, nietos ... de init. Controla también la parada del sistema. La señal 9 (SIGKILL) no tiene efecto sobre él. El fichero de configuración del proceso init es : /etc/inittab init alcanzará el nivel de ejecución indicado en este fichero, arrancando todos los procesos y servicios que sea necesario para ello.

Objetivos

Proceso de arranque.

GRUB.  Manejo de niveles de ejecución

37

GRUB
  

GRand Unified Bootloader. Es el gestor de inicio más popular hoy en día. Tiene características más avanzadas que LILO :  Interfaz de comandos interactivo (no sólo un comando con argumentos).  Puede acceder directamente al disco duro, del cual carga su menú de un fichero de texto fácilmente editable. Su fichero de configuración es :/etc/grub.conf

/boot/grub/menu.lst
gfxmenu (hd0,0)/boot/message # Gráfico splash inicial color white/blue black/light-gray # Colores para menú de selección default 0 #Entrada que se utilizará por defecto timeout 8 #Tiempo de espera antes de utilizar la entrada por defecto title linux #Título de la entrada ( lo que se ve en el menú) kernel (hd0,0)/boot/vmlinuz root=/dev/hda1 hdd=ide-scsi vga=788 # Localización del kernel más algunos parámetros initrd (hd0,0)/boot/initrd # Localización del programa iniciador del Ram Disk title windows root (hd1,0) makeactive chainloader +1 title floppy root (fd0) chainloader +1 title failsafe kernel (hd0,0)/boot/vmlinuz.shipped root=/dev/hda1 ide=nodma apm=off acpi=off vga=normal nosmp disableapic maxcpus=0 3 initrd (hd0,0)/boot/initrd.shipped

38

Nomenclatura GRUB de discos y particiones
 

GRUB designa los discos duros y particiones de distinta manera que el sistema. (hdD,P)  D= Disco, a partir de 0 (arranque), según se vayan detectando.  P= Partición, a partir de 0. (0...3)=primarias o extendida, (4=>) lógicas.
Ej.:

    

(hd 0) : primer disco del sistema (arranque)=> hda o sda, no importa. (hd1) : Segundo disco detectado. (hd0,0):Primera partición del primer disco. (hd3,1):Segunda partición del cuarto disco. (hd0,4):Primera partición lógica del primer disco. (hd1,6): tercera partición lógica del segundo disco.

La shell de GRUB

Cuando el sistema no se puede iniciar debido a un error en el gestor de arranque, podemos usar la shell que incorpora GRUB para intentar arrancarlo manualmente. Podemos acceder a esta shell:

Durante la ejecución del sistema
# grub version 0.92 (640K lower / 3072K upper memory) For the first word, TAB Anywhere else TAB lists the

GRUB

[ Minimal BASH-like line editing is supported. lists possible command completions. possible completions of a device/filename. ] grub> find /boot/vmlinuz (hd0,1)

Durante el arranque  En el menú gráfico de arranque pulsar <esc> y pulsar <c>

39

Configurción de GRUB a través de YaST (1/2)

YaST-> Sistema-> Configuración del cargador de arranque

Configurción de GRUB a través de YaST (2/2)

40

Arranque del sistema directamente desde una shell Es posible realizar operaciones de rescate pasándole al gestor
 

de arranque un mensaje que varíe el primer programa que el kernel cargará Ej.: init=/bin/bash en el campo de comandos del gestor de arranque GRUB arranca un sistema mínimo con una shell bash El sistema de ficheros / se encontrará montado en sólo lectura, para solucionarlo podemos ejecutar: mount -o remount,rw,sync / y poder realizar ya sin problema operaciones como el cambio de la password root Esta opción es MUY peligrosa y se debe bloquear mediante una contraseña en acceso a los comando GRUB Para ello debemos editar el fichero /boot/grub/menu.lst y añadir al principio la línea :
password micontraseña # gfxmenu (hd,0)/message /* Esta línea se debe comentar */

Para acceder a las opciones avanzadas deberemos pulsar la tecla “p”.

Protección de GRUB con contraseña cifrada
Si deseamos utilizar una contraseña cifrada en el fichero /boot/grub/menu.lst debemos realizar lo siguiente :
mabsServer # grub grub> md5crypt Password: ****** Encrypted: $1$Gr/Oq0$NwuQYNJYNyFbtgSHDsPWf0 grub>

Podemos tambien utilizar el comando grub-md5-crypt. Y copiamos el resultado al fichero /boot/grub/menu.lst
password --md5 $1$Gr/Oq0$NwuQYNJYNyFbtgSHDsPWf0

Para proteger con contraseña las opciones disponibles en el menú, debemos usar el comando lock.
title SUSE LINUX 9.2 lock kernel (hd0,5)/boot/vmlinuz root=/dev/hda6 splash=silent resume=/dev/hda5 initrd (hd0,5)/boot/initrd

41

Práctica

Ejercicio 7-1: Manejo del gestor de arranque (pag 7-2 del manual de prácticas)

Objetivos

Proceso de arranque.

GRUB.  Manejo de niveles de ejecución

42

Runlevels (Niveles de ejecución)

Un sistema Linux puede encontrase en uno de los varios estados o niveles de ejecución conocidos como runlevels. Cada nivel puede implicar el arranque o parada de una serie de servicios. Existen niveles que implican un estado transitorio hacia el apagado o rearranque del sistema. Para saber en qué nivel nos encontramos actualmente podemos ejecutar : #runlevel N 5 Para cambiar de runlevel se utiliza el comando init, como root : #init 2

Runlevels
Runlevel

Uso Apaga el sistema.
Modo monousuario, utilizado para resolver problemas y mantenimiento

0 1 2 3 4 5 6

Multiusuario sin servicios de red. Multiusuario con servicios de red. No definido.
Multiusuario real con red y login gráfico.

Reinicio del sistema.

43

/etc/inittab

Todas las entradas tienen este formato general :
id:runlevels:action:process En función del campo acción puede variar.

Ej.:
id:5:initdefault: #especifica el runlevel por defecto si::bootwait:/etc/init.d/boot # El proceso se inicia durante el arranque del sistema y se espera a que termine ca::ctrlaltdel:/sbin/shutdown -r -t 4 now #qué hacer cuando se utiliza la combinación de teclas <ctr><alt><supr> l5:5:wait:/etc/init.d/rc 5 #especifica que tiene que ejecutar en el runlevel 5 3:2345:respawn:/sbin/mingetty tty3 #El terminal 3 está activo en el runlevel 2,3,4 y 5

Scripts de Inicio de servicios
 

Casi todos los scripts de inicialización de servicios se alojan en /etc/init.d/ Los scripts soportan varios parámetros estándar en su invocación: start, stop, restart ...
Ej.:
/etc/init.d # ./network restart Shutting down network interfaces: eth0 eth0 device: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78) configuration: eth-id-00:02:1b:f3:34:55 . . . . . . . . . . . . done . done.

Shutting down service network Setting up network interfaces: lo lo eth0 eth0 eth0

Hint: you may set mandatory devices in /etc/sysconfig/network/config

IP address: 127.0.0.1/8 done device: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78) configuration: eth-id-00:02:1b:f3:34:55 IP address: 192.168.1.145/24 . . . . . . . . . . . . . done . done.

Setting up service network

44

Llamada a los scripts de inicio durante el arranque del sistema

La llamada a estos scripts durante el arranque se produce desde enlaces simbólicos ubicados en /etc/init.d/rcX.d/ siendo X el runlevel. Los enlaces empiezan por una S (Start) o una K (Kill), según se deban arrancar o parar en dicho nivel, más un número del 00 a 99 que indica el orden de ejecución. Ej.:

octopus2:/etc/init.d/rc3.d # ls -l *network lrwxrwxrwx 1 root root 10 Apr 17 13:22 K18network -> ../network lrwxrwxrwx 1 root root 10 Apr 17 13:22 S05network -> ../network

Para que no arranque/pare un servicio en un nivel determinado podemos borrar el enlace, renombrarlo.

Administración de scripts de arranque (1/2)
 

Los comandos insserv o chkconfig permiten administrar la inserción de servicios en el sistema de arranque de forma más cómoda. Ej.: # insserv nfsserver (añade servicio)
# insserv -r nfsserver (quita servicio) Para crear nuestro propio script administrable por insserv podemos utilizar la plantilla /etc/init.d/skeleton. El bloque de inicio contiene directivas que determinan los niveles en los que el script se insertará, posibles dependencias etc. (INIT INFO)
# /etc/init.d/network ### BEGIN INIT INFO # Provides: network # Required-Start: $local_fs # Should-Start: coldplug pcmcia # Required-Stop: # Should-Stop: # Default-Start: # Default-Stop: # Description: ### END INIT INFO Configure the network interfaces and set up routing 2 3 5

45

Administración de scripts de arranque (2/2)

chkconfig, además de ofrecer listados de los servicios y su estado por defecto en cada nivel, permite funcionalidades similiares a insserv Ej.:
(estado por defecto en el nivel actual) (listado de los estados por defecto en cada nivel) 0:off 1:off 2:on 3:on 4:off 5:on 6:off (dedhabilitar servicio en todos los niveles) 0:off 1:off 2:off 3:off 4:off 5:off 6:off

# chkconfig cron cron on # chkconfig cron -l cron # chkconfig cron off # chkconfig cron -l cron # chkconfig cron on # chkconfig cron -l cron # chkconfig -l Makefile SuSEfirewall2_init SuSEfirewall2_setup aaeventd acpid ...

(dedhabilitar servicio en todos los niveles) 0:off 1:off 2:on 3:on 4:off 5:on 6:off

(listado del estado por defecto 0:off 1:off 2:off 0:off 1:off 2:off 0:off 1:off 2:off 0:off 1:off 2:off 0:off 1:off 2:on

de cada servicio en cada nivel) 3:off 4:off 5:off 6:off 3:off 4:off 5:off 6:off 3:off 4:off 5:off 6:off 3:off 4:off 5:off 6:off 3:on 4:off 5:on 6:off

Administración de scripts de arranque por YaST (1/2)

Con yast-> Sistema -> Editor de niveles de ejecución o simplemente

yast runlevel.

46

Administración de scripts de arranque por YaST (1/2)

Modo experto

Cambio de nivel de ejecución durante el arranque del sistema

Se puede introducir el número del nivel de ejecución al cual se desea ir dentro del campo para comandos que ofrece GRUB O editando la línea (modo carácter ) y poniendo el nivel al final de la misma  Ej.:
/boot/vmlinuz root=/dev/hda2 vga=0x314 resume=/dev/hda1 splash=silent showopts 1

47

Cambio de nivel de ejecución en la línea de comando

 

El comando init permite al usuario root pasar a un nivel determinado durante la ejecución del sistema Ej.: init 3, init 0, init 1 halt y poweroff son equivalentes a init 0 y reboot a init 6

Parada del sistema: shutdown
 

  

Apaga o rearranca el sistema a la hora especificada o tras el tiempo especificado Informa a los demás usuarios de lo que va a suceder. Podemos personalizar el mensaje Impide el login de nuevos usuarios La orden puede ser revocada Ej.:
#shutdown -r now (rebota el sistema inmediatamente) #shutdown -r +5 El sistema se apagará en 5 minutos (rebota el sistema en 5 minutos mandando el mensaje adjunto a los usuarios) #shutdown -h 23:59 (Para el sistema (halt) a la hora indicada) #shutdown -c (revoca la programación de shutdown actual)

48

Cambio del nivel de ejecución

Cuando el nivel de ejecución es cambiado mediante init se desencadenan varias acciones (ejemplo de nivel 3 a 5)
init consulta en su inittab que scripts se debe ejecutar (/etc/init.d/rc 5)  Se ejecutan todos los scripts de parada (K*) del nivel 3 que no tengan un script correspondiente de arranque (S*) en el nivel 5  Se ejecutan todos los scripts de arranque del nivel 5 que no tuviesen ya otro de arranque en el nivel 3 Para que los cambios en /etc/inittab tengan lugar sin cambiar el nivel de ejecución podemos ejecutar init q

Práctica

Ejercicio 7-2: Manejo de los niveles de ejecución (pag 7-4 del manual de prácticas)

49

TEMA 8
Manejo de software

Objetivos


Manejo de paquetes RPM
Verificación y actualización de librerias

50

Distribución de Software

El software se puede distribuir de dos formas
 

Código fuente (hay que compilarlo) Binarios (ya está compilado)

Para que sea más fácil su distribución se suele empaquetar en un único fichero.
  

En formato tar (.tar) En formato RedHat (.rpm) En formato Debian (.deb)

Red Hat Package Manager (RPM)

La mayoría del software es distribuido actualmente ya compilado en forma de paquetes. Los manejadores de paquetes controlan las versiones instaladas y dependencias con otros paquetes El manejador de paquetes más popular actualmente es RPM (excepto en Slackware y Debian http://www.rpmfind.net/linux/RPM /

51

¿ Qué hay dentro de un paquete RPM ?

Dentro de un paquete encontraremos:
      

Los ficheros de la aplicación comprimidos Nombre y versión del paquete Fecha de generación Descripción del mismo Información sobre quién lo construyó Código de integridad en MD5 Requerimientos de otros paquetes (dependencias)

Componentes de RPM

Manejardor de paquetes: Utilidad que permite la instalación y desinstalación de los paquetes. Base de datos: Contiene una lista con toda la información de los paquetes instalados Paquetes: Es el software a instalar que puede ser en código fuente o binario Etiqueta o nombre del paquete

52

Nomenclatura de un paquete RPM
 

Ej: ethereal-0.8.9-1.i386.rpm Paquete-versión-patch.arquitectura.rpm  Paquete: Nombre de la aplicación  versión  Patch: Nivel de parche  Arquitectura: La plataforma para la que se ha realizado la compilación. Ej:
    

i386(Intel) i586Pentium(Intel) i686 Pentium Pro (Intel) Sparc (Sun) Alpha (Digital/Compaq

La base de datos de RPM
 

La información sobre cada paquete instalado es conservada en una base de datos bajo /var/lib/rpm/ Prácticamente cada vez que rpm es utilizado esta base de datos es accedida para cosas como:
  

Verificar paquetes ya instalados Comprobar ficheros que ya existan Verificar dependencias

Teniendo un directorio /usr de 1 G aproximadamente la base de datos pude ocupar unos 30 MB. Si esta fuese mayor se puede, tras un backup de la misma, ejecutar rpm --rebuilddb Bajo /etc/cron.daily existe el script suse.debackup-rpmdb que se encarga de ver diariamente si ha habido cambios en la base de datos y hacer un backup bajo /var/adm/backup/rpmdb/

53

Ficheros de configuración de RPM

El fichero de configuración global de RPM es /usr/lib/rpm/rpmrc. Dado que este fichero podría se sustituido por otro nuevo si actualizamos el manejador de paquetes propiamente dicho es mejor que apliquemos los cambios que necesitemos sobre el fichero /etc/rpmrc o particularmente para cada usuario en ~/.rpmrc

El comando rpm

Es utilizado para operaciones como:
      

Instalar paquetes Actualizar paquetes Desinstalar paquetes Pedir información a la base de datos Verificar un paquete Verificar un fichero instalado Construir un paquete binario a partir del código fuente

54

Verificación de la autenticidad de un paquete

Todos los paquetes RPM distribuidos por SuSE son firmados con la siguiente clave GnuPG:
sles3072:~ # gpg --list-keys -v --fingerprint "build@suse.de" gpg: usando PGP como modelo de confianza pub 1024D/9C800ACA 2000-10-19 [caduca: 2008-06-21] Huella de clave = 79C1 79B2 E1C8 20C1 890F uid sub 9994 A84E DAE8 9C80 0ACA

SuSE Package Signing Key <build@suse.de> 2048g/8495160C 2000-10-19 [caduca: 2008-06-21]

Esta clave se encuentra almacenada bajo /root/.gnupg/ y /usr/lib/gnupg/ Para realizar la comprobación de un paquete: rpm --checksig nombre_paquete.rpm Ej.:
# rpm --checksig wget-1.10.2-15.4.i586.rpm wget-1.10.2-15.4.i586.rpm: sha1 md5 gpg OK

Instalación de Paquetes RPM

Para instalar un programa podemos hacer por ej:

rpm -ivh paquete.rpm
 

-i: instalar -v: Muestra el nombre del paquete que está siendo instalado -h: Muestra marcas “#” según evoluciona la instalación del paquete

Se pueden utilizar ‘*’ en instalaciones y actualizaciones pero no en eliminaciones

rpm -ivh *.rpm
rpm -ivh http://rpmfind.net/redhat/libpcap-0.4.i386.rpm

Se pueden instalar paquetes a partir de una url

Podemos tener errores de dependencias que impedirán la instalación:
rpm -ivh ethereal-0.8.9-1.i386.rpm error: failed dependencies: libpcap >= 0.4 is needed by ethereal-0.8.9-1

55

Opciones avanzadas de instalación

Si se necesita instalar un paquete a pesar de los errores que pueda dar rpm, tenemos algunas opciones que ignoran estos mensajes:  --force: fuerza la sobreescritura de los ficheros del paquete existente  --nodeps: No comprueba las dependencias, es útil si se han instalado por otros medios (como compilando código fuente)  --replacefiles: Sobreescribe ficheros que pertenecen a otros paquetes ej:

rpm -ivh --nodeps ethereal-0.8.9-1.i386.rpm

Actualización de Paquetes RPM

La opción -U actualiza de la siguiente forma :
 

 

Guarda los ficheros config modificados con extensión .rpmsave Puede generar posibles nuevos ficheros de configuración con extensión .rpmnew Elimina el paquete antiguo Instala el nuevo paquete

Si el paquete no existe, -U procede igual que -i Con la opción -F actualiza sólo si existe una versión más antigua de ese paquete.

56

Borrado de paquetes RPM

Para borrar un paquete se utiliza la opción -e ó -uninstall y el nombre del paquete, no el del fichero (sin extensión ni versión).

rpm -e libpcap

Si otros paquetes dependen de este rpm da un mensaje y no procede Cuando un paquete es borrado se guardan los archivos de configuración modificados. Es útil la opción ‘--nodeps’ cuando se tiene un problema de dependencias que se desea ignorar La opción '--test' simula el procedimiento, retornando los posibles problemas que puedan surgir

Información sobre paquetes

Para obtener información sobre un paquete:  -qi : Si ya instalado (sólo nombre paquete):
# rpm -qi ethereal Name : ethereal Relocations: (not relocateable) Version : 0.9.6 Vendor: SuSE Linux AG, Nuernberg, Germany Release : 59 Build Date: Mon Oct 14 23:03:13 2002 Install date: Thu May 6 18:00:28 2004 Build Host: ting.suse.de Group : Productivity/Networking/Diagnostic Source RPM: ethereal0.9.6-59.src.rpm Size : 12033439 License: GPL Packager : http://www.suse.de/feedback URL : http://ethereal.zing.org/ Summary : A graphical network traffic analyser Description : ethereal is a network traffic analyzer for Unix and Unix-like operating systems. ...

-qip : Si no está instalado todavía (nombre del fichero):

# rpm -qip ethereal-0.10.3-10.i586.patch.rpm

57

Información sobre paquetes

-q : nos permite consultar la BBDD de paquetes instalados.
# rpm -q glibc glibc-2.2.5-213 (sólo nombre del paquete)

-qa: listar todos los paquetes instalados
# rpm -qa filesystem-2002.9.2-56 gdb-5.3-57 aide-0.9-32 ... # rpm -qf /bin/cp fileutils-4.1.11-107

-qf: Nos dice a que paquete pertenece un fichero -qR: lista dependencias con otros paquetes Para listar los ficheros que contiene un paquete
-ql : Si ya está instalado :
#rpm -ql nombre_paquete

-qlp :si no está instalado :
#rpm -qlp nombre_paquet-versión.rpm

Verificación de ficheros y paquetes (1/2)

-V paquete : Verifica todos los ficheros de un paquete ya instalado -Va : Verifica todos los ficheros de todos los paquetes instalados -Vp paquete.rpm : Verifica todos los ficheros de un paquete instalado con respecto a un paquete sin instalar -Vf fichero : Verifica un fichero con respecto del original del paquete El formato de la salida es una cadena de 8 caracteres. Cada uno denota el resultado de un tipo de comparación:

. : El test es satisfactorio
5 : Diferente checksum MD5 S : Diferente tamaño de fichero L : El atributo de link simbólico ha cambiado T : La fecha de última modificación del fichero ha cambiado D : El major o minor number del dispositivo ha cambiado U : El dueño del fichero ha cambiado G : El grupo del fichero ha cambiado M : Los permisos del fichero han cambiado ? : Resultado inesperado

58

Verificación de ficheros y paquetes (2/2)
 

Un noveno carácter 'c' puede indicar si el fichero es de configuración Las discrepancias preocupantes son, normalmente, las de los ficheros ejecutables Ejemplo :
# rpm -V apache S.5....T c /etc/httpd/httpd.conf S.5....T c /etc/httpd/suse_addmodule.conf S.5....T c /etc/httpd/suse_define.conf S.5....T c /etc/httpd/suse_include.conf S.5....T c /etc/httpd/suse_loadmodule.conf S.5....T c /etc/httpd/suse_text.conf missing missing .....U.. .....U.. missing /var/log/httpd/ssl_engine_log /var/log/httpd/ssl_request_log /var/log/httpd/ssl_scache.dir /var/log/httpd/ssl_scache.pag /var/run/httpd.pid

Práctica

Ejercicio 8-1: Manejo de software con RPM (pag 8-2 del manual de prácticas)

59

Objetivos


Manejo de paquetes RPM
Verificación y actualización de librerias

Verificación de librerías

Además de comprobar las dependencias de paquetes podría ser necesario antes de instalar un software comprobar qué librerías dinámicas utiliza. Esto debería ser resuelto por el programa de instalación pero a veces nos vemos obligados a hacerlo nosotros Por ejemplo si una aplicación que estamos intentando arrancar falla podemos arrancarla desde la ventana de un terminal y ofrece algún mensaje de error indicando la falta de alguna librería. Entonces se podría necesitar verificar el acceso a las librerías dinámicas

60

Gestión de librerías compartidas

 

Las librerías son un conjunto de funciones de uso común que los desarrolladores puede utilizar , evitando tener que programar su código. Son invocadas desde los programas. Cuando se compila un programa se puede hacer con las librerías dentro del ejecutable (compilación estática) o fuera (compilación dinámica) Rutas de algunas librerías compartidas

 

/lib -> Librerías principales
/usr/lib -> Librerías suplementarias /usr/X11R6/lib -> Librerías compartidas para X window

Nomenclatura de librerías y comando ldd

Normalmente tienen un nombre así:  nombre_librería-principal-secundaria-patch.so  La extensión ‘so’ es de ‘shared object’  Ej: libcrypt-2.3.2.so  versión principal: 2  versión secundaria: 3  versión de patch: 2 Para ver la librerías que utiliza un programa se utiliza ‘ldd’  Ej.: # ldd /usr/bin/wget
libssl.so.4 => /lib/libssl.so.4 (0x40034000) libcrypto.so.4 => /lib/libcrypto.so.4 (0x40069000)

61

ld.so.cache y ldconfig

Cuando un programa es ejecutado el sistema comprueba que las librerías necesarias han sido encontradas y cargadas leyendo el fichero /etc/ld.so.cache (fichero binario) Podemos ver el contenido de la cache con el comando /sbin/ldconfig -p ldconfig nos permite actualizar esta caché en función de las librerías que encuentre en :  /lib/  /usr/lib  Directorios referenciados en Fichero /etc/ld.so.conf  Otros path pasados directamente como opciones comando ldconfig  Los path referenciados en la variable de entorno LD_LIBRARY_PATH ldconfig se ejecuta durante el arranque del sistema.

Práctica

Ejercicio 8-5: Manejo de librerías compartidas (pag 8-5 del manual de prácticas)

62

TEMA 9
Copias de seguridad

Objetivos

Estrategias de backup

Backup de ficheros con YaST  Creación de Backups con tar  Trabajo con cintas  Copia de datos con dd  Imagen de directorios con rsync  Automatización de backups a través de cron

63

Estrategias de backup (1/2)

Incremental: Se hacen copias de los cambios desde el último backup
lunes Martes miércoles jueves viernes Backup completo

Diferencial: Se hacen copias desde el último backup completo
lunes Martes miércoles jueves viernes Backup completo

Estrategias de backup (2/2)

Se debe alcanzar un compromiso entre:

El tiempo necesario para recuperar una copia de seguridad La cantidad de datos de los cuales hay que hacer copia

64

Objetivos

Estrategias de backup

Backup de ficheros con YaST Creación de Backups con tar  Trabajo con cintas  Copia de datos con dd  Imagen de directorios con rsync  Automatización de backups a través de cron
 

Backup de los datos del sistema con YaST (1/8)

Los datos no abarcan el sistema completo sino información de los paquetes que han cambiado y ficheros de configuración críticos Para crear un backup: YaST>Sistema-> Copia de seguridad del sistema o ejecutar yast backup

65

Backup de los datos del sistema con YaST (2/8)

Se utilizan los perfiles para nombrar a un grupo de diferentes configuraciones tales como nombres de archivos y cómo encontrarlos Para crear un perfil en Gestión de perfiles->Añadir

Backup de los datos del sistema con YaST (3/8)

Nombre de archivo: Para el fichero que contendrá el backup (path completo) Ubicación de la copia de seguridad  Archivo local  Red (NFS): Servidor NFS

66

Backup de los datos del sistema con YaST (4/8)

Tipo de archivo

Crear archivo de copia de seguridad: para hacer el backup propiamente dicho

Tipo de archivo

tar o star (copia de ACL) comprimido con gzip o bzip2  Opciones: Para el particionamiento en varios volúmenes

Crear sólo lista de ficheros encontrados

Backup de los datos del sistema con YaST (5/8)

Copia de seguridad de archivos que no pertenecen a ningún paquete Mostrar lista de ficheros antes de crear el archivo: Para poderla editar manualmente antes de generar el bakcup Comprobar suma MD5 en lugar de hora y tamaño: Se utiliza un hash MD5 en la comprobación (es más seguro pero necesita más tiempo) Descripción del archivo: Literal opcional que puede describir algo al respecto del backup

67

Backup de los datos del sistema con YaST (6/8)

Elementos excluidos de la búsqueda: Nos la oportunidad de evitar que ciertos directorios no entren en el backup o de introducir nuestras propias excepciones antes de lanzar la búsqueda de ficheros susceptibles de ser salvados

Backup de los datos del sistema con YaST (7/8)

Si hemos marcado Mostrar lista de ficheros antes de crear el archivo en el paso 5 tenemos la oportunidad descartar ficheros del backup

68

Backup de los datos del sistema con YaST (8/8)

Datos resumen del backup

Recuperación de los datos del sistema con YaST (1/5)

Para recuperar el sistema YaST>Sistema-> Recuperar sistema o yast restore El backup a recuperar puede estar en un Archivo local, accesible a través de la Red (NFS) o en un Dispositivo extraible

69

Recuperación de los datos del sistema con YaST (2/5)

Descripción del archivo con la copia de backup

Recuperación de los datos del sistema con YaST (3/5)

Opciones Avanzadas

Activar configuración de cargador de arranque depués de restaurar (para LILO) Ejecutar SuSeconfig después de restaurar Directorio destino: Si vamos a recuperar en sobre una localización distinta de la original /

70

Recuperación de los datos del sistema con YaST (4/5)

Selección de paquetes a restaurar

Restaurar la base de datos RPM (si se encuentra en los archivos de reserva)

Recuperación de los datos del sistema con YaST (5/5)

Resumen de la restauración

71

Práctica

Ejercicio 9-1: Backup de ficheros con YaST (pag 9-2 del manual de prácticas)

Objetivos

Estrategias de backup

Backup de ficheros con YaST  Creación de Backups con tar  Trabajo con cintas  Copia de datos con dd  Imagen de directorios con rsync  Automatización de backups a través de cron

72

tar

tar <opciones> fichero directorio

Opciones:  cvf: Empaqueta (c) el contenido de directorio en el paquete (f) fichero, dando infomación adicional (v)  tvf: Lista el contenido del paquete fichero  xvf: Extrae el contenido del paquete fichero  X : Excluye ficheros (pasados en una lista)  C: Para extraer en un directorio distinto del actual  r: incluye ficheros en archivo tar ya existente  u: Sólo incluye ficheros en el archivo cuando son más recientes que los que ya existen  d: compara los ficheros en el archivo con los del filesystem

tar : ejemplos

tar -cvf /back/etc.tar /etc

Empaqueta todo lo que encuentra bajo /etc (le quita la '/' antes) en el fichero /back/etc.tar  tar -cvf /dev/st0 /home Pasa a cinta el contenido del directorio home  tar -cvf /dev/st0 /home -X lista.txt Pasa a cinta el contenido del directorio home menos los ficheros especificados en lista.txt  tar -xvf /dev/st0 Extrae contenido de cinta en directorio actual  tar -xvf /test1/test.tar -C /test2 home/user1/.bashrc Extrae el fichero home/user1/.bashrc contenido en /test1/test.tar sobre el directorio /test2

73

Backups incrementales y diferenciales con tar (1/2)

Snapshots:

Consiste en crear un fichero especial, a la vez que se hace la copia, que contiene información sobre desarrollo del proceso de backup. Para ello se necesita primero un backup total utilizando la opción -g nombre_del_fichero Ej.: tar -czf fich_backup_total -g fich_snapshot /home

En la siguiente backup salvarán sólo los ficheros que han cambiado utilizando una línea similar a la siguiente:

tar -czf fich_backup_incremetal -g fich_snapshot /home

Backups incrementales y diferenciales con tar (2/2)

find + tar

Consiste en utilizar find para localizar los ficheros con las fechas adecuadas. Estos ficheros alimentan al tar que procede a simplemente empaquetarlos Primero se realiza un backup completo. Ej.: tar cvzf /backup/backup_completo.tar.gz /home En los siguientes backups utilizamos find. Ej.:

find /home -type f -newer /backup/backup_completo.tar.gz -print0 | tar –null -cvzf /backup/backup_lunes.tar.gz -T 

print0 y --null aseguran que los ficheros con espacios en el nombre sean también copiados -T permite que los fichero pasados al tar por la entrada estandar sean incluidos en el paquete

Un problema de este método es que si el proceso es largo se puden producir modificaciones en los ficheros originales antes de que se cierre el fichero de backup (ya que esa fecha y hora será referencia posterior)

74

Práctica

Ejercicio 9-2: Backups con tar (pag 9-3 del manual de prácticas)

Objetivos

Estrategias de backup

Backup de ficheros con YaST  Creación de Backups con tar  Trabajo con cintas  Copia de datos con dd  Imagen de directorios con rsync  Automatización de backups a través de cron

75

Trabajo con cintas

Para trabajar con cintas utilizamos el comando mt Los dispositivos de cinta en Linux son siempre SCSI y pueden ser accedidos a través de:

/dev/st0: primer unidad de cinta (con rebobinado) /dev/nst0: misma unidad sin rebobinado

Status de una cinta

#mt -f /dev/st0 status Drive type = Gegeric SCSI-2 tape Drive status = 620756992 Sense key error = 0 Residue count = 0 File number = 0 <--- Principio de la cinta Block number = 0 <-Tape block size o bytes. Density code 0x25 (unknown) Soft error count since last status=0 General status bits on (410100000): BOT ONLINE IM_REP_EN Begin of tape -----------^

76

Posicionamiento de la cinta
#mt -f /dev/nst0 fsf 1 <--- Siguiente fichero #mt -f /dev/nst0 status Drive type = Gegeric SCSI-2 tape Drive status = 620756992 Sense key error = 0 Residue count = 0 File number = 1 <--- Principio de siguiente fichero Block number = 0 <-Tape block size o bytes. Density code 0x25 (unknown) Soft error count since last status=0 General status bits on (81010000): EOF ONLINE IM_REP_EN End of file-----------^

Para volver un fichero para atrás : bsf

Tras una lectura

Después de leer el archivo ( con un tar -xvf /dev/nst0 por ejemplo) la cinta está al final del fichero

#mt -f /dev/nst0 status Drive type = Gegeric SCSI-2 tape Drive status = 620756992 Sense key error = 0 Residue count = 0 File number = 1 Block number = 18 <-- distinto de 0 Tape block size o bytes. Density code 0x25 (unknown) Soft error count since last status=0 General status bits on (1010000):ONLINE IM_REP_EN

77

Otras operaciones con cintas

Para rebobinar: Para expulsar la cinta Se recomienda trabajar con la compresión desactivada para favorecer recuperaciones frente a errores. Para comprobar en que modo se encuentra:

#mt -f /dev/nst0 rewind

#mt -f /dev/nst0 offline

#mt -f /dev/st0 datacompression
Compression on

Para desactivar la compresión (activa por defecto) Algunas cintas, sobre todo DAT, pueden dar problemas al ser leídas en Unix debido a un tamaño diferente de bloque para solucionarlo:

#mt -f /dev/st0 datacompression off

#mt -f /dev/st0 setblk 512

(con tar se puede utilizar el parámetro -b )

Objetivos

Estrategias de backup

Backup de ficheros con YaST  Creación de Backups con tar  Trabajo con cintas  Copia de datos con dd  Imagen de directorios con rsync  Automatización de backups a través de cron

78

dd

Lee de la entrada estándar y escribe en la salida estándar. Con los parámetros adecuados se puede trabajar con ficheros :

dd if=fichOrg of=fichCopia dd if=/dev/sda1 of=particion.arranque

Podemos especificar dispositivos :

(crea imagen de un filesystem en un fichero) La copia se hace con tamaño de bloque 512 bytes que puede ser variado con el parámetro bs= Podemos hacer una copia del MBR de un disco :
dd if=/dev/sda of=/tmp/mbr_backup bs=512 count=1

Práctica

Ejercicio 9-3: Creación de imagenes con dd (pag 9-6 del manual de prácticas)

79

Objetivos

Estrategias de backup

Backup de ficheros con YaST Creación de Backups con tar  Trabajo con cintas  Copia de datos con dd  Imagen de directorios con rsync  Automatización de backups a través de cron
 

Copias locales con rsync (1/2)

Podemos hacer una copia de un directorio sobre otro con el comando: rsync -a /dir_org /dir_espejo Si sólo queremos copiar el contenido del directorio y no el propio directorio rsync -a /dir_org/. /dir_espejo (nótese el .) Si ejecutamos el mismo comando de nuevo sólo los ficheros que han cambiado o que son nuevos serán copiados Las opción -a (archive mode) es un compendio de varias otras opciones que copian:
     

-l: enlaces simbólicos -p: permisos de acceso -o: dueños de los ficheros -g: grupos de los ficheros -t: fechas de los ficheros -r: recursividad

80

Copias locales con rsync (2/2)

Algunas opciones útiles de rsync
 

  

-a: modo archivo -x: no sigue links simbólicos a otros sistemas de ficheros -v: da más información -z: comprime los datos durante la sincronización --delete: borra ficheros que ya no existen en los directorios originales --exclude-from: no copia archivos referenciados en el fichero de exclusión  Ej.: rsync -a --exclude-from=/home/exclude /home/. /shadow/home

Copias remotas con rsync

Es posible que rsync utilice a ssh para hacer copias sincronizadas de forma segura a través de la red. Ej.:

rsync -ave ssh root@DA1:/home/tux /backup/home/  -e : Establece la shell remota a utilizar (ssh)

También funciona en dirección contraría: rsync -ave ssh /backup/home/tux root@DA1 :/home/

81

Práctica

Ejercicio 9-4: Backups de un directorio home con rsync (pag 9-8 del manual de prácticas)

Objetivos

Estrategias de backup

Backup de ficheros con YaST  Creación de Backups con tar  Trabajo con cintas  Copia de datos con dd  Imagen de directorios con rsync  Automatización de backups a través de cron

82

Automatización de backups

Cron :
 

De usuario : crontab -e De sistema:
 

/etc/crontab /etc/cron.d/

Ej.: 0 1 * * 6 root /root/bin/backup.sh

/etc/cron.daily, /etc/cron.weekly ...

TEMA 10
Sistema de impresión

83

Objetivos

Configuración de impresoras locales

Administración de colas y trabajos con comandos  Funcionamiento de CUPS  Configuración y administración de un servidor de impresión  Utilización del interfaz web para administrar CUPS

¿Cuando configurar una impresora local?

Durante la instalación

Sobre el cuadro de diálogo de Configuración hardware. Las impresoras locales son detectadas automáticamente Si la detección automática no funciona podemos seleccionar el link impresoras YaST->Hardware->Impresoras O yast2 printer desde un terminal

Después de la instalación
 

84

Paquetes necesarios

Los siguientes paquetes se instalan automáticamente si configuramos SLSE 10 como un servidor de impresión:
 

cups: Contiene el daemon de impresión cupsd cups-client: proporciona las herramientas de impresión en línea de comandos cups-libs: debería instalarse siempre ya que algunos programas como Samba enlazan con estas librerías cups-drivers y cups-drivers-stp: Proporcionan los ficheros PPD para las colas de impresión cups-SUSE-ppds-dat: contiene un fichero /etc/cups/ppds.dat pregenerado

Para arrancar o parar cups:  # rccups start  # rccups stop

Añadir impresoras locales con YaST (1/4)

Al arrancar YaST>hardware>impresora se procede a reconocer cualquier impresora conectada localmente Para configurar una impresora reconocida pero que no tiene colas todavía la marcamos y pulsamos Editar

85

Añadir impresoras locales con YaST (2/4)

Se muestran las características que por defecto se van a configurar sobre la cola
Podemos variar:
 

Su nombre El modelo detectado El archivo PPD asignado El tipo de conexión

Añadir impresoras locales con YaST (3/4)

Ajustes de filtro: Tamaño y orientación del papel, número de páginas por hoja ... Ajustes de restricciones: Usuarios que pueden o no utilizar la impresora Ajustes de estado y portada:

Establecer si la cola está operativa o no Especificar páginas de inicio y fin de trabajo

86

Añadir impresoras locales con YaST (4/4)

Finaliza la configuración de la cola

Impresoras de red (1/11)

Cups soporta los siguientes protocolos para la impresión a través de la red:

IPP (Internet Printing Protocol)
 

 

Basado en HTTP Comparado con otros protocolos permite transmitir más información relacionada con el trabajo Utilizado por CUPS también para las transferencias internas de datos Su puerto es el 631 URI=> ipp://servidorcups/impresora/cola Transmite algo de información relativa al trabajo como la cola de impresión (LPT, LPT1, LP1...) El puerto es el 515 Ejemplo de URI=> lpd://host/LPT1

LPD (Line Printer Daemon)

 

87

Impresoras de red (2/11)

SMB (Standard Message Block)

 

CUPS también soporta la conexión a impresoras compartidas de Windows Puertos: 137, 138 y 139 Ejemplos de URIs:  smb://usuario:password@workgroup/servidor/impresora  smb://usuario:password@servidor/impresora  smb://servidor/impresora Se utiliza para conectar a una impresora equipada con una conexión de red Algunos de los puertos utilizados habitualmente son el 9100 y el 35 Ejemplo de URI:

Socket

socket://servidor:9100/

Impresoras de red (3/11)

Al arrancar YaST>hardware>impresora pulsamos Añadir

88

Impresoras de red (4/11)

Seleccionamos Impresora de red

Impresoras de red (5/11)

Seleccionamos el protocolo de impresión Veremos a continuación la configuración para CUPS y Socket o impresión directa

89

Impresoras de red: CUPS (6/11)

Sólo cliente de CUPS: Permite acceder a las cola de impresión en un servidor en concreto El servicio cupsd no se ejecuta localmete (no hay impresoras locales) Es la mejor elección si sólo se tiene un servidor para toda la red En el fichero /etc/cups/cliente.c onf se añade una entrada: ServerName IP

Impresoras de red: CUPS (7/11)

CUPS con broadcasting: Permite tanto impresoras locales como remotas Se ejecuta localmente el servicio cupsd Las impresoras que se anuncien en la red son mostradas automáticamente y puestas a disposición de los usuarios Se puede limitar desde que direcciones se aceptan los anuncios de impresoras y reconfigurar el firewal local

90

Impresoras de red: CUPS (8/11)

Cola IPP remota: Para acceder a una cola en concreto en un servidor determinado Permite tanto impresoras locales como remotas Se ejecuta localmente el servicio cupsd

Impresoras de red: Socket (9/11)

Para impresoras conectadas directamente a la red elegimos Imprimir directamente a una impresora de red

91

Impresoras de red: Socket (10/11)

Impresoras en red como las HP DirectJet soportan la Impresión directa a través del puerto TCP

Impresoras de red: Socket (11/11)

Por último podemos:

Dar una serie de datos para la representación local de la cola Compartir la cola marcando Impresora compartida Usar filtro local. Con lo que se nos muestra el asistente para determinar el tipo de impresora remota y las características como tamaño y orientación de papel, restricciones de acceso...

92

Configuración de una impresora a través de la línea de comandos (1/2)

La configuración de una impresora desde la línea de comandos se realiza a través del comando lpadmin.
lpadmin -p nombreImpresora [-E] [-v dispositivo][-p driver ]

Parámetros :  p : nombre de la impresora.
  

E : Activa la impresora v : dispositivo/protocolo de conexión.

P : driver a utilizar (Localizados en /usr/share/cups/model) Ej :
lpadmin -p hpLaserjet5 -v parallel:/dev/lp0 -P /usr/share/cups/model/Postscript.ppd.gz -E

Configuración de una impresora a través de la línea de comandos (2/2)

Algunos de los protocolos de conexión soportados son los siguientes :  parallel : conexión vía puerto paralelo. Ej :
lpadmin -p hpLaserjet5 -v parallel:/dev/lp0

usb : conexión vía puerto usb. Ej :
lpadmin -p hpLaserjet5 -v usb:/dev/usb/lp0

socket : conexión a una impresora de red. Ej :
lpadmin -p hpLaserjet5 -v socket://192.168.4.100:9100

lpd : impresora ubicada en servidor LPD.
lpadmin -p hpLaserjet5 -v lpd://impresora/lpt1

ipp : mediante protocolo IPP. Ej :
lpadmin -p hpLaserjet5 -v ipp://impresora/hp

smb : impresoras compartidas en windows. Ej :
lpadmin -p hpLaserjet5 -v smb://windowsxp/impresora

93

Práctica

Ejercicio 10-1: Cambio de la configuración de impresión (pag 10-1 del manual de prácticas)

Objetivos

Configuración de impresoras locales

Administración de colas y trabajos con comandos  Funcionamiento de CUPS  Configuración y administración de un servidor de impresión  Utilización del interfaz web para administrar CUPS

94

Documentación para los comandos

Bajo /usr/share/doc/packages/cups/ tenemos:

Los manuales de usuario: sum.html y sum.pdf Los manuales de administración: sam.html y sam.pdf

Los comandos permiten utilizar dos convenciones distintas:
 

Estilo Berkley Estilo System V

Mandar trabajos (1/2)

Berkley:

lpr -P cola fichero lp -d cola fichero

System V:

Si no se especifica la cola será la de por defecto

En ambos casos podemos incluir opciones adicionales con -o:

Berkley:  lpr -P cola -o opcion fichero System V:  lp -d cola -o opcion fichero

95

Mandar trabajos (2/2)

Ej.:
# lpr -P lp -o PageSize=A3 documento.ps

 

Para ver opcines: lpoptions -l Para mandar trabajos a impresoras remotas:

Berkley:  lpr -P cola@servidor fichero System V:  lp -d cola -h servidor fichero

Ej.:
# lp -d lp -h srv12.afina.es documento.ps

Mostrar trabajos en la cola

Berkley:
 

lpq -P cola lpq -a muestra trabajos en todas las colas lpstat -o -p cola

System V:

Si no se especifica ninguna cola se muestran todas

96

Cancelación de trabajos

Berkley:

lprm -P cola nº_trabajo cancel cola-nº_trabajo

System V:

Administración de colas

Para deshabilitar (parar) o activar una impresora utilizamos :
  

/usr/bin/disable cola /usr/bin/enable cola Ej.:
#lpq Lj4050 is ready No entries #/usr/bin/disable lj4050 #lpq Lj4050 is not No entries ready

Si la cola no va a estar disponible durante demasiado tiempo es posible que convenga rechazar nuevos trabajos con

/usr/sbin/reject cola /usr/sbin/accept cola Ej.:
#/usr/bin/reject lj4050 #lpr /etc/fstab lpr: unable to print file: sever-error-notaccepting-jobs No entries

Para activarla de nuevo
 

97

Configuración de colas (1/3)

Las opciones específicas de cada impresora que afectan al aspecto de los trabajos se almacenan en un fichero, con el nombre de la cola y extensión ppd, bajo: /etc/cups/ppd/ PPD (PostScript Printer Description) que describe las propiedades y opciones de una impresora (como su resolución) Durante las instalación de SLES 10 se crean los ficheros PPD que dan soporte a las distintas impresoras /usr/share/cups/model/ Para ver las opciones disponibles en una cola: lpoptions -p cola -l

Configuración de colas (2/3)

La salida mostrada por el comando lpoptions tiene la estructura:

opción/cadena: valor valor valor ...

Ej.:
# lpoptions -l HalftoningAlgorithm/Halftoning Algorithm: Accurate *Standard WTS REt/REt Setting: Dark Light *Medium Off TonerDensity/Toner Density: 1 2 *3 4 5 Manualfeed/Manual Feed of Paper: Off On InputSlot/Media Source: *Default Tray1 Tray2 Tray3 Tray4 Envelope Manual Auto Copies/Number of Copies: *1 2 3 4 5 6 7 8 9 10 11 12 13 ... PageSize/Page Size: A4 *Letter 11x17 A3 A5 B5 Env10 EnvC5 EnvDL ... PageRegion/PageRegion: A4 Letter 11x17 A3 A5 B5 Env10 EnvC5 EnvDL EnvISOB5 ... Resolution/Resolution: 75x75dpi 150x150dpi 300x300dpi *600x600dpi Economode/Toner Saving: *Off On

El * significa la opción activa actualmente

98

Configuración de colas (3/3)

Ejemplo de cambio de una opción: # lpoptions -p cola -o PageSize=letter Si el cambio lo realiza root se almacena en /etc/cups/lpoptions y afecta a todos los usuarios del host Si lo hace un usuario cualquiera sólo le afecta a él, almacenándose el cambio en el fichero ~/.lpoptions El fichero PPD de la cola nunca es modificado Para hacer que el cambio afecte incluso a usuarios a través de la red:  lpadmin -p cola -o opción=valor

 

classes

Podemos definir classes como la agrupación de un conjunto de colas de similares características Cuando un trabajo sea enviado a una clase este será procesado por la primera cola que se encuentre libre Para definir una clase le añadimos su primera cola:

lpadmin -p cola -c clase lpadmin -p cola -r clase

Para eliminar una cola de una impresora:

Una clase sin ninguna cola es automáticamente borrada Para ver que colas están asignadas a qué clases podemos consultar el fichero:

/etc/cups/classes.conf

99

Práctica

Ejercicio 10-2: Manejo de impresoras desde la línea de comandos (pag 10-6 del manual de prácticas)

Objetivos

Configuración de impresoras locales

Administración de colas y trabajos con comandos  Funcionamiento de CUPS  Configuración y administración de un servidor de impresión  Utilización del interfaz web para administrar CUPS

100

Secuencia de eventos
1. El trabajo es creado por un usuario o programa 2. El trabajo es almacenado en una cola (/var/spool/cups) en forma de 2 ficheros:  Los datos a imprimir  Información adicional: (ej: quién lo mando, a qué impresora) 3. El demonio cupsd, en su momento, toma el trabajo y determina el tipo de datos a imprimir, convirtiendo el fichero a un formato dependiente de la impresora 4. cupsd manda el trabajo a la impresora. Cuando éste finaliza de ser impreso lo borra de la cola ( y no antes)

Filtrado o conversión de datos a imprimir (1/5)

Los pasos que cups cubre son los siguientes: 1.Conversión a PostScript 2.Contabilidad 3.Conversión al formato específico de la impresora 4.Salida hacia la impresora

101

Filtrado o conversión de datos a imprimir (2/5)

Los pasos que cups cubre son los siguientes: 1.Conversión a PostScript
A. El tipo de datos es determinado con la ayuda del fichero /etc/cups/mime.types B. Los datos son convertidos a PostScript a través de la herranienta especificada en /etc/cups/mime.convs

2.Contabilidad 3.Conversión al formato específico de la impresora 4.Salida hacia la impresora

Filtrado o conversión de datos a imprimir (3/5)

Los pasos que cups cubre son los siguientes: 1.Conversión a PostScript 2.Contabilidad
Se determina el número de páginas con la herramienta /usr/lib/cups/filter/pstops registrándose en el fichero /var/log/cups/page_log Si se necesita, pstops podrían realizar filtrados como seleccionar páginas específicas a imprimir o agregar varias páginas en la misma hoja

3.Conversión al formato específico de la impresora 4.Salida hacia la impresora

102

Filtrado o conversión de datos a imprimir (4/5)

Los pasos que cups cubre son los siguientes: 1.Conversión a PostScript 2.Contabilidad 3.Conversión al formato específico de la impresora
/etc/cups/ppd/cola.ppd (PostScript Printer Description) define como tiene que tener lugar la conversión:  Impresoras no PostScript: Se ejecuta un filtro para hacer la conversión al formato adecuado ( Ej.: /usr/lib/cups/filter/cupsomatic)  Impresora PostScript: Los datos no necesitan ser convertidos.

4.Salida hacia la impresora

Filtrado o conversión de datos a imprimir (5/5)

Los pasos que cups cubre son los siguientes: 1.Conversión a PostScript 2.Contabilidad 3.Conversión al formato específico de la impresora 4.Salida hacia la impresora
Antes de enviar el trabajo a la impresora se ejecuta un filtro adicional (contenido en el directorio /usr/lib/cups/backend/) en función del tipo de conexión con la impresora : canon, epson, http, ipp, lpd, parallel, serial usb ...

103

Colas de impresión

En lugar de mandar directamente los trabajos a las impresoras lo hacemos a las colas de impresión que a su vez se asocian con las impresoras correspondientes Cada cola tiene sus características particulares Una impresora puede tener más de una cola asociada. Cada una de estas colas podrá variar en la forma en la que los trabajos son tratados (calidad fotográfica, borrador, tamaño del papel ...) Cada cola de impresión es descrita en el fichero :  /etc/cups/printers.conf Y como ya se ha dicho, cada cola tiene su propio fichero de opciones bajo  /etc/cups/ppd/ En el lado del cliente algunas aplicaciones (OpenOffice por ej.) necesitan que las colas estén dadas de alta en el fichero /etc/printcap

 

/etc/cups/printers.conf
# Printer configuration file for CUPS v1.1.23 # Written by cupsd on Tue Apr 24 01:01:59 2007 <DefaultPrinter hplj4> Info LaserJet 4 on sles3072 Location sles3072 computer DeviceURI parallel:/dev/lp0 State Idle Accepting Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 </Printer> <Printer hplj4_1> Info Location DeviceURI ipp://192.168.13.129/printers/hplj4 State Idle Accepting Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 </Printer>

104

Ficheros de log

Bajo /var/log/cups/ tenemos :

access_log: lista cada acceso IPP (HTTP) al servidor error_log: Los tipos de mensajes se denotan por las siguientes letras al principio de la línea:
   

E: error W: el servidor fue incapaz de ejecutar una acción I: información D: debugging  Se puede controlar el nivel de los mensajes registrados a través de la directiva logLevel en el fichero /etc/cups/cupsd.conf

page_log: Lista los trabajos enviados al sistema de impresión con información de su números de páginas, número de copias...

Objetivos

Configuración de impresoras locales

Administración de colas y trabajos con comandos  Funcionamiento de CUPS  Configuración y administración de un servidor de impresión  Utilización del interfaz web para administrar CUPS

105

Difusión de la información de las impresoras

CUPS puede enviar a intervalos (30 segundos) información a toda la red con de cada impresora configurada en el sistema (unos 80 bytes) Esto facilita el acceso de los clientes a las mismas Para ello envía mensajes a direcciones de broadcast (ej.: 192.168.101.255) Podemos configurar esta característica a través de YaST o directamente sobre el fichero /etc/cups/cups.conf

Configuración de un servidor de impresión a través de YaST (1/7)

Al arrancar YaST>hardware>impresora se procede a reconocer cualquier impresora conectada localmente Para definir las condiciones de compartición de una impresora la marcamos y sobre el menu Otra seleccionamos Ajustes avanzados de Cups

106

Configuración de un servidor de impresión a través de YaST (2/7)

Marcamos Ajustes del servidor cups

Configuración de un servidor de impresión a través de YaST (3/7)

Aunque la Navegación esta activada por defecto es necesario todavía indicar el rango de direcciones a las que se enviará la información pulsando Añadir Ejemplos de valores admintidos:  192.168.101.25 5  10.255.255.255  @LOCAL

107

Configuración de un servidor de impresión a través de YaST (4/7)

Los recursos disponibles son los siguientes:

/(root): todos los recursos /printers: todas las colas /jobs: trabajos de impresión /admin: configuración del servidor

Sobre ellos podemos ajustar los permisos correspondientes pulsando Cambiar permisos

Configuración de un servidor de impresión a través de YaST (5/7)

Denegar, permitir: Un cliente que no esté en la directiva Denegar, o lo esté en Permitir tendrá el acceso permitido. Por defecto se permite. Permitir, Denegar: Un cliente que no esté en la directiva Allow, o que lo esté en Deny será rechazado. Por defecto se deniega el acceso

108

Configuración de un servidor de impresión a través de YaST (6/7)

Es posible también limitar el acceso por usuario o grupo Yast-> Hardware>Impresora, marcamos la impresora pulsamos Editar, marcamos Ajustes de restricciones Para denotar grupos los hacemos con la @. Ejemplo: @users

Configuración de un servidor de impresión a través de YaST (7/7)

Para permitir el acceso de los usuarios con comando:
 

lpadmin -p cola -u allow:user2,user2 lpadmin -p cola -u allow:@users lpadmin -p cola -u deny:geeko,@guest lpadmin -p cola -u allow:all lpadamin -p cola -u deny:none

Para restringir el acceso:

Para permtir imprimir a todos:
 

109

Restricción de acceso al interfaz web

El fichero /etc/cups/cups.conf viene configurado para restringir el acceso al interfaz web de administración de CUPS
<Location /admin> AuthType BasicDigest AuthClass Group AuthGroupName sys Order Deny,Allow Deny From All Allow From 127.0.0.1 </Location>

El tipo de autenticación BasicDigest utiliza como base de datos de passwords el fichero /etc/cups/passwd.md5 Inicialmente no hay definido ningún usuario Para generar este fichero y añadir el primer usuario al grupo sys: lppasswd -a root -g sys El nombre del usuario no tiene porque existir en en el sistema Linux

Práctica

Ejercicio 10-3: Restricción de acceso (pag 10-8 del manual de prácticas)

110

Objetivos

Configuración de impresoras locales

Administración de colas y trabajos con comandos  Funcionamiento de CUPS  Configuración y administración de un servidor de impresión  Utilización del interfaz web para administrar CUPS

Pagina inicial

Como ya se ha visto CUPS proporciona un interfaz web administrativo sobre la URL:
http://servidor:631

El acceso a este interfaz está puede estar restringido

111

Tareas de administración

http://servidor:631 /admin

 

 

Añadir clases Administrar clases Administrar trabajos Añadir impresoras Administrar impresoras

Tareas de administración

El interfaz web ofrece una gran cantidad de documentos de ayuda tanto en formato HTML como pdf

112

Práctica

Ejercicio 10-4: Utilización del interfaz web para manejar CUPS (pag 10-10 del manual de prácticas)

TEMA 11
Acceso remoto

113

Objetivos


Acceso remoto seguro con OpenSSH
Administración remota con YaST

Conceptos Básicos de Criptografía

La Criptografía utiliza técnicas para:
 

Cifrar los datos Probar la autenticidad de los mismos

La información utilizada para cifrar y descifrar los datos se conoce como Clave Existen dos tipos de cifrado
 

Cifrado simétrico Cifrado asimétrico

114

Algoritmos de clave pública (1/4)
K-1
Hola caracola ...

K-2
Hola caracola ...

89sdiwew erwe4554 ...

K-1
Hola caracola ... 89sdiwew erwe4554 ...

K-2
???????? ???????? ????????

K-1

K-1

115

Algoritmos de clave pública (2/4)
K-1
Hola caracola ...

K-2
Hola caracola ...

89sdiwew erwe4554 ...

K-2
Hola caracola ... 89sdiwew erwe4554 ...

K-1
???????? ???????? ????????

K-2

K-2

Algoritmos de clave pública (3/4)
Clave Privada Clave Pública

Hola caracola ...

89sdiwew erwe4554 ...

Hola caracola ...

Clave Privada
Hola caracola ... 89sdiwew erwe4554 ...

Clave Pública
Hola caracola ...

Clave Pública

Clave Privada

116

Comparación de algoritmos de encriptación
DES
Clave simétrica

56 bits 168 bits 128 bits
(uso no comercial libre

3DES IDEA BLOWFISH AES

488 bits (variable) 128,192,256 bits

Clave Pública

RSA/DSA bits

512, 1024, 2048

117

Funciones Hash (1/4)
Función hash
En las líneas de sintaxis, salvo que se indique lo contrario, el texto en minúscula representa parámetros reemplazables, mientras que el texto en mayúsculas debe escribirse tal como aparece...

affg#12!5g3U8… N. Cte. de caracteres

affg#12!5g3U8…

En las líneas de sintaxis, salvo que se indique lo contrario, el texto en minúscula representa parámetros reemplazables, mientras que el texto en mayúsculas debe escribirse tal como aparece...

118

119

Funciones Hash (4/4)

MD5
•Message Digest 5 •Desarrollado por RSA •128 bit

SHA-1
•Secure Hashing Algorithm •Desarrollado por el National Institute of Standars and Technology •160 bits

SSH

SSH hace posible la comunicación segura sobre redes no seguras y presenta una alternativa a:  telnet, rlogin, rsh y rcp Incluye no sólo funcionalidades de los comandos “r” y telnet, también tiene funcionalidades de ftp Permite proteger las comunicaciones X11 y cualquier otra comunicación TCP, encapsulándolos en un túnel seguro

120

Funcionalidades Proporcionadas
 

 

  

Login en una máquina remota Ejecución interactiva o no de comandos en equipos remotos Copiado de ficheros entre diferentes hosts Mecanismo de autenticación de alto rendimiento y comunicación criptográfica segura sobre redes no seguras Completa sustitución de los comandos “r” Port Forwarding Tunneling

El Protocolo SSH versión 1
Conexión SSH
Cliente El cliente abre la conexión 1 Servidor Puerto 22

Comprueba si la Host Key es correcta en ~/.ssh/known_hosts 3

Envió de las Host Key 2 & Server Key Públicas

Genera un número aleatorio de 256 bits(clave simétrica) y lo cifra usando las claves pública del servidor

4 5

Sólo el servidor es capaz de descifrar el número aleatorio y sólo él tiene la clave secreta, conocida como clave de sesión

•El servidor ssh mantiene 2 parejas de claves asimétricas: - host pair: De larga duración y almacenadas en /etc/ssh/ssh_host_key.pub (pública) /etc/ssh/ssh_host_key (privada) -Server pair: Cambia cada hora normalmente y no reside en el HD

121

Protocolo SSH versión 2

El protocolo SSH versión 1 no tiene un mecanismo para asegurar la integridad de la conexión. Cualquier atacante puede insertar paquetes con datos en la sesión existente El protocolo SSH versión 2 contiene mecanismos, conocidos como HMAC (Keyed-Hash Message Authtentication Code), para evitar esto. Están definidos en el RFC-2104

Funcionamiento de SSH2
Conexión SSH
Cliente El cliente abre la conexión 1 Servidor Puerto 22

Envió de la Host Key 2 Pública (RSA ó DSA) Comprueba si la clave es correcta en 3 ~/.ssh/known_hosts 4 Utilizan el algoritmo llamado Diffie-Hellman por el cual se ponen de acuerdo en la clave de sesión 5

Como en SSH1, la comunicación se cifra simétricamente

 La diferencia fundamental con ssh 1 es que aquí se utiliza HMAC para garantizar la integridad de los mensajes y el empleo del mecanismo Diffie-Hellman para acordar la clave simétrica o de sesión  Claves públicas del servidor en : /etc/ssh/ssh_host_rsa_key.pub /etc/ssh/ssh_host_dsa_key.pub

122

Configuración de las versiones

Conectando por telnet al puerto 22 podemos ver qué versiones son soportadas
  

SSH-1.5-OpenSSH_3.0p1 – sólo SSH1 SSH-1.99-OpenSSH_3.0p1 – SSH1 y SSH2 SSH-2.0-OpenSSH_3.0p1 – sólo SSH2

El servidor SSH define las versiones soportadas en la instrucción Protocol del fichero /etc/ssh/sshd_config El cliente puede configurarlo en el fichero /etc/ssh/ssh_config o al invocar el comando usando ssh -1 ó ssh -2

Comandos del Cliente

ssh: cliente SSH, sustituye a rlogin, rsh y telnet. Nombre alternativo slogin

scp: copia ficheros en modo seguro. Sustituye a rcp

 sftp: ofrece un interfaz similar a un cliente ftp en línea de comando (comandos ls, get, put)  ssh-agent: Puede manejar la claves RSA y responder a peticiones del servidor simplificando la autenticación  ssh-keygen: Genera claves RSA 

ssh-add: Registra nuevas claves en el agente ssh (ssh-agent)

123

El comando ssh

Login con un usuario distinto del local:

ssh -l geeko brutus.example.com ssh geeko@brutus.example.com ssh -X brutus.example.com
ssh -l root 192.168.30.29 shutdown -h now scp /etc/passwd geeko@brutus.exa.com:/tmp

o

Tunel para aplicaciones gráficas

Ejecución de comandos remotos

Copia de ficheros remotos

Práctica

Ejercicio 11-1: Utilización de ssh (pag 11-2 del manual de prácticas)

124

Comandos del Servidor
Comando Descripción Agente SSH. El script de inicio se llama sshd /etc/init.d/sshd
ssh-keyscan Recoge las claves públicas de host de los
servidores SSH y las muestra en la salida estándar para poder compararlas (e incluirlas) con la clave en /etc/ssh/ssh_known_hosts

Mecanismos de Autentificación

El servidor prueba su identidad implícitamente ya que sólo puede descifrar la clave de sesión generada por el cliente si tiene la clave privada. Para que esto funcione el cliente debe asegurarse de que la clave pública que tiene realmente pertenece al servidor. El cliente comprueba la autenticidad en /etc/ssh/ssh_known_hosts o ~/.ssh/known_hosts La primera vez que conectamos con un servidor podemos importar su clave pública que se guardará en el fichero ~/.ssh/known_hosts

125

Autenticación en el Servidor (I)

Hay 4 métodos que se definen en el fichero /etc/ssh/sshd_config

Autenticación basada en el Host
 

(sshd_config: HostbasedAuthentication) Basada en los ficheros /etc/hosts.equiv, /etc/shosts.equiv, ~/.rhosts o ~/.shosts Es totalmente insegura y normalmente no soportada por el servidor (sshd_config: RhostsRSAAuthentication) Combinación de la anterior y RSA. Sólo soportada en SSH versión 1 Las claves públicas de los clientes se almacenan en el servidor (/etc/ssh/ssh_known_hosts o ~/.ssh/known_hosts) Ahora es el cliente el que tiene que probar que tiene la clave privada que está almacenada en /etc/ssh/ssh_host_key

Autenticación RSA basada en el Host
   

Autenticación en el Servidor (II)

Autenticación con clave pública (RSA/DSA)
   

(sshd_config: RSAAuthentication) en SSH1 (sshd_config: PubkeyAuthentication) en SSH2 Es el método más seguro. El usuario prueba que conoce la clave privada mediante un procedimiento de preguntarespuesta que puede ser llevado a cabo automáticamente por ssh-agent (sshd_config: PasswordAuthentication) Autenticación vía contraseña Unix. La transferencia de la clave está cifrada

Autenticación por Clave
 

126

Autenticación RSA
1.

2.

3.

4. 5.

6.

Se pone la clave pública del usuario en el servidor (normalmente en el HOME del usuario) La clave privada únicamente está en el cliente El cliente informa al servidor de qué clave pública se usará para la autenticación El servidor comprueba si tiene la clave El servidor cifra un número aleatorio usando la clave pública y la pasa al cliente Sólo el cliente es capaz de descifrar el número El cliente envía un checksum MD5 del número

7.

Generación de un par de claves
  

Se utiliza el comando ssh-keygen El par es diferente en SSH1 y SSH2 Sin opciones se crea una clave SSH1 y se almacenan en ~/.ssh/identity (privada) y ~/.ssh/identity.pub (pública) Con la opción -t dsa |rsa se genera una clave SSH2  Ej.:
#ssh-keygen -t rsa

La clave privada DSA se almacena en ~/.ssh/id_dsa y la pública en ~/.ssh/id_dsa.pub La clave privada RSA se almacena en ~/.ssh/id_rsa y la pública en ~/.ssh/id_rsa.pub

127

Configuración de la autenticación RSA/DSA
Copiar la clave pública al servidor  Guardarla en tux@earth > scp .ssh/id_dsa.pub sun:tuxpubkey ~/.ssh/authorized_keys

... tux@sun > cat tux-pubkey >> .ssh/authorized_keys

Uso de ssh-agent y ssh-add

Cada vez que usamos ssh ó scp se nos pide la contraseña de nuestra clave pública Para evitar esto se puede usar sshagent y ssh-add Si queremos que funcione en el entorno gráfico hay que añadir dos variables en el fichero ~/.xsession

tux@earth > ssh-agent bash  sshagent=“yes” tux@earth > ssh-add .ssh/id_rsa

usessh=“yes”

128

Práctica

Ejercicio 11-2: Utilización de ssh (pag 11-4 del manual de prácticas)

Objetivos


Acceso remoto seguro con OpenSSH
Administración remota con YaST

129

Administración Remota

Podemos realizar una administración remota del servidor X a través de VNC. VNC (virtual network computing) es una solución cliente/servidor que permite controlar un servidor X remoto mediante un navegador WEB (Con soporte Java), konqueror o un cliente nativo VNC por lo que los 2 sistemas no tienen por que ser del mismo tipo YaST incluye un módulo para la activación de la administración remota.

Activación desde YaST
YaST -> Servicios de Red ->Administraci ón remota ó # yast2 remote

130

Acceso remoto (1/2)

Activamos el aceso remoto arrancando el servicio xdm
/etc/init.d/xdm restart

Podemos acceder de 3 maneras diferentes :  Cliente VNC : hostname:5901  Konqueror : vnc://hostname:5901  Navegador WEB con soporte JAVA : http://hostname:5801

Acceso remoto (2/2)

http://hostname:5801

131

Práctica

Ejercicio 11-3: Administración remota (pag 11-6 del manual de prácticas)

132