Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Admin Is Trac Ion Linux 1
Admin Is Trac Ion Linux 1
IRONTEC - http://www.irontec.com
Antes de nada...
GNU GPL Linux Software Libre Kernel GNU/Linux Distribucin Linux Debian (K)Ubuntu KDE Gnome Emule
2
Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>
Paquete
Nuestra distro
Debian
Qu es Debian?
Sistema operativo libre desarrollado por la comunidad. Conjunto de programas bsicos y utilidades. Utiliza el ncleo Linux (el corazn del sistema operativo). Herramientas bsicas Proyecto GNU -> GNU/Linux. Versin estable de Debian. Probada y testeada a conciencia. ptima para un servidor en produccin. Versiones de desarrollo y experimentacin.
Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>
Debian Sarge
Debian
http://www.debian.org/social_contract
Debian
Desde CD Net-Install:
http://www.us.debian.org/CD/netinst/
Durante la instalacin:
Kernel 2.6 (opcin linux26). Red por DHCP. Repositorios externos por http. Particionamiento (dependiendo del disco duro):
/ -> Ext3 4GB /var -> Ext3 6GB /home -> Ext3 40GB swap -> 1GB
Introduccin a GNU/Linux
Introduccin a GNU/Linux
Introduccin a GNU/Linux
GNU/Linux
Herramientas GNU + Linux (ncleo). Compatible con UNIX (GNU's Not UNIX). Sistema multiusuario y multitarea.
Bash
Introduccin a GNU/Linux
Shells
10
Introduccin a GNU/Linux
Comandos
Manejo del sistema de ficheros: ls,cd,cp,mv,rm, mkdir,rmdir... Informacin sobre ficheros: cat,more,less,file... Busquedas: find,whereis,locate... Filtros: grep,sed,cut,tr... Usuarios y grupos: id,whoami,su,sudo... Permisos: chmod,chown,chgrp... Otros:date,tar,gzip,echo...
11
Introduccin a GNU/Linux
Tuberas
Metes crudo por 0 (STDIN), consigues gasolina por 1 (STDOUT) y bastantes residuos por el desage 2 (STDERR).
12
Introduccin a GNU/Linux
Tuberas
13
Introduccin a GNU/Linux
Tuberas
14
15
Shell Scripts
Script = Guin Tareas repetitivas se pueden agrupar en un guin y ejecutarse automticamente (Batch Processing).
Es sencillo ejecutar 4 comandos para crear un buzn de correo. No lo es tanto para crear 20.000 buzones. Es sencillo hacer un bucle que se repita 20.000 veces ;-)
16
Shell Scripts
Con #! en la primera lnea indicamos quin debera interpretar el resto de comandos (/bin/sh). Posteriormente escribimos los comandos separados por saltos de lnea.
17
Shell Scripts
Variables
Una variable tiene un nombre y un valor, y sirve para dotar de dinamismo a nuestros scripts:
FECHA=15/07/2004 echoHoyes$FECHA
18
Shell Scripts
Variables de entorno
Al arrancar una shell, ya hay muchas variables definidas, son las variables de entorno.
19
Shell Scripts
Variables: interactividad
Es posible leer del usuario el valor de una variable, dotando a nuestros scripts de interactividad. cathola.sh
#!/bin/sh echoDimetunombre: readNOMBRE echoHola$NOMBRE,encantadodeconocerte
20
Shell Scripts
Variables: argumentos
Es posible pasar los parmetros o argumentos que queramos y utilizarlos dentro del script. catnombre.sh
#!/bin/sh echoNombre:$1 echoPrimerApellido:$2 echoSegundoApellido:$3
21
Shell Scripts
Variables: argumentos
22
Shell Scripts
$#: nmero de argumentos que nos han pasado. $*: todos los argumentos. $* = $1 $2 $3... $@: todos los argumentos. $@ = $1 $2 $3... $_: comando anteriormente ejecutado. $$: PID del propio proceso shell.
23
Shell Scripts
24
Shell Scripts
(ojoescaparoperadores!)
25
Shell Scripts
Condiciones: test []
test$NOMBRE==Juan (==, !=, >, <, >=, <=) test$DINEROeq1000 (-eq, -ne, -gt, -lt, -ge, -le) testf/etc/passwd (-f, -d, -l, -r, -w, -x)
Modifican el valor de $?
cero = verdadero no cero = falso
26
Shell Scripts
27
Shell Scripts
if. Ejemplo:
iftest$NOMBRE==Juan then echoHolaJuanin,qutal? eliftest$NOMBRE==Pedro then echoPedreteee,cuntotiempo! else echoNoteconozco fi
28
Shell Scripts
29
Shell Scripts
case. Ejemplo:
case$NOMBREin Juan)echoHolaJuanin,qutal? ;; Pedro)Pedreteee,cuntotiempo! ;; *)echonoteconozco; esac
30
Shell Scripts
31
Shell Scripts
while. Ejemplo:
N=1 while[$Nlt100] do echoRepitoestafrase,yavoy$Nveces N=$(expr$N+1) sleep1#Esperamos1segundo done
32
Shell Scripts
33
Shell Scripts
34
Shell Scripts
for: ejecucin repetitiva asignando a una variable de control valores de una lista. Sintaxis:
forVARIABLEinLISTA do comandos done
35
Shell Scripts
for. Ejemplo:
forNinSopaCarnePandeajo do echoHoycomemos$N done
36
Shell Scripts
for: la LISTA define la separacin de cada elemento por el valor de la variable IFS (que por defecto vale \t\n). Ejemplo:
IFS=: echoDirectoriosenelPATH... forDIRin$PATH do echo$DIR done
37
Shell Scripts
38
Shell Scripts
select: muestra las opciones especificadas en LISTA y asigna a VARIABLE la opcin escogida. Sintaxis:
selectVARIABLEinLISTA do comandos done
39
Shell Scripts
select: Ejemplo:
selectOPCIONinDonerKebabPizza do case$OPCIONin DonerKebab)echoMmmm... break;; Pizza)echoSlurppp! break;; *)echoNosqueseso esac done
40
Shell Scripts
function
Podemos modularizar los scripts agrupando tareas en funciones. Es necesario que una funcin est definida ANTES de que sea llamada. Dentro de una funcin, $1, $2, $3, etc. sern los parmetros pasados a la funcin, no al script en s.
41
Shell Scripts
function. Ejemplo:
#!/bin/sh functionsuma { echo$(expr$1+$2) } suma46 suma3234
42
Shell Scripts
source, .
43
Shell Scripts
Es posible mejorar el aspecto de nuestros mens y opciones ms all de read y select usando herramientas como dialog, whiptail, Xdialog, gdialog o kdialog. Son bastante similares y sencillas de utilizar. Son capaces de generar cajas de texto, dilogos de peticin de texto o contraseas, mens, barras de progreso, etc.
44
Shell Scripts
dialog
45
Shell Scripts
dialog
YesNo:
dialogtitle"Pregunta"backtitle"CursodeBash Shell"yesno"\nEstasaprendiendoalgo?"760 RESPUESTA=$? case$RESPUESTAin 0)echo"Bien!";; 1)echo"Mal!";; 255)echo"Salir[ESC]";; esac
46
Shell Scripts
dialog
InputBox y PasswordBox:
dialogtitle"Creaciondeusuarios"inputbox"Nombre deusuario"002>/tmp/dialog.$$ USUARIO=$(cat/tmp/dialog.$$) dialogtitle"Creaciondeusuarios"passwordbox "Clave"002>/tmp/dialog.$$ CONTRASENYA=$(cat/tmp/dialog.$$) rm/tmp/dialog.$$
47
Shell Scripts
dialog
Menu:
dialogtitle"Creaciondeusuarios"menu"Grupos"00 30root100users5audio2> /tmp/dialog.$$ GRUPOS=$(cat/tmp/dialog.$$) rm/tmp/dialog.$$
48
Shell Scripts
dialog
49
Shell Scripts
Todo lo anterior se puede hacer con el resto, con cambios mnimos en la sintaxis:
whiptail: ncurses, aspecto mejorado Xdialog: widgets X simples gdialog: GNOME kdialog: KDE
50
Tareas peridicas
cron
El demonio cron permite la ejecucin programada de procesos, scripts o simples comandos. Cron mira cada minuto si tiene que lanzar algn proceso y en caso afirmativo lo lanza. No se puede planificar una ejecucin de forma ms precisa. Cada usuario tiene su tabla de planificacin (crontab) aunque tambin existen una tabla de planificacin global del sistema (/etc/crontab) y una serie de directorios especiales.
51
Tareas peridicas
cron
Ficheros de informacin de cron. Los ficheros de cron tienen una sintaxis especial y son los siguientes:
/etc/crontab: Fichero de cron del sistema. /etc/cron.d/: Directorio para que paquetes puedan meter ficheros de cron. fichero de cron de cada usuario:
No se ven (/var/spool/cron...). No es necesario indicar el usuario que sobre el que se ejecutar, ya que pertenecen a un usuario concreto. Se edita con crontabey se muestra con crontabl.
52
Tareas peridicas
cron
Nota: Tambin puede haber lneas al principio con declaracin de variables y comentarios (#). Ms info (man5crontab).
Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>
53
Tareas peridicas
cron
54
Tareas peridicas
cron
55
Tareas peridicas
cron
Directorios especiales:
/etc/cron.daily/ /etc/cron.hourly/ /etc/cron.monthly/ /etc/cron.weekly/
Los ficheros ejecutables que metamos en esos directorios se ejecutarn en su momento por el usuario root. NO DEBEN SER FICHEROS DE CRON, sino scripts o programas.
56
57
Proceso de arranque
La BIOS busca un dispositivo de inicio (disco duro, CDROM,..) y pasa el control al MBR (512 bytes). Se carga el gestor de arranque (instalado en MBR). Se carga el kernel. Se monta el sistema de ficheros raiz (/). Se inicia el init (el abuelo de todos los procesos). Se lee el archivo /etc/inittab. Se ejecutan los scripts indicados por el nivel de ejecucin de arranque.
58
Gestores de arranque
LiLo
LILO (Linux Loader) es un gestor de arranque capaz de arrancar diferentes sistemas operativos en diferentes particiones y discos duros. Normalmente se instala en el MBR (master boot record) del disco duro principal. El archivo de configuracin en Debian GNU/Linux es: /etc/lilo.conf Siempre que se realice un cambio en la configuracin hay que ejecutar 'lilo' para que se escriba el sector de arranque de nuevo.
59
Gestores de arranque
LiLo
60
Gestores de arranque
LiLo
61
Gestores de arranque
Grub
Grub (Grand Unified Bootloader) es un gestor de arranque capaz de arrancar diferentes sistemas operativos en diferentes particiones y discos duros. Normalmente se instala en el MBR (master boot record) del disco duro principal. El archivo de configuracin en Debian GNU/Linux es: /boot/grub/menu.lst No es necesario ejecutar ningn comando para que se tengan en cuenta los cambios realizados.
62
Gestores de arranque
Grub
Dispositivos
(dispositivo[particion][,letra_particion])
(hd0) (fd0) (hd0,1) #discomaestroIDEprimario #disquetera #particin2delmaestroIDE0
Ficheros
Es necesario indicar la ruta completa
(hd0,0)/boot/grub/menu.lst
63
Gestores de arranque
Grub
64
Niveles de Ejecucin
nivel 0: estado de parada (halt) nivel 1: monousuario nivel 2, 3 y 5: multiusuario nivel 4: no tiene un uso especfico nivel 6: estado de reinicio (reboot)
65
Niveles de Ejecucin
Init
Sintaxis
id:nivel:accion:proceso
id: nombre de la lnea nivel: nivel o niveles en los que la lnea debe procesarse accion
wait(espera),once(solo1vez),respawn(rearranca unavezfinalizado),off(ignoralalnea)
66
Niveles de Ejecucin
Init
67
Cuando la mquina se inicia en un nivel de ejecucin N se ejecutan todos los scripts que empiecen por 'S' o 'K' contenidos en /etc/rcN.d/ con las siguientes particularidades. Si el nombre del script comienza por S se le pasa como parmetro 'start'. Si el nombre del script comienza por K se le pasa como parmetro 'stop'. Normalmente todos estos ficheros de /etc/rcN.d son enlaces a scripts localizados en /etc/init.d/
68
updaterc.d
Herramienta para configurar automgicamente los enlaces a los scripts de init tipo System V que estn en /etc/rcN.d/[S|K]NNnombre y que apuntan a los scripts /etc/init.d/nombre. Ejemplos
#updaterc.d3waredefaults #updaterc.dscriptstart9012345.stop2006.
69
Gestin de Paquetes
70
Paquetes .deb
71
Paquetes .deb
APT resuelve dependencias. Al instalar un paquete puede que ste dependa de otro u otros para su funcionamiento. APT detecta esta dependencia e instala los paquetes necesarios. Funcionamiento:
Se crea una base de datos local con la informacin de los paquetes instalables. Para crear esta base de datos hace falta un fichero con las fuentes (/etc/apt/sources.list) de donde bajarse la informacin. Esta base de datos local hay que actualizarla peridicamente (aptgetupdate)
72
Paquetes .deb
Funcionamiento (cont.):
Cuando se solicita la instalacin de un paquete, APT comprueba primero en el sistema que el paquete no est ya instalado y posteriormente comprueba en la base de datos local si el paquete est disponible. Si el paquete est disponible entonces se conecta a la fuente en cuestin para bajarse el paquete (archivo .deb). Estos paquetes bajados se guardan en /var/cache/apt/archives Posteriormente se procede a la instalacin y configuracin automtica del paquete. Si el paquete necesita datos de configuracin nos los pedir el APT.
73
Paquetes .deb
74
Paquetes .deb
75
Paquetes .deb
aptget: interfaz para instalar y desinstalar paquetes as como para la generacin y actualizacin de la base de datos local de paquetes.
aptgetupdate: Actualiza la base de datos local de paquetes. aptgetupgrade: Actualiza todos los paquetes instalados que pueda (solo si hay versiones nuevas disponibles) aptgetdistupgrade: Actualiza todos los paquetes que pueda incluso cuando la actualizacin implique la instalacin de paquetes nuevos. aptgetinstallpaquete1paquete2...: Instala paquetes
76
Paquetes .deb
aptget
aptgetremove[purge]paquete1paquete2 ... : Desinstala paquetes. aptgetclean: elimina archivos descargados en /var/cache/apt/archives (para liberar espacios, NO desinstala los paquetes).
77
Networking en GNU/Linux
Networking
78
Configuracin de la red
79
Configuracin de la red
80
Configuracin de la red
Una misma red fsica puede albergar distintas redes con distinto direccionamiento y rango.
$ifconfigeth0:1192.168.1.123netmask255.255.255.0
81
Configuracin de la red
/etc/hosts: realiza una resolucin directa de nombre a IP sin realizar consulta DNS. Normalmente este fichero se mira antes de preguntar al servidor DNS (slo para consulta de tipo A). Para asegurarnos que el sistema pregunte al DNS o al fichero '/etc/hosts' para resolver nombres de host hay que mirar el fichero '/etc/nsswitch.conf'
82
Configuracin de la red
Configuracin para el arranque: en /etc/network/interfaces definimos la interfaz como inet dhcp Configuracin manual:
83
Nota: Si no hay ping puede que el trfico ICMP est filtrado por algn firewall.
84
NO es un protocolo seguro (SSH s). Se utiliza tambin para comprobar estado de servicios remotos. Ejemplo:
$telnetwww.euskalnet.net80 Connectedtoeui3h.euskaltel.es. Escapecharacteris'^]'. elservidorwebfunciona!
85
Comando potente que permite mostrar casi toda la informacin de la configuracin TCP/IP de la mquina (man netstat). Ejemplos:
netstatatup#muestratambienprocesos netstata#muestratodaslasconex. netstata|grepLISTEN netstata|grepESTABLISHED netstatnrv#muestratabladerutas
86
iptraf:
87
netcat(nc): navaja suiza de red Capaz de funcionar como cliente, como servidor, etc.
telnet127.0.0.180 Trying127.0.0.1... Connectedto127.0.0.1. Escapecharacteris'^]'. GET/ <!DOCTYPEHTMLPUBLIC"//W3C//DTDHTML3.2 Final//EN"> <html> <head> ...
Cliente/Servidor:
nclp5000 catfichero|nc192.168.1.15000
88
Gestin de Incidencias
89
Herramientas de monitorizacin
top
Herramienta presente en todos los Unix que muestra informacin de forma continua (cada 3s.) sobre el estado del sistema, incluyendo la lista de procesos que ms CPU estn usando. Los procesos pueden ser ordenados en base a:
Recursos: utilizacin de CPU, memoria... Usuarios: uid, gid... Procesos: prioridad, estado...
90
Herramientas de monitorizacin
top
91
Herramientas de monitorizacin
htop
Herramienta similar a top pero con soporte para desplazamiento vertical entre los procesos. Permite gestionar los procesos (reiniciarlos, matarlos..) sin tener que conocer su PID.
92
Herramientas de monitorizacin
htop
93
Herramientas de monitorizacin
slmon
Herramienta que permite monitorizar el rendimiento de un sistema en tiempo real. Los recursos que monitoriza son:
Carga de CPU Memoria Interfaces de red N de usuarios logueados Sistemas de ficheros Procesos
94
Herramientas de monitorizacin
slmon
95
Herramientas de monitorizacin
iostat
%user:Uso de CPU en nivel de usuario. %nice:Uso de en nivel de usuario con prioridad. %system:Uso de CPU a nivel de sistema (kernel). %iowait:Porcentaje de tiempo esperando peticiones I/O de disco. %steal:Tiempo de espera involuntario por uso de varios CPU's (virtuales). %idle:Tiempo de espera sin recibir peticin I/O de disco.
96
Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>
Herramientas de monitoriazin
potion
potioneth0
97
Diskette de arranque preparado de antemano + /sbin/lilo CD 1 de Debian GNU/Linux con opcion rescue, rescbf24 o similar: Live CD (Knoppix o similar) + montar disco + chroot + /sbin/lilo (ms complicada)
98
99
Referencias
Bash Scripting:
http://www.tldp.org/LDP/abs/html/
Gestores de arranque:
http://www.gnu.org/software/grub/manual/html_node/ http://www.tldp.org/HOWTO/LILO.html
Gestin de paquetes:
http://www.debian.org/doc/manuals/apt-howto/
Administracin de redes:
http://www.faqs.org/docs/linux_network/
Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>
100
Licencia Copyleft
Para la elaboracin de este documento se han utilizado imgenes y documentos de otras personas como Eduardo Gonzlez de la Herran y Pablo Garaizar Sagarminaga entre otros. Este documento est protegido bajo la licencia Reconocimiento-Compartir-Igual 2.5 Espaa de Creative Common. http://creativecommons.org/licenses/by-sa/2.5/es/
Copyright2006Irontec<contacto@irontec.com> Sepermitelacopia,distribucin,usocomercialy realizacindelaobra,siempreycuandosereconozca laautoradelamisma,anoseaserqueseobtenga permisoexpresodelautor.
101