Está en la página 1de 132

SuSE Linux

Enterprise Server 10

Administración

Temario
1.- Instalación de SLES 10 7.- Inicio del sistema

2.- Sistemas de ficheros 8.- Manejo de software

3.- Seguridad y usuarios 9.- Copias de seguridad

4.- Configuración manual 10.- Sistema de


de la red impresión

5.- Procesos y servicios 11.- Acceso remoto

6.- Monitorización

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 Demonio (8) Demonio (7) Demonio (4)


(2)
Demonio (3)

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

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

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 nice/renice 0 defecto

39 min. 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 -> gnome-
system-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 Super-
daemon 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 5-


2 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 * * * * root rm -f /var/spool/cron/lastrun/cron.hourly
14 0 * * * root rm -f /var/spool/cron/lastrun/cron.daily
29 0 * * 6 root rm -f /var/spool/cron/lastrun/cron.weekly
44 0 1 * * root 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 : particionador de discos.
 fdisk -l /dev/hda : Muestra la tabla de particiones
actual

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
 En cuanto a los informes de consumo de CPU:
 %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)

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)
# uptime
10:58AM funcionando 3 days 21:53, 3 users,
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 Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 4316/portmap
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 5091/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 5223/master
tcp 0 0 127.0.0.1:1054 127.0.0.1:427 TIME_WAIT -
tcp 0 0 :::22 :::* LISTEN 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/syslog-
ng.conf a partir de /etc/syslog-
ng/syslog-ng.conf.in

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

 Si está habilitado, SuSEconfig genera el


fichero /etc/syslog-in/syslog-
in.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 Utilizado por ssh entre otros.

authpriv Utilizado por PAM (Pluggable Authentication Modules).

cron cron y at.

daemon demonios del sistema que no tienen su propia


categoría.
kern Todos los mensajes del kernel.

lpr demonio de impresión.

mail Sistema de correo.

news Sistema de news.

syslog Mensajes internos del propio syslog.

user Mensajes a nivel de usuario. Utilizado por login por ejemplo.

uucp Sistema UUCP.

local0-local7 Categorías disponibles para el usuario.

24
/etc/syslog-ng/syslog-ng.conf:
Priorities
 La prioridad da detalles sobre la urgencia del
mensaje
emerg El sistema no es usable (es demasiado tarde).

alert El administrador del sistema es requerido inmediatamente.

crit Condición crítica para el program que lo muestra.

err Error.

warning Mensajes que muestran desviaciones sobre el comportamiento normal.

notice Mensajes que describen estados normales del sistema que deben ser tenidos en cuenta.

info Mensajes puramente informativos.

debug 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)
 /var/log/audit/audit.log
 Log de AppArmor
 /var/log/cups/
 Directorio que almacena los logs del sistema de
impresión
 /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 # Si el fichero no existe no da error
notifempty # si está vacío no se rota
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
}
}

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
# who -H
NOMBRE LÍNEA TIEMPO COMENTARIO
root :0 2007-04-19 07:51
root pts/0 2007-04-19 08:12 (192.168.3.139)
root pts/1 2007-04-19 08:49 (192.168.3.139)
geeko pts/2 2007-04-19 10:09 (dhcp15.afina.es)

w
 Muestra usuarios actualmente logeados y carga
del sistema
# w
10:21:57 up 2:32, 4 users, load average: 0,00, 0,00, 0,00
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root :0 07:51 ?xdm? 1:34 2.44s /opt/gnome/bin/gnome-session
root pts/0 08:12 1:17m 0.65s 0.65s -bash
root pts/1 08:49 0.00s 0.48s 0.03s w
geeko pts/2 10:09 12:19 0.23s 0.23s -bash
 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 Name Tty Idle Login Time Where
geeko geeko pts/2 29 Thu 10:09 dhcp15.afina.es
root root *:0 - Thu 07:51
root root pts/0 1:34 Thu 08:12 192.168.3.139
root root pts/1 - Thu 08:49 192.168.3.139

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
root pts/0 192.168.3.139 Thu Apr 19 08:12 still logged in
root :0 Thu Apr 19 07:51 still logged in
reboot system boot 2.6.16.21-0.8-de Thu Apr 19 05:59 (04:50)
root pts/0 192.168.3.139 Wed Apr 18 05:06 - 05:06 (00:00)
geeko :0 Wed Apr 18 05:02 - down (10:27)
...

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 Puerto Último
at **Nunca ha entrado**
bin **Nunca ha entrado**
...
root pts/1 jue abr 19 08:49:58 +0200 2007
...
geeko pts/2 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 cargan los módulos
Se carga en memoria Initrd Initrd init modules
(initramfs) (initramfs) (antes linuxrc)

BIOS Boot Manager Se descarga Initrd


(GRUB) de memoria
(initramfs)
Si existe initrd,
continua la carga por
el.

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

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 PID TTY STAT TIME COMMAND
root 1 ? S 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
GRUB version 0.92 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the
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
Es posible shell
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
0 Apaga el sistema.
1 Modo monousuario, utilizado para resolver
problemas y mantenimiento

2 Multiusuario sin servicios de red.


3 Multiusuario con servicios de red.
4 No definido.
5 Multiusuario real con red y login gráfico.

6 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 device: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78)
eth0 configuration: eth-id-00:02:1b:f3:34:55 done
Shutting down service network . . . . . . . . . . . . . done.
Hint: you may set mandatory devices in /etc/sysconfig/network/config
Setting up network interfaces:
lo
lo IP address: 127.0.0.1/8 done
eth0 device: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 78)
eth0 configuration: eth-id-00:02:1b:f3:34:55
eth0 IP address: 192.168.1.145/24 done
Setting up service network . . . . . . . . . . . . . . done.

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: 2 3 5
# Default-Stop:
# Description: Configure the network interfaces and set up routing
### END INIT INFO

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.:
# chkconfig cron (estado por defecto en el nivel actual)
cron on
# chkconfig cron -l (listado de los estados por defecto en cada nivel)
cron 0:off 1:off 2:on 3:on 4:off 5:on 6:off
# chkconfig cron off (dedhabilitar servicio en todos los niveles)
# chkconfig cron -l
cron 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig cron on (dedhabilitar servicio en todos los niveles)
# chkconfig cron -l
cron 0:off 1:off 2:on 3:on 4:off 5:on 6:off
# chkconfig -l (listado del estado por defecto de cada servicio en cada nivel)
Makefile 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_init 0:off 1:off 2:off 3:off 4:off 5:off 6:off
SuSEfirewall2_setup 0:off 1:off 2:off 3:off 4:off 5:off 6:off
aaeventd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:on 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.de-
backup-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 9994 A84E DAE8 9C80 0ACA
uid SuSE Package Signing Key <build@suse.de>
sub 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
 Se pueden instalar paquetes a partir de una url
 rpm -ivh http://rpmfind.net/redhat/libpcap-0.4.i386.rpm

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: ethereal-
0.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 (sólo nombre del paquete)
glibc-2.2.5-213
 -qa: listar todos los paquetes instalados
# rpm -qa
filesystem-2002.9.2-56
gdb-5.3-57
aide-0.9-32
...
 -qf: Nos dice a que paquete pertenece un fichero
# rpm -qf /bin/cp
fileutils-4.1.11-107
 -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 /var/log/httpd/ssl_engine_log
missing /var/log/httpd/ssl_request_log
.....U.. /var/log/httpd/ssl_scache.dir
.....U.. /var/log/httpd/ssl_scache.pag
missing /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 Backup completo
Martes
miércoles
jueves
viernes
 Diferencial: Se hacen copias desde el
último backup completo
lunes Backup completo
Martes
miércoles
jueves
viernes

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 particiona-
miento 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:
#mt -f /dev/nst0 rewind

Para expulsar la cinta
#mt -f /dev/nst0 offline

Se recomienda trabajar con la compresión desactivada para
favorecer recuperaciones frente a errores. Para comprobar en
que modo se encuentra:
#mt -f /dev/st0 datacompression
Compression on

Para desactivar la compresión (activa por defecto)
#mt -f /dev/st0 datacompression off

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 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

Podemos especificar dispositivos :
 dd if=/dev/sda1 of=particion.arranque
(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
 Después de la instalación
 YaST->Hardware->Impresoras
 O yast2 printer desde un terminal

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
 LPD (Line Printer Daemon)

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

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
 Socket
 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://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

System V:
 lp -d cola fichero
 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
 System V:
 lpstat -o -p cola
 Si no se especifica ninguna cola se muestran
todas

96
Cancelación de trabajos
 Berkley:
 lprm -P cola nº_trabajo
 System V:
 cancel cola-nº_trabajo

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 ready
No entries

 Si la cola no va a estar disponible durante demasiado tiempo es


posible que convenga rechazar nuevos trabajos con
 /usr/sbin/reject cola
 Para activarla de nuevo
 /usr/sbin/accept cola
 Ej.:
#/usr/bin/reject lj4050
#lpr /etc/fstab
lpr: unable to print file: sever-error-notaccepting-jobs
No entries

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
 Para eliminar una cola de una impresora:
 lpadmin -p cola -r clase
 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 <Printer hplj4_1>


v1.1.23
Info
# Written by cupsd on Tue Apr 24 01:01:59
2007 Location

<DefaultPrinter hplj4> DeviceURI


ipp://192.168.13.129/printers/hplj4
Info LaserJet 4 on sles3072
State Idle
Location sles3072 computer
Accepting Yes
DeviceURI parallel:/dev/lp0
JobSheets none none
State Idle
QuotaPeriod 0
Accepting Yes
PageLimit 0
JobSheets none none
KLimit 0
QuotaPeriod 0
</Printer>
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
 Para restringir el acceso:
 lpadmin -p cola -u deny:geeko,@guest
 Para permtir imprimir a todos:
 lpadmin -p cola -u allow:all
 lpadamin -p cola -u deny:none

109
Restricción de acceso al
interfaz web
 El fichero  El tipo de autenticación
/etc/cups/cups.conf BasicDigest utiliza como
viene configurado para base de datos de
restringir el acceso al passwords el fichero
interfaz web de /etc/cups/passwd.md5
administración de  Inicialmente no hay definido
CUPS ningún usuario
<Location /admin>  Para generar este fichero y
AuthType BasicDigest
AuthClass Group
añadir el primer usuario
AuthGroupName sys al grupo sys:
Order Deny,Allow lppasswd -a root -g sys
Deny From All
Allow From 127.0.0.1
 El nombre del usuario no
</Location> 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 K-2

Hola 89sdiwew Hola


caracola erwe4554 caracola
... ... ...

K-1 K-2

Hola 89sdiwew ????????


caracola erwe4554 ????????
... ... ????????

K-1 K-1

115
Algoritmos de clave pública (2/4)

K-1 K-2

Hola 89sdiwew Hola


caracola erwe4554 caracola
... ... ...

K-2 K-1

Hola 89sdiwew ????????


caracola erwe4554 ????????
... ... ????????

K-2 K-2

Algoritmos de clave pública (3/4)

Clave Clave
Privada Pública

Hola 89sdiwew Hola


caracola erwe4554 caracola
... ... ...

Clave Clave
Privada Pública

Hola 89sdiwew Hola


caracola erwe4554 caracola
... ... ...

Clave Clave
Pública Privada

116
Comparación de algoritmos de
encriptación

DES 56 bits
3DES 168 bits
Clave
simétrica IDEA 128 bits (uso no comercial libre

BLOWFISH 488 bits (variable)


AES 128,192,256 bits

Clave
Pública
RSA/DSA 512, 1024, 2048
bits

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 affg#12!5g3U8…
como aparece...

N. Cte. de caracteres

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
affg#12!5g3U8… 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 Servidor

El cliente abre 1 Puerto 22


la conexión

Envió de las Host Key


Comprueba si la Host Key es 2 & Server Key Públicas
correcta en
~/.ssh/known_hosts 3

Genera un número
4 Sólo el servidor es capaz
aleatorio de 256 bits(clave
simétrica) y lo de descifrar el número
cifra usando las claves aleatorio y sólo él tiene la
5
pública del servidor 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 Servidor

El cliente abre 1 Puerto 22


la conexión

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 Como en SSH1, la
comunicación se cifra
5 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
o
 ssh geeko@brutus.example.com

Tunel para aplicaciones gráficas
 ssh -X brutus.example.com
 Ejecución de comandos remotos
 ssh -l root 192.168.30.29 shutdown -h now
 Copia de ficheros remotos
 scp /etc/passwd geeko@brutus.exa.com:/tmp

Práctica

 Ejercicio 11-1: Utilización de ssh (pag 11-2 del


manual de prácticas)

124
Comandos del Servidor

Comando Descripción
sshd Agente SSH. El script de inicio se llama
/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
 Autenticación RSA basada en el Host
 (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 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 pregunta-
respuesta que puede ser llevado a cabo
automáticamente por ssh-agent
 Autenticación por Clave
 (sshd_config: PasswordAuthentication)
 Autenticación vía contraseña Unix. La
transferencia de la clave está cifrada

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

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:tux-
~/.ssh/authorized_keys
pubkey

...

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 ssh-
agent y ssh-add
 Si queremos que funcione en el entorno
gráfico hay que añadir dos variables en el
fichero ~/.xsession
 usessh=“yes”
tux@earth > ssh-agent bash
 sshagent=“yes”
tux@earth > ssh-add .ssh/id_rsa

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