GNU/Linux Centos 5.1
Miguel Ángel Nieto <[email protected]>Irontec – Internet y Sistemas sobre GNU/Linux
Irontec – Curso básico Linux
2
Objetivos del curso
Dominar las distintas posibilidades de GNU/Linux dentro de la empresa.
Trabajar tanto desde el entorno de consola como desde el entorno de escritorio.
Administración básica de un sistema GNU/Linux basado en RedHat.
Y por encima de todo, aprender a buscar la información que necesitamos para solventar los posibles problemas.
Irontec – Curso básico Linux
3
Antes de nada...
GNU
Debian
LinuxSoftware LibreGPL
Kernel
Distribución Linux
(K)UbuntuKDEGnome Emule
GNU/Linux
Paquete
Irontec – Curso básico Linux
4
Introducción
● Programas informáticos● Tipos de Software
– Software privativo– Shareware– Freeware– Software libre
Irontec – Curso básico Linux
5
¿Qué es eso del Software Libre?
1Introducción
Irontec – Curso básico Linux
6
4 Libertades:● Libertad 0: Libertad para ejecutar el
programa para cualquier propósito.● Libertad 1: Libertad para estudiar y
adaptarlo a las necesidades.● Libertad 2: Libertad para redistribuir copias.● Libertad 3: Libertad para mejorar el programa
y publicarlo con esas modificaciones.
1Introducción
Irontec – Curso básico Linux
7
Introducción
● Inicios del Software libre– Richard Stallman (1983 – Funda GNU Ver.7)– Linus Torvalds (1991 – Crea Linux)– 1992 – GNU/Linux (Ver. 7)
Irontec – Curso básico Linux
8
Introducción1Conceptos Generales sobre GNU Linux (I)
➔ ¿Qué es GNU ?GNU is not UNIX, proyecto iniciado por Richard
Stallman (1983). Objetivo: Sistema totalmente libre. Apoyado en la licencia GPL. Kernel: HURD (fracaso).
➔ ¿Qué es Linux ? Kernel liberado por Linus Torvalds en 1991 con
licencia GPL. Arquitectura Mononuclear, multiplataforma (I386, AMD64, PowerPC, ...). Uso: Servidores, estaciones de trabajo, sistemas empotrados...
Irontec – Curso básico Linux
9
Introducción1Conceptos Generales sobre GNU Linux (II)
➔ ¿Qué son Redhat, Debian, SuSE ... ?• Son “Distribuciones” de GNU Linux. • Diferentes formas de “empaquetar” el núcleo, las
herramientas GNU y el resto de software (libre o no).
• Gestionadas por:• empresas• grupos de personas. • organismos ...
Irontec – Curso básico Linux
10
Introducción1Distribuciones GNU Linux (I)
➔ Debian: Proyecto fundado por Ian Murdock en 1993, proyecto con organización jerárquica totalmente horizontal. Objetivo principal: competir con las distribuciones comerciales para poder garantizar el exito de GNU Linux.
➔ Redhat: Empresa fundada en 1994 por Marc Ewing, ofrece soporte técnico profesional y garantías de escalabilidad. Plataforma lider en el mercado.
Irontec – Curso básico Linux
11
Introducción1Distribuciones GNU Linux (II)
➔ Mandrakesoft: Nacida en 1998, con objetivo principal: instalación y uso diario sencillos. Crecimiento espectacular en 2 años (3 a 100 empleados).
➔ SuSE: Proyecto de empresa aleman, iniciado en 1993. Primeras versiones basadas en Slackware. En la actualidad distribución totalmente propia. Ofrecen soporte profesional de calidad, similar al de RedHat.
Irontec – Curso básico Linux
12
Introducción1Distribuciones GNU Linux (III)
➔ Slackware: Distribución desarrollada por Patrick Volkerding. Primera versión publicada en Abril de 1993. No ofrece soporte técnico profesional directo.
➔ Knoppix: Es el Sistema Live (ejecución desde CDRom sin instalación) más popular. Soporta prácticamente todos los dispositivos hardware del mercado. Muy popular como método de iniciación a GNU Linux.
Irontec – Curso básico Linux
13
Introducción1Distribuciones GNU Linux (IV)
➔ Ubuntu: Distribución basada en Debian, centrada en el sistema de escritorio (aunque también dispone de versión servidor). Nueva versión cada 6 meses.
➔ CentOS: Distribución basada en el código fuente de Red Hat. Con cada nueva versión enterprise de RedHat, Centos descarga el código, lo compila y crea su propia versión. Es 100% compatible a nivel binario con RedHat.
Irontec – Curso básico Linux
14
Introducción1Versiones
2.4.19 2.5.3
Versión
Sub Versión: Par indica estableImpar indica inestable
Release
●En la práctica, se denomina versión a todo el conjunto.
Irontec – Curso básico Linux
15
Situación de GNU/Linux
1 Introducción
Irontec – Curso básico Linux
16
Introducción1Situación real de GNU LinuxLas estadísticas no siempre son muy objetivas, pero se calculan las siguientes cifras:
➔ Servidores: Prácticamente todos los servidores potentes se ejecutan sobre un derivado de UNIX (GNU Linux, *BSD...).
➔ Equipos de escritorio: Existencia de numerosos gestores de ventanas (KDE, GNOME, ...) apariencia estética y usabilidad muy mejorada.
➔ Dispositivos empotrados: GNU Linux está presente en numerosos dispositivos Wifi (802.11b/g) (Cisco Linksys WRTG54G, SMC), en teléfonos celulares
Irontec – Curso básico Linux
17
Introducción1Situación real de GNU Linux en el panorama empresarial➔Soporte: La vía principal de ingreso en el mundo de GNU Linux es el soporte. Servicios sobre GNU Linux. El desarrollo no copa el mercado como en otros sistemas operativos (“La rueda ya está inventada”).➔Apoyo de grandes empresas: Entre otras IBM se ha posicionado en favor de GNU Linux, afrontando directamente demandas de SCO UNIX sobre posible violación de copyright de Linux.➔Postura de Microsoft:
2001:“Proyecto hecho por aficionados, no es serio”2004:“Es nuestra principal amenaza”
Bill Gates
Irontec – Curso básico Linux
18
Introducción1Situación real de GNU Linux en el panorama empresarial: Desarrollo y sistemas
➔Desarrollo (web): La punta de la lanza reside en soluciones LAMP (Linux Apache MySQL, PHP):
➔ Pros: Rapidez, seguridad, integración con prácticamente todos los protocolos y comunidad de desarrolladores muy activa (numerosas librerías y código reutilizable).
➔ “Contras”: Integración con soluciones MS Windows
Irontec – Curso básico Linux
19
Introducción1Situación real de GNU Linux en el panorama empresarial: Desarrollo y sistemas
➔Sistemas: Es el punto fuerte de GNU Linux: estabilidad, seguridad, escalabilidad e integración prácticamente total:
➔ Soluciones de seguridad (VPNs, Ids, Firewalls, ...)➔ Soluciones de tiempo real (sistemas de
monitorización, ...)➔ Routing Avanzado (OSPF, BGP, VRRP, ....)➔ Servidores: DNS (Bind9), Web (Apache), FTP
(Proftpd), Netbios (Samba) ....
Irontec – Curso básico Linux
20
EJERCICIO
● Visitar los siguientes enlaces:
● http://www.kernel.org● http://gnu.org● http://freshmeat.net● http://www.centos.com
● http://es.wikipedia.org/wiki/Software_libre
Irontec – Curso básico Linux
21
Instalación de CentOS
Instalación de CentOS
Irontec – Curso básico Linux
22
Instalación de CentOS
● Se puede descargar CentOS desde su página web. http://www.centos.org
● Se puede descargar en distintos Cds o en un solo DVD.
● La última versión estable es 5.● Para instalarlo es necesario disponer de espacio en
el disco duro y que el ordenador pueda arrancar desde el lector de Cds.
● La instalación es del estilo siguiente-siguiente... finalizar :)
Irontec – Curso básico Linux
23
Instalación de CentOS
● Comprobación del medio.
Irontec – Curso básico Linux
24
Instalación de CentOS
● Selección de idioma.● Se aplicará tanto al entorno de consola como al
entorno de escritorio.
Irontec – Curso básico Linux
25
Instalación de CentOS
● Selección de idioma del teclado.
Irontec – Curso básico Linux
26
Instalación de CentOS
● Particionado del disco duro.● Es necesario que el disco duro esté vacío o que en
caso contrario tengamos una partición vacía en la que realizar la instalación.
Irontec – Curso básico Linux
27
Instalación de CentOS
● Selección y creación de particiones.● Como mínimo debe existir / y swap.
● ¿Qué problemas tiene el uso exclusivo de /?
Irontec – Curso básico Linux
28
Instalación de CentOS
● Sistemas de ficheros– VFAT– Ext2– Ext3– RaiserFS– XFS– y muchos otros...
Irontec – Curso básico Linux
29
Sistemas de ficheros en Unix
– En un sistema Unix todo son archivos: memoria física, ratón, modems, teclado...
– Filosofía de diseño de grán éxito y potencia, aunque también peligrosa: un simple error de permisos puede permitir modificar todo un disco duro.
– Tipos de archivos:● ficheros planos● directorios● ficheros especiales (dispositivos)
– orientados a carácter– orientados a bloque
Irontec – Curso básico Linux
30
Sistemas de ficheros en Unix
Desplazándose por el sistema de ficheros
Irontec – Curso básico Linux
31
Sistemas de ficheros en Unix
Estructura de los Sistemas de Ficheros– Estándar de la Jerarquía de Ficheros (FHS)
● Se encarga de definir los directorios principales y sus contenidos en Linux y otros sistemas Unix.
● Mayor facilidad en el uso de distintos sistemas Unix.
Irontec – Curso básico Linux
32
Instalación de CentOS
● Árbol típico de directorios de un sistema GNU/Linux (ls -p /)– bin/ – dev/ – home/ – lost+found/ – proc/ – sbin/ – usr/– boot/ – etc/ – lib/– mnt/ – root/ – tmp/ – var/
Irontec – Curso básico Linux
33
Instalación de CentOS
● /sbin– Contiene los binarios esenciales para que
funcione el sistema.– Incluye los programas para la administracion,
configuracion del hardware y mantenimiento.– find, lilo, fdisk, init, ifconfig etc– /usr/sbin contiene los binarios para el
administrador pero no esenciales para el sistema.
– Este directorio es solo accesible por ROOT
Irontec – Curso básico Linux
34
Instalación de CentOS
● /bin– Contiene los comandos imprescindibles para el
usuario– Accesibles para root como para los usuarios no
privilegiados– bash, csh, cp, mv, rm, cat, ls...– /usr/bin contiene los binarios para el usuario
pero que no son imprescindibles.
Irontec – Curso básico Linux
35
Instalación de CentOS
● /boot – Contiene el kernel y lilo deja aquí las copias de seguridad del sistema de arranque
● /dev – TODO EN LINUX ES UN FICHERO– /dev/hda1 Particion 1 del disco duro 1 master– /dev/cdrom CDROM– ...
● /etc – Ficheros de configuración del sistema– /etc/X11/xorg.conf – Sistema X– /etc/resolv.conf– /etc/lilo.conf
Irontec – Curso básico Linux
36
Instalación de CentOS
● /home – Directorios de los usuarios del sistema (Linux es multiusuario)– /home/username
● Archivos del usuario● Configuraciones específicas del usuario
● /lib – Librerías compartidas del sistemas● /lost+found – Directorio donde se dejan los
archivos que FSCK recuperara después de una caída del sistema. (Sistemas de ficheros sin Journaling)
Irontec – Curso básico Linux
37
Instalación de CentOS
● /mnt – Punto de montaje genérico donde se montarán los dispositivos.
● /proc – Directorio especial que hace las funciones con interfaz con el nucleo
● /root – Es el directorio home de root● /tmp – Es un directorio temporal en el que
cualquier usuario puede escribir. Se borra despues de un reinicio
● /var – Directorio donde se guardan los datos variables como el correo, colas de impresion y logs...
Irontec – Curso básico Linux
38
Instalación de CentOS
● /usr – Directorio donde se encuentran todos los programas– /usr/src/linux – Kernel de Linux– /usr/doc – Documentación de los programas
Irontec – Curso básico Linux
39
Instalación de CentOS
● Grub es el gestor de arranque. Se encargará de arrancar CentOS y cualquier sistema operativo que detecte.
Irontec – Curso básico Linux
40
Instalación de CentOS
● Configuración de la red Ethernet. Puede ser por DHCP o con IP fija.
Irontec – Curso básico Linux
41
Instalación de CentOS
● Especificar contraseña para root. El usuario root es el Administrador de la máquina y tiene permiso para todo.
Irontec – Curso básico Linux
42
Instalación de CentOS
● Ahora toca seleccionar que deseamos instalar en el sistema. Por defecto se instalará el escritorio Gnome.
Irontec – Curso básico Linux
43
Instalación de CentOS
● Ya está, instalación de CentOS finalizada. Ya nos podemos autodenominar hackers.
Irontec – Curso básico Linux
44
Configuración inicial
● Con el primer inicio del sistema accederemos a un asistente de configuración.
● Se desactivará el Cortafuegos y SELinux para evitar problemas durante el curso.
● Crearemos un usuario sin privilegios.
Irontec – Curso básico Linux
45
EJERCICIO
● Navegar por el sistema de ficheros y comprobar que lo que vemos se ajusta o no al mapa.
● Comprobar la versión del núcleo y ver en la web si existe una versión nueva. ¿Se podrá actualizar?
Irontec – Curso básico Linux
46
Comandos básicos
Comandos básicos
Irontec – Curso básico Linux
47
Introducción a GNU/Linux
● Shells– Existen muchas shells: sh,csh,ksh,bash...– Entorno de trabajo:
● Case sensitive: sensible a mayúsculas (ECHO != echo).● Sintáxis: comando arg1 arg2... argn● Si un programa no está en el PATH: ./programa● Prompt:
– $: usuario normal– #: usuario administrador (root)
Irontec – Curso básico Linux
48
Comandos básicos
Comandos para el manejo del sistema de ficheros– ls (lista contenido de directorios)– cd / pwd (cambia /muestra la ruta de directorio)– touch (crea fichero vacío o actualiza existente)– cp / mv / rm (copia / mueve/ elimina fichero)– mkdir / rmdir (crea / elimina directorio)– man / info (ayuda sobre comandos)– echo (muestra una línea de texto)– date / cal (muestra la hora del sistema)– file (muestra el tipo de fichero)– halt / reboot (apaga el sistema)– sleep (cuentra atrás)
Irontec – Curso básico Linux
49
Comandos básicos
Comandos para el manejo del sistema de ficheros (II)
linux:~$ ls -lha /
linux:~$ pwd
linux:~$ cd ../../etc
linux:~$ touch /home/linux/fichero
linux:~$ date +%d/%m/%y
linux:~$ cp -a /var/log /backup/
linux:~$ mkdir -p /tmp/prueba/creacion/directorio
linux:~$ rm -rf /home/linux/carpeta/
Irontec – Curso básico Linux
50
Comandos en GNU/Linux
Comandos para búsqueda de archivos
linux:~$ find / -name passwd
linux:~$ locate halt
linux:~$ whereis cat adduser
linux:~$ which grep
linux:~$ whereis cd
linux:~$ find ~/ -type f -atime +5 -exec rm {} \;
Irontec – Curso básico Linux
51
EJERCICIO
● Ir a tmp. ● Crear un fichero llamado prueba. ● Renombrarlo a nominas. ● A continuación copiar nominas a nuestra home. ● Una vez hecho, buscamos en todo el disco duro los
ficheros con nombre nominas y los borramos.
Irontec – Curso básico Linux
52
EJERCICIO
● Comprobar con file distintos ficheros del disco duro y comprobar los resultados que nos dá.
● Cambiar la fecha del sistema (buscar información en google). Vamos a adelantarnos al 2009.
● Programar un reinicio del sistema dentro de dos minutos.
Irontec – Curso básico Linux
53
EJERCICIO
● Localizar el comando ifconfig e intentar ejecutarlo.● Ejecutar echo $PATH ¿Qué es esa información?● Ejecutarlo como usuario root. ¿Qué diferencias
encontramos?
Irontec – Curso básico Linux
54
Sistemas de ficheros en Unix
● Rutas en el sistema de ficheros– Absolutas: desde el directorio raiz hasta el archivo
deseado.– Relativas: desde el directorio actual hasta el archivo
deseado.● Caracteres especiales
– *: sustituye una cantidad cualquiera de caracteres– ?: sustituye exactamente un carácter– []: sustituye un carácter de los indicados
● Expansión de comandos y archivos
Irontec – Curso básico Linux
55
EJERCICIOS
● Ir a /home. ● Acceder a /home/consultec mediante ruta completa y
relativa.● Crear fichero nominas en nuestro home y hacer un ls
con * ? y []. Haciendolo de las tres formas, nos tiene que dar como resultado únicamente el fichero nóminas
● Buscar en el disco duro todos los ficheros que empiecen por n.
Irontec – Curso básico Linux
56
Introducción a GNU/Linux
● Tuberías– Un proceso en un sistema UNIX-like tiene inicialmente
abiertos 3 canales:● 0: STDIN o entrada estándar● 1: STDOUT o salida estándar● 2: STDERR o salida de error
– Imaginémonos una refinería: ● Metes crudo por 0 (STDIN), consigues gasolina por 1
(STDOUT) y bastantes residuos por el “desagüe” 2 (STDERR).
Irontec – Curso básico Linux
57
Introducción a GNU/Linux
Tuberías– Redirigiendo la salida de un comando:
● > : redirigir STDOUT a un fichero:ls > l istado.txt
● >>: redirigir STDOUT al final de un fichero (añadir):ls >> listados.txt
● 2>: redirigir STDERR a un fichero:ls 2> errores.txt
● 2>>: redirigir STDERR al final de un fichero:ls 2>> errores.txt
● 2>&1: redirigir STDOUT y STDERR a un fichero:ls > sal ida 2>&1
Irontec – Curso básico Linux
58
EJERCICIO
● Añadir datos al fichero nomina mediante echo.Juan 1000 eurosPedro 980 eurosJose 800 euros
● Listarlo con cat y el cat enviarlo a otro fichero nuevo llamado copia.nominas.
● Comparar los ficheros con md5sum. Modificar uno y volverlo a comparar.
Irontec – Curso básico Linux
59
EJERCICIO
● Usando STDIN, STDOUT utilizar cat para crear otro fichero llamado nominas2 con los siguientes datos:El isa 1200 eurosPepa 1400 eurosSara 200 euros
● ¡No se puede usar echo!
Irontec – Curso básico Linux
60
Comandos en GNU/Linux
Comandos para paginar y visualizar archivos– cat (muestra el contenido de ficheros por pantalla)– more / less (pagina el contenido de ficheros)– head / tail (muetra las primeras / últimas líneas de un
fichero)– grep (busquedas basadas en expresiones regulares)
Irontec – Curso básico Linux
61
Comandos en GNU/Linux
Comandos para paginar y visualizar archivos (II)
linux:~$ cat -n /etc/passwd
linux:~$ more /etc/fstab
linux:~$ less /etc/passwd
linux:~$ cat /etc/passwd /etc/group
linux:~$ tail -f /var/log/syslog
linux:~$ head -n 1 /etc/passwd
linux:~$ grep -ir consultec /etc/passwd
Irontec – Curso básico Linux
62
EJERCICIO
● Mostrar la primera linea del fichero nominas.● Mostrar la última linea del fichero nominas.● Abrir dos consolas, en una un tail y con la otra añadir
lineas con echo.● ¿Para que nos puede servir el tail -f?● Hacer un tail del servicio httpd y acceder a nuestra web.
Irontec – Curso básico Linux
63
Comandos en GNU/Linux
Otros comandos interesantes
linux:~$ df -h
linux:~$ du -sh /var/log
linux:~$ tar cvzf /var/log/backup.tgz /etc/ /home/
linux:~$ history
linux:~$ sort -r /etc/group
linux:~$ wc -l /etc/passwd
Irontec – Curso básico Linux
64
EJERCICIO
● Contar el número de líneas que tiene el fichero de nominas.
● Comprimir el fichero de nominas y comprobar su tamaño.
● Descomprimirlo y volver a comprobar su tamaño.
Irontec – Curso básico Linux
65
Introducción a GNU/Linux
Tuberías– Redirigiendo la entrada de un comando:
● <: redirigir el contenido de un fichero a STDIN:tr a A < fichero.txt
– | : es posible recoger la salida de un desagüe y conducirlo a la entrada de otro comando.
cat fichero.txt | tr a A
Irontec – Curso básico Linux
66
EJERCICIO
● Usando los comandos ya vistos mostrar del fichero /etc/passwd únicamente los usuarios que comiencen por s.
Irontec – Curso básico Linux
67
Comandos básicos
● El sistema es multitarea, podemos dejar multiples procesos corriendo en background.
● Con control+z llevamos el siguiente proceso a background.
● Con fb [número de proceso] lo traemos de nuevo al frente.
● Con bg listamos el último proceso enviado a background.
Irontec – Curso básico Linux
68
EJERCICIO
● Ejecutar los siguientes tres comandos e ir enviandolos a background:sleep 70sleep 80sleep 90
● Una vez hecho, se debe volver a traer uno a uno al frente.
Irontec – Curso básico Linux
69
Comandos básicos
● Es posible crear alias de comandos, de forma que sea más sencillo de recordar para nosotros.
● alias apagar=halt
Irontec – Curso básico Linux
70
EJERCICIO
● Crear un alias de nombre lc que nos muestre los ficheros y directorios del lugar donde nos encontramos en colores distintivos y con todos sus datos (tamaño, propietarios, permisos...).
Irontec – Curso básico Linux
71
Compresores
● Tar es un comando que únicamente empaqueta.● Gzip es un comando que comprime.● Uniendo tar+gzip podemos empaquetar una serie de
ficheros y comprimirlos.● Buscar en google como empaquetar y comprimir /home/
alumno● Una vez hecho, descomprimirlo en /tmp
Irontec – Curso básico Linux
72
Administración de usuarios
Administración de usuarios
Irontec – Curso básico Linux
73
Gestión de Usuarios y Grupos
Características de usuarios Unix– Los sistemas Unix son sistemas multiusuario. Cada usuario
tiene una serie de características propias y asociadas:● uid: identificativo de usuario (debe ser único)● gid: identificativo de grupo● home: carpeta de trabajo o personal● shell: interprete de comandos
– Comandos:● who/whoami/id (muestra información de usuarios)● su/sudo (cambia de usuario o privilegios)
Irontec – Curso básico Linux
74
Gestión de Usuarios y Grupos
Gestión de Usuarios– adduser (crear usuarios)– usermod (modificar usuarios)– deluser (eliminar usuarios)
Gestión de Grupos– groupadd (añade grupo o usuario a grupo)– groupmod (modifica grupo)– delgroup (elimina grupo o usuario de grupo)
Irontec – Curso básico Linux
75
Gestión de Usuarios y Grupos
Gestión de Usuarios
linux:~$ adduser alumno
linux:~$ groupadd curso
linux:~$ adduser –-home /home/alumno –-shell /bin/sh -–uid 5001 –-groups curso alumno
linux:~$ usermod –-shell /bin/bash alumno
linux:~$ usermod -G softwarelibre alumno– Esto añade a “alumno” al grupo “softwarelibre”
Irontec – Curso básico Linux
76
Gestión de Usuarios y Grupos
Cambiando el propietario y grupo– Para cambiar el propietario o grupo puede hacerse a través
del nombre o del identificativo (uid o gid).● chown (cambiar el propietario y grupo)● chmod (cambiar los permisos)
Irontec – Curso básico Linux
77
Gestión de Usuarios y Grupos
Cambiando el propietario y grupo
linux:~$ ls -l ~/documentos/linux.pdf-rw-rw-r-- 1 alumno alumno 2684 ene 2 21:09 linux.pdf
linux:~$ chown alumno:curso ~/documentos/linux.pdf
linux:~$ ls -l ~/documentos/linux.pdf-rw-rw-r-- 1 alumno curso 2684 ene 2 21:09 linux.pdf
linux:~$ id alumnouid=500(alumno) gid=500(curso) grupos=500(curso)
linux:~$ chown 500 ~/documentos/linux.pdf
linux:~$ ls -l ~/documentos/linux.pdf-rw-rw-r-- 1 alumno curso 2684 ene 2 21:09 linux.pdf
Irontec – Curso básico Linux
78
Administración de permisos
Permisos de ficheros en sistemas Unix– Todos los archivos en Unix tienen permisos que indican
que y quien puede hacer o no hacer una acción con el archivo.
– Es la base de la seguridad de Unix.– 2 formas de notación:
● Modo alfabético● Modo octal
Irontec – Curso básico Linux
79
Administración de permisos
Permisos de ficheros en sistemas Unix– Modo alfabético
Irontec – Curso básico Linux
80
Administración de permisos
Permisos de ficheros en sistemas Unix– Modo octal
Irontec – Curso básico Linux
81
Administración de permisos
Cambiando los permisos– Solo es posible alterar los permisos si el usuario que lo está
haciendo es el propietario del archivo.● chmod [ugoa][+-][rwx] archivo● u (propietario), g (grupo), o (resto), a (todos)● + / -: añadir / eliminar permisos● r (lectura), w (escritura), x (ejecución)● chmod [modo_octal] archivo
Irontec – Curso básico Linux
82
EJERCICIO
● Crear como root un fichero /tmp/nominas y darle permisos de lectura solo a consultec, no a alumno. Iniciar sesión con alumno y comprobar si lo puede leer.
Irontec – Curso básico Linux
83
EJERCICIO
● Con el usuario alumno crear una carpeta que solo la pueda ejecutar, leer y escribir el usuario alumno. Dentro de ella crear un fichero llamado prueba y comprobar si desde consultec se puede leer.
Irontec – Curso básico Linux
84
EJERCICIO
● Con alumno crear un fichero llamado privado y darle permisos para que solo el pueda acceder al fichero. Luego intentar abrirlo con root.
Irontec – Curso básico Linux
85
EJERCICIO
● Abrimos /etc/passwd y comprobarlos los cambios. Le quitamos la posibilidad de iniciar sesión a alumno. Luego probamos a iniciar sesión con el.
Irontec – Curso básico Linux
86
EJERCICIO
● Borramos el usuario alumno y comprobamos a continuación los permisos del fichero prueba y su carpeta de tmp.
● Intentar crear ficheros por todo el disco duro, comprobando así donde tenemos permiso.
Irontec – Curso básico Linux
87
Montaje de dispositivos
Montaje de dispositivos
Irontec – Curso básico Linux
88
Montaje de dispositivos
● Diferencia Linux <-> Windows– En Windows los directorios se montan sobre unidades
físicas:C:\CarpetaD:\Drivers\vga
– En Linux los dispositivos se montan en directorios de la estructura de ficheros:
/home/usuario/media/cdrom
Irontec – Curso básico Linux
89
Montaje de dispositivos
● Dispositivos y “devices” asociados– Disco duro IDE y CDROM: /dev/hdXY
● X: Número de disco/dispositivo_IDE (a, b, c...)● Y: Número de partición (1, 2, 3...)
/dev/hda/dev/hda1/dev/hdb3
– Disco duro SCSI, SATA y externos USB: /dev/sdXY/dev/sda/dev/sda1/dev/sdc4
Irontec – Curso básico Linux
90
Montaje de dispositivos
● Particiones primarias y lógicas– Máximo 4 primarias:
/dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4
– Una de ellas se puede establecer como partición extendida:/dev/hda4
– Se pueden crear varias particiones lógicas en una extendida:
/dev/hda5 /dev/hda6 ...
– Linux puede arrancar desde una partición lógica, no así Windows que requiere una primaria.
Irontec – Curso básico Linux
91
Montaje de dispositivos
● /etc/fstab# /etc/fstab: static file system information.## <file system> <mount point> <type> <options> <dump> <pass>proc /proc proc defaults 0 0
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1/dev/hda3 /home ext3 defaults 0 2/dev/hda2 none swap sw 0 0
/dev/hdb1 /media/hdb1 ext3 defaults 0 1
/dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
– La opción “user” permite que un usuario normal (no root) monte la partición.
Irontec – Curso básico Linux
92
Montaje de dispositivos
● mount– Para montar dispositivos manualmente.– Si el dispositivo existe en fstab:mount punto_de_montajeómount /dev/dispositivo
● Ej:mount /dev/hdc = mount /media/cdrom0
– Si el dispositivo no existe en fstab:mount -t TIPO_SIS_FICHEROS /dev/dispositivo punto_montaje
● Ej:mount -t iso9660 /dev/hdc /media/cdrom0mount -t ext3 /dev/hdb1 /media/disco_2mount -t vfat /dev/hda2 /mnt/windowsXP
Irontec – Curso básico Linux
93
Montaje de dispositivos
● mount (II)– Notas:
● Una partición de tipo VFAT no dispone de permisos ni dueños/grupos así que no se puede usar el comando “chown” ni “chmod” para permitir a usuarios la escritura.– La partición por defecto es del usuario que la monta (la puede
montar cualquiera si tiene la opción “user”).– Se puede fijar el dueño de la partición con la opción “uid”, el
grupo con “gid” y los permisos con “umask” (ojo, “umask” es la máscara invertida).
– ¡¡ man mount !!
Irontec – Curso básico Linux
94
Montaje de dispositivos
● umount– Desmonta un dispositivo:
umount /dev/dispositivoó
umount punto_de_montaje
– ¡ Sólo si el dispositivo no está usado por ningún proceso!● Si un usuario tiene una terminal en /media/cdrom no se podrá
desmontar el dispositivo.● Para comprobar qué procesos están usando un dispositivo:
lsof punto_de_montajeEj:
lsof /media/cdrom
Irontec – Curso básico Linux
95
EJERCICIO
Vamos a crear una carpeta llamada montaje y un disco duro virtual de 5 megas. Primero vemos como podriamos particionarlo. Luego montaremos el disco duro en la carpeta y trabajaremos con el.
mkdir montajedd if=/dev/zero of=fichero bs=1 count=5120000mkfs.ext3 ficheromount -o loop fichero montaje
Irontec – Curso básico Linux
96
EJERCICIO
● Nos metemos en la carpeta y creamos un fichero.● Abrimos otra consola y desmontamos la carpeta.● Configuramos el fstab para que automáticamente monte
el dispositivo al iniciar el sistema.
Irontec – Curso básico Linux
97
Editor VI
● Es el editor que encontraremos en todo UNIX. Es necesario conocer el funcionamiento básico para poder editar ficheros.
● Tiene varios modos de funcionamiento, visual, comando y edición.
● Tiene muchísimas opciones...
http://www.infor.uva.es/~arturo/Asig/EstSO/manvi.pdf
Irontec – Curso básico Linux
98
Enlaces duros y simbólicos
Enlaces duros y simbólicos
Irontec – Curso básico Linux
99
Enlaces
● Duros: En ocasiones es necesario dar a un mismo archivo distintos nombres o, para mantener la integridad de los datos, se hace necesario que un mismo archivo que va a ser modificado por varias personas pueda estar representado por un nombre distinto con distintos permisos cada uno. Dada la representación que GNU/Linux le da a los archivos es posible que dos o más nombres apunten al mismo contenido en el disco rígido..
Irontec – Curso básico Linux
100
Enlaces duros y simbólicos
● Simbólicos: A diferencia con los enlaces duros, estos enlaces solo dan otro nombre a un archivo pero no hacen un enlace al nivel de inodo. Se puede hacer una comparación con los "Accesos directos" de Windows95. La orden ln -s genera un enlace simbólico.
Irontec – Curso básico Linux
101
Enlaces duros y simbólicos
Creación de un enlace duro
[punisher@shyris ~]$ touch hola
[punisher@shyris ~]$ ln hola adios
[punisher@shyris ~]$ ls -li hola adios
2747992 -rw-r--r-- 2 punisher users 0 jun 12 16:40 adios
2747992 -rw-r--r-- 2 punisher users 0 jun 12 16:40 hola
¿Que pasa si borramos el fichero original?
Irontec – Curso básico Linux
102
Enlaces duros y simbólicos
Creación de un enlace simbólico
[punisher@shyris ~]$ ln -s adios hastaluego
[punisher@shyris ~]$ ls -li adios hastaluego
2747992 -rw-r--r-- 2 punisher users 0 jun 12 16:40 adios
2748015 lrwxrwxrwx 1 punisher users 5 jun 12 16:44 hastaluego -> adios
¿Que pasa si borramos el fichero original?
Irontec – Curso básico Linux
103
Crontab
Crontab
Irontec – Curso básico Linux
104
Tareas periódicas
cron– El demonio cron permite la ejecución programada de
procesos, scripts o simples comandos.– Cron mira cada minuto si tiene que lanzar algún proceso y
en caso afirmativo lo lanza. No se puede planificar una ejecución de forma más precisa.
– Cada usuario tiene su tabla de planificación (crontab) aunque también existen una tabla de planificación global del sistema (/etc/crontab) y una serie de directorios especiales.
Irontec – Curso básico Linux
105
Tareas periódicas
cron– La sintaxis típica de los ficheros de cron consiste en 6
campos:* * * * * [user] comando parametros
minuto: 0-59. Número, rango, intervalo o lista (separada por comas).hora: 0-23.día del mes: 1-31.mes: 1-12 o nombres.día de la semana: 0-7 o nombres.usuario: sólo en ficheros comentados anteriormente.comando: el resto de la línea es el comando a ejecutar.
– Nota: También puede haber líneas al principio con declaración de variables y comentarios (#).
– Más info (man 5 crontab).
Irontec – Curso básico Linux
106
Tareas periódicas
cron– Ejemplo de cron de un usuario (root):
PATH=$PATH:/usr/bin:/usr/local/bin
# los viernes cada 2 horas...* */2 * * 5 cd /root/scripts; ./generaEstadisticas.sh
# cada día por la noche20 3 * * * /root/scripts/backupDiario.sh
# rotación de backups cada mes0 1 1 * * cd /root/scripts; ./rotaBackups.sh
Irontec – Curso básico Linux
107
Tareas periódicas
cron– Creación o edición del fichero de cron del usuario actual:
$ EDITOR=vi$ export EDITOR$ crontab -e(se edita...):wq (se guarda y se sale)
– Mostrar el contenido del cron de un usuario:
$ crontab [-u user] -l
Irontec – Curso básico Linux
108
Tareas periódicas
cron– Directorios especiales:
/etc/cron.daily//etc/cron.hourly//etc/cron.monthly//etc/cron.weekly/
– Los ficheros ejecutables que metamos en esos directorios se ejecutarán en su momento por el usuario root. NO DEBEN SER FICHEROS DE CRON, sino scripts o programas.
Irontec – Curso básico Linux
109
EJERCICIO
● Crear una tarea que se ejecute a las 13:45 los lunes una nueva linea al fichero /tmp/programado con el texto “hola”.
● Crear una tarea que se ejecute cada 3 minutos añadiendo el texto “adios” al mismo fichero.
● Crear una tarea que cada hora borre el fichero.● Lo abrimos con tail -f y vemos el progreso.
Irontec – Curso básico Linux
110
Programación Básica en Shell
Programación Básicaen Shell (Bash)
Irontec – Curso básico Linux
111
Shell Scripts
– Script = Guión– Tareas repetitivas se pueden agrupar en un guión y
ejecutarse automáticamente (Batch Processing).● Es sencillo ejecutar 4 comandos para crear un buzón de correo.● No lo es tanto para crear 20.000 buzones.● Es sencillo hacer un bucle que se repita 20.000 veces ;-)
Irontec – Curso básico Linux
112
Shell Scripts
Nuestro primer shell script– Usamos un editor y creamos el fichero hola.sh:
#!/bin/shecho hola
– Con #! en la primera línea indicamos quién debería interpretar el resto de comandos (/bin/sh).
– Posteriormente escribimos los comandos separados por saltos de línea.
Irontec – Curso básico Linux
113
Shell Scripts
Variables– Una variable tiene un nombre y un valor, y sirve para dotar
de dinamismo a nuestros scripts:
FECHA=”15/07/2004”echo “Hoy es $FECHA”
– FECHA es el nombre de la variable.– $FECHA es su valor.
– Para asignar un valor, se utiliza “=”. ¡¡¡SIN ESPACIOS!!!
Irontec – Curso básico Linux
114
Shell Scripts
Variables de entorno– Al arrancar una shell, ya hay muchas variables definidas,
son las variables de entorno.● Podemos ver su valor con el comando “env”.
– Ámbito de una variable: ● Si se define una variable en una shell, sólo tiene valor en esa
shell, a no ser que se exporte a los programas “hijo”.● export USUARIO=”joaquin”● Si desde esa shell lanzamos un script u otro programa, la
variable USUARIO contendrá “joaquin”.
Irontec – Curso básico Linux
115
Shell Scripts
Variables: interactividad– Es posible leer del usuario el valor de una variable,
dotando a nuestros scripts de interactividad.– cat hola.sh
#!/bin/shecho “Dime tu nombre:”read NOMBREecho “Hola $NOMBRE, encantado de conocerte”
Irontec – Curso básico Linux
116
Shell Scripts
Variables: argumentos– Es posible pasar los parámetros o argumentos que
queramos y utilizarlos dentro del script.– cat nombre.sh
#!/bin/shecho “Nombre: $1”echo “Primer Apellido: $2”echo “Segundo Apellido: $3”
– ./nombre.sh Juan López Martínez– ./nombre.sh “Maria Dolores” Pradera Sánchez– $1, $2, $3... ${10}, ${11}: argumentos– $0 es el propio script.
Irontec – Curso básico Linux
117
Shell Scripts
Variables: argumentos especiales– $#: número 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.
Irontec – Curso básico Linux
118
Shell Scripts
Variables: sustitución de comandos– Es posible almacenar en una variable el resultado de la
ejecución de un comando.– Dos sintaxis:
● Acentos graves: compatibilidadLISTADO=`ls`
● Con $(): anidableLISTADO=$(ls)LISTADO=$(ls $(cat directorios.txt))
Irontec – Curso básico Linux
119
Shell Scripts
expr: Permite realizar operaciones aritméticas.– Sintaxis: expr ARG1 OP ARG2
$ SUMA=`expr 7 + 5` (ojo espacios!)$ echo $SUMA12
$ expr 7 \> 5 (ojo escapar operadores!)$ expr \( 7 + 5 \) \* 2
Irontec – Curso básico Linux
120
Shell Scripts
Control del flujo de ejecución– Condiciones: test
● test “$NOMBRE” == “Juan” (==, !=, >, <, >=, <=)● test $DINERO -eq 1000 (-eq, -ne, -gt, -lt, -ge, -le)● test -f /etc/passwd (-f, -d, -l, -r, -w, -x)
– Modifican el valor de $?● cero = verdadero● no cero = falso (¡¡AL REVÉS QUE EN C!!)
http://www.ss64.com/bash/test.html
Irontec – Curso básico Linux
121
Shell Scripts
Control del flujo de ejecución– if: alternativa simple. Sintaxis:
if condición_1then comandoselif condición_2then comandoselse comandosfi
Irontec – Curso básico Linux
122
Shell Scripts
Control del flujo de ejecución– if. Ejemplo:
if test “$NOMBRE” == “Juan”then echo “Hola Juanin, ¿qué tal?”elif test “$NOMBRE” == “Pedro”then echo “Pedreteee, ¡cuánto tiempo!”else echo “No te conozco”fi
Irontec – Curso básico Linux
123
Shell Scripts
Control del flujo de ejecución– case: cómodo para evitar alternativas anidadas. Sintaxis:
case $VARIABLE in “VALOR1”) comandos ;; “VALOR2”) comandos ;; *) comandos;esac
Irontec – Curso básico Linux
124
Shell Scripts
Control del flujo de ejecución– case. Ejemplo:
case $NOMBRE in “Juan”) echo “Hola Juanin, ¿qué tal?” ;; “Pedro”) “Pedreteee, ¡cuánto tiempo!” ;; *) echo “no te conozco”;esac
Irontec – Curso básico Linux
125
Shell Scripts
Control del flujo de ejecución– while. Ejecución de 0 a N veces. Sintaxis:
while condicióndo comandosdone
Irontec – Curso básico Linux
126
Shell Scripts
Control del flujo de ejecución– while. Ejemplo:
N=1while [ $N -lt 100 ]do echo “Repito esta frase, ya voy $N veces” N=$(expr $N + 1) sleep 1 # Esperamos 1 segundodone
Irontec – Curso básico Linux
127
Shell Scripts
Control del flujo de ejecución– until. Ejecución de 0 a N veces. Idéntico a while con la
condición negada. Sintaxis:
until comandodo comandosdone
Irontec – Curso básico Linux
128
Shell Scripts
Control del flujo de ejecución– until. Ejecución de 0 a N veces. Idéntico a while con la
condición negada. Sintaxis:
N=1until [ $N -ge 100 ]do echo “Repito esta frase, ya voy $N veces” N=$(expr $N + 1)done
Irontec – Curso básico Linux
129
Shell Scripts
Control del flujo de ejecución– for: ejecución repetitiva asignando a una variable de
control valores de una lista. Sintaxis:
for VARIABLE in LISTAdo comandosdone
Irontec – Curso básico Linux
130
Shell Scripts
Control del flujo de ejecución– for. Ejemplo:
for N in “Sopa” “Carne” “Pan de ajo”do echo “Hoy comemos $N”done
Irontec – Curso básico Linux
131
Shell Scripts
Control del flujo de ejecución– for: la LISTA define la separación de cada elemento por el
valor de la variable IFS (que por defecto vale “ \t\n”). Ejemplo:
IFS=”:”echo “Directorios en el PATH...”for DIR in $PATHdo echo $DIRdone
Irontec – Curso básico Linux
132
Shell Scripts
Control del flujo de ejecución– for. Ejemplos numéricos:
for N in 1 2 3 4 5 6 7 8 9 10do echo “N ahora vale $N”donefor N in $(seq 10)do echo “N ahora vale $N”done
Irontec – Curso básico Linux
133
Shell Scripts
Control del flujo de ejecución– select: muestra las opciones especificadas en LISTA y
asigna a VARIABLE la opción escogida. Sintaxis:
select VARIABLE in LISTAdo comandosdone
Irontec – Curso básico Linux
134
Shell Scripts
Control del flujo de ejecución– select: Ejemplo:
select OPCION in “Doner Kebab” “Pizza”do case $OPCION in “Doner Kebab”) echo “Mmmm...” break;; “Pizza”) echo “Slurppp!” break;; *) echo “No sé qué es eso” esacdone
IMPORTANTE: sin el break el select seguiría ejecutándose indefinidamente.
Irontec – Curso básico Linux
135
Shell Scripts
function– Podemos modularizar los scripts agrupando tareas en
funciones.– Es necesario que una función esté definida ANTES de que sea
llamada.– Dentro de una función, $1, $2, $3, etc. serán los parámetros
pasados a la función, no al script en sí.
Irontec – Curso básico Linux
136
Shell Scripts
function. Ejemplo:
#!/bin/shfunction suma{ echo $(expr $1 + $2)}suma 4 6suma 3 234
Irontec – Curso básico Linux
137
Shell Scripts
source, . – Con source o con “.” podemos incluir el código de otro
script en el nuestro:
#!/bin/shsource funciones.sh # ahí se define sumasuma 1 3suma 12 12312
Irontec – Curso básico Linux
138
EJERCICIO
● Crear un script que nos pida nombre de usuario y contraseña.
● Una vez tengamos los datos los añadimos al fichero /tmp/datos
● A continuación nos pregunta si deseamos continuar insertando datos. Si la respuesta es si, volvemos a empezar, si es no terminamos la aplicación.
Irontec – Curso básico Linux
139
EJERCICIO
● Por cada fichero en /bin hacer un md5sum y archivar los datos en /tmp/seguridad.
● Programar una tarea para que lo haga todos los días a las 10 de la noche.
Irontec – Curso básico Linux
140
EJERCICIO
● Crear una calculadora.● Si el usuario escribe 2 + 5, que le muestre el resultado
por pantalla.● Se debe salir del bucle cuando el resultado de una
operación sea 82.
Irontec – Curso básico Linux
141
Redes
Redes
Irontec – Curso básico Linux
142
Configuración de la red
– Las interfaces de red se configuran en el fichero:
[root@localhost network-scripts]# cat ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]DEVICE=eth0BOOTPROTO=dhcpHWADDR=00:0C:29:3D:90:4FONBOOT=yes
[root@localhost network-scripts]# cat ifcfg-lo DEVICE=loIPADDR=127.0.0.1NETMASK=255.0.0.0NETWORK=127.0.0.0BROADCAST=127.255.255.255ONBOOT=yesNAME=loopback
Irontec – Curso básico Linux
143
Configuración de la red
Configuración manual de la red– ifconfig: configura interfaces de red. Asigna IP, máscara,
gateway, etc.$ ifconfig eth0 192.168.0.12 netmask 255.255.255.0 up
– route: añade rutas estáticas. Ejemplo típico:$ route add default gw 192.168.0.1$ route add -net 10.10.0.0 netmask 255.255.255.0 gw 192.168.0.100$ route -n (muestra tabla de rutas)
– /etc/resolv.conf: indica los servidores DNS$ cat /etc/resolv.conf
nameserver 195.235.113.3
Irontec – Curso básico Linux
144
Configuración de la red
– IP alias: crear un interfaz de red sobre otro.● Una misma red física puede albergar distintas redes con
distinto direccionamiento y rango.
$ ifconfig eth0:1 192.168.1.123 netmask 255.255.255.0
$ ifconfig eth0:1eth0:1
Link encap:Ethernet HWaddr 00:14:85:E8:D3:AFinet addr:192.168.1.123 Bcast:192.168.1.255Mask:255.255.255.UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:217 Base address:0xe800
Irontec – Curso básico Linux
145
Configuración de la red
Configuración manual de la red– /etc/hosts: realiza una resolución directa de nombre a IP
sin realizar consulta DNS. Normalmente este fichero se mira antes de preguntar al servidor DNS (sólo 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'
Irontec – Curso básico Linux
146
Configuración de la red
Configuración automática de la red (DHCP)– Configuración para el arranque: en /etc/network/interfaces
definimos la interfaz como “inet dhcp”– Configuración manual:
● se utiliza un cliente dhcp como dhclient o pump
# dhclient eth0# pump -i eth0
Irontec – Curso básico Linux
147
Comandos básicos de administración de red
ping: manda un mensaje ICMP – echo request.– Se utiliza normalmente para comprobar si un interfaz de
red remoto está levantado.
$ ping 212.55.8.132PING 212.55.8.132 (212.55.8.132) 56(84) bytes of data.bytes from 212.55.8.132: icmp_seq=1 ttl=242 time=166 ms
¡hay conectividad!
– Nota: Si no hay ping puede que el tráfico ICMP esté filtrado por algún firewall.
Irontec – Curso básico Linux
148
Comandos básicos de administración de red
telnet: protocolo de terminal remoto– Se utiliza para conectarse a una máquina remota.
$ telnet IP puerto (default 23)
– NO es un protocolo seguro (SSH sí).– Se utiliza también para comprobar estado de servicios
remotos. Ejemplo:
$ telnet www.euskalnet.net 80Connected to eui3h.euskaltel.es.Escape character is '^]'.
¡el servidor web funciona!
Irontec – Curso básico Linux
149
Comandos básicos de administración de red
netstat: muestra conexiones de red– Comando potente que permite mostrar casi toda la
información de la configuración TCP/IP de la máquina (man netstat).
– Ejemplos:
netstat -atup # muestra tambien procesosnetstat -a # muestra todas las conex.netstat -a | grep LISTENnetstat -a | grep ESTABLISHEDnetstat -nrv # muestra tabla de rutas
Irontec – Curso básico Linux
150
Comandos avanzados administración de red
iptraf:
Irontec – Curso básico Linux
151
Comandos avanzados administración de red
netcat (nc): “navaja suiza” de red● Capaz de funcionar como cliente, como servidor, etc.
telnet 127.0.0.1 80Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.
GET /<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html> <head>
...● Lo mismo con netcat (nc):
echo “GET /” | nc 127.0.0.1 80● Cliente/Servidor:
nc -l -p 5000cat fichero | nc 192.168.1.1 5000
Irontec – Curso básico Linux
152
Comandos avanzados administración de red
nmap: “escaneador de red”● Permite comprobar que puertos están o no abiertos.● Nos dice el sistema operativo y la versión de los
servicios que estamos escaneando.[root@shyris punisher]# nmap -sS -O 127.0.0.1
Starting Nmap 4.65 ( http://nmap.org ) at 2008-06-13 08:40 CEST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1713 closed ports
PORT STATE SERVICE
111/tcp open rpcbind
978/tcp open unknown
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.17 - 2.6.24
Uptime: 0.013 days (since Fri Jun 13 08:22:15 2008)
Network Distance: 0 hops
Irontec – Curso básico Linux
153
Iptables
IPTABLES
Irontec – Curso básico Linux
154
Iptables
● Cortafuegos Netfilter/Iptables– Remplaza a Ipchains desde el Kernel 2.3.– iptables: herramienta del espacio de usuario que permite:
● Reglas para filtrado de paquetes.● NAT.
– Firewall stateful (controla estados de conexiones).– Soporte IPv6.
Irontec – Curso básico Linux
155
Iptables
● Tablas y cadenas
Irontec – Curso básico Linux
156
Iptables
● Destino: nuestra máquina
Irontec – Curso básico Linux
157
Iptables
● Origen: nuestra máquina
Irontec – Curso básico Linux
158
Iptables
● Paquetes Reenviados (Forwarded)
Irontec – Curso básico Linux
159
Iptables
● Tabla mangle– Para modificar paquetes:
● TOS (Type of Service)● TTL (Time To Live)● MARK (marcar un paquete) -> iproute2, QoS
– ¡ No usar esta tabla para para DNAT, SNAT o Masquerading !
Irontec – Curso básico Linux
160
Iptables
● Tabla nat– Sólo para hacer NAT (Network Address Translation).– DNAT:
● Cambiar la IP destino.● Ej: Redirigir entrantes a una DMZ con IP's locales.
– SNAT:● Cambiar la IP origen a una definida (estática)● Para dar salida a equipos LAN con IP's locales.
– Masquerade:● Igual que SNAT con más carga de procesador.● Cada vez chequea la IP saliente que debe asignarle.
– Ej: Router Linux con IP pública dinámica.
Irontec – Curso básico Linux
161
Iptables
● Tabla filter– Filtrado de paquetes.– ¡ Se puede hacer filtrado en otras tablas, pero no es
recomendable !– Acciones como:
● Aceptar un paquete (ACCEPT).● Desecharlo (DROP).
Irontec – Curso básico Linux
162
Iptables
● Estado de los paquetes– NEW: paquete nuevo.– ESTABLISHED: comunicación ya establecida.– RELATED: relaionada a otra comunicación ESTABLISHED.
● Para protocolos como FTP que incluyen puerto de transmisión de datos dentro de datos de aplicación.– Hace falta un módulo para Netfiler: ip_conntrack_ftp.
– --state● Para comparar el estado de un paquete.
– El estado de conexiones se aplica sobre:● TCP, UDP o ICMP.
– UPD y ICMP gracias al módulo ip_conntrack.
Irontec – Curso básico Linux
163
Iptables
● Estado de los paquetes (II)– Ejemplo:
● Nuestra máquina envía un paquete a otra máquina:– Estado de la comunicación: NEW.– Cadena OUTPUT.
● La máquina destino nos responde con otro paquete.– Estado de la comunicación: ESTABLISHED.– Cadena PREROUTING.
Irontec – Curso básico Linux
164
Iptables
● Listar reglas actuales– iptables -L -v– iptables-save
● Lista las reglas en un formato válido para iptables-restore.– iptables-save > fichero-reglas (salva las reglas a fichero)– iptables-restore < fichero-reglas (carga reglas desde fichero)
Irontec – Curso básico Linux
165
Iptables
● Comando iptables– Sintaxis para añadir una regla:iptables [-t tabla] comando [comparación] [objetivo/salto]
– Los scripts de iptables constan de muchas líneas similares.
Irontec – Curso básico Linux
166
Iptables
● Comandos-A : Añade la regla al final de la cadena.
iptables -A INPUT (añade una regla al final de la cadena INPUT)
-D : Borrar una regla (hay que ponerla entera).-R : Reemplaza una regla.-I : Inserta una regla en la posición indicada.-L : Lista todas las reglas (de la cadena especificada).-F : (Flush) Elimina todas las reglas (de la cadena especificada).
Irontec – Curso básico Linux
167
Iptables
● Comparaciones– Comparaciones genéricas:-p, --protocol : Para comprobar si es TCP, UDP o ICMP.
iptables -A INPUT -p tcp-s, --src : Comparación de IP origen.
iptables -A INPUT -s 192.168.1.10iptables -A INPUT -s 192.168.1.0/24iptables -A INPUT -s ! 192.168.1.0/24 (invertir)
-d, --dst : Comparación de IP destino.iptables -A INPUT -d 192.168.0.1iptables -A INPUT -d 192.168.0.0/16
-i, --in-interface : Interfaz origen.● Sólo válida en INPUT, FORWARD y PREROUTING.
iptables -A INPUT -i eth0iptables -A INPUT -i eth+ (por cualquier eth)
-o, --out-interface : Interfaz de salida.● Sólo válida en OUTPUT, FORWARD y POSTROUTING.
iptables -A FORWARD -o eth0
Irontec – Curso básico Linux
168
Iptables
● Comparaciones implícitas– Comparaciones que se cargan implícitamente:
● TCP● UDP● ICMP
– Estas comparaciones se cargan con la opción -p:iptables -p TCP (o UDP, ICMP)
Irontec – Curso básico Linux
169
Iptables
● Comparaciones implícitas TCP– -p tcp--sport : Puerto origen.
iptables -A INPUT -p tcp --sport 1003iptables -A INPUT -p tcp --sport 100:200 (rango)iptables -A INPUT -p tcp --sport ! 22 (invertir)
--dport : Puerto destino (ídem)--tcp-flags : Flags TCP:
● SYN, FIN, ACK, ACK SYNiptables -A INPUT -p tcp --tcp-flags SYNiptables -A INPUT -p tcp --tcp-flags SYN,FIN,ACK SYN
Irontec – Curso básico Linux
170
Iptables
● Comparaciones implícitas UDP– -p upd--sport : Igual que en TCP.--dport : Igual que en TCP.
Irontec – Curso básico Linux
171
Iptables
● Comparaciones implícitas ICMP– -p icmp--icmp-type : Tipo de ICMP.
iptables -A INPUT -p icmp --icmp-type 8● Se puede ver un listado con:
iptables -p icmp --help
Irontec – Curso básico Linux
172
Iptables
● Comparaciones explícitas– Se deben cargan explícitamente con opción -m (--match).--state ESTADO : Verifica el estado de la conexión.
● NEW, INVALID, ESTABLISHED, RELATEDiptables -A INPUT -m state --state RELATED,ESTABLISHED
--limit VALOR : Limitar el nº de paquetes por tiempo.iptables -A INPUT -m limit --limit 3/hour
--mac-source : MAC origen.iptables -A INPUT -m mac --mac-source 00:00:00:00:11:22
--mark : Comprobar paquetes marcados anteriormente.iptables -t mangle -A INPUT -m mark --mark 1
● Más comparaciones:– TOS, TTL, multiport...
Irontec – Curso básico Linux
173
Iptables
● Objetivos/Saltos– Acción que se ejecuta sobre el paquete.
-j ACCIÓN● Salto: Mandar el paquete a otra cadena:
-j cadena– Podemos crear cadenas propias:
iptables -N cadena_tcpiptables -A INPUT -p tcp -j cadena_tcp
●
Irontec – Curso básico Linux
174
Iptables
● ObjetivosACCEPT : Aceptamos el paquete.
● ¡ El paquete deja de compararse en la cadena actual y en las cadenas de la tabla actual !
● ¡ El paquete podría ser filtrado en otra tabla !
DROP : Deseacha un paquete.
REJECT : Rechaza un paquete (envía un ICMP informativo al origen).
LOG : Loguea el paquete en ssylog.
DNAT : Cambiamos la IP destino.● Sólo en cadenas PREROUTING y OUTPUT de la tabla nat.
iptables -t nat -A PREROUTING -p tcp -d 85.80.23.54 --dport 80 -j DNAT --to-destination 192.168.168.10:80
Irontec – Curso básico Linux
175
Iptables
● Objetivos (II)SNAT : Cambiamos la IP origen.
● Sólo en la cadena POSTROUTING de la tabla nat.iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 90.90.90.90:1024-3200
MASQUERADE : Cambiamos la IP origen (detecta la IP)● Sólo en la cadena POSTROUTING de la tabla nat.
iptables -t nat -A POSTROUTING -p tcp -o eth0 -j MASQUERADE –-to-ports 1024-3200
REDIRECT : Redirigir paquetes hacia la máquina.● Sólo en cadenas PREROUTING y POSTROUTING de tabla nat.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT –-to-ports 8080
● Util para proxy transparente.● Otros objetivos:
– RETURN, QUEUE, MIRROR, MARK, TOS, TTL, ULOG
Irontec – Curso básico Linux
176
Iptables
● Política por defecto– Dos filosofías:
● 1ª: “Todo abierto y cerrar aquello que no queramos”● 2ª: “Todo cerrado y abrir aquello que queramos”● ¡ Mucho más segura la 2ª !
– Política por defecto en cada cadena (sólo se cumple si el paquete no coincide con ninguna regla):
iptables -P cadena política
– Denegamos acceso a la máquina y otras máquinas:iptables -P INPUT DROPiptables -P FORWARD DROP
– Permitimos acceso total al exterior desde nuestra propia máquina:iptables -P OUTPUT ACCEPT
Irontec – Curso básico Linux
177
Iptables
● Política por defecto (II)– ¡ OJO con el interfaz “lo” !
● “lo” es el interfaz de localhost.● Si ponemos:
iptables -P INPUT DROP¡ Estamos bloqueando los accesos por red en localhost !
● Solución: Añadir:iptables -A INPUT -p ALL -i lo -j ACCEPT
Irontec – Curso básico Linux
178
Iptables
● sysctl– Para habilitar el rutado:
#> echo “1” > /proc/sys/net/ipv4/ip_forward● Más elegante:
#> sysctl -w net.ipv4.ip_forward=1● Para dejarlo definitivo (activo en el arranque):
Fichero /etc/sysctl.conf:net/ipv4/ip_forward=1
Irontec – Curso básico Linux
179
Iptables
● Notas a recordad– ¡ No bloquear todos los ICMP ! ¿¿por qué??
● Supone cargarse la mitad del protocolo de internet.
– No olvidarse del interfaz “lo”.– Cargar módulos necesarios para nuestras reglas.
● ¡ Imprescindible el módulo ip_tables !
Irontec – Curso básico Linux
180
Iptables
● Ejemplo– Aspectos comunes de los scripts:
● Borrado de las reglas aplicadas actualmente (flush)● Aplicación de políticas por defecto para INPUT, OUPUT,
FORWARD● Listado de reglas iptables.
Irontec – Curso básico Linux
181
Iptables
● Ejemplo (II)#!/bin/sh## SCRIPT de IPTABLES## Red local: eth0 - 192.168.0.0/24## Internet: eth1 – IP dinámica
# Borrar reglas:iptables −Fiptables −t nat −F
# Política por defecto:iptables −P INPUT DROPiptables −P OUTPUT ACCEPTiptables −P FORWARD DROPiptables −t nat −P PREROUTING ACCEPTiptables −t nat −P POSTROUTING ACCEPT
# Permito acceso local:iptables -A INPUT -p ALL -i lo -j ACCEPT
Irontec – Curso básico Linux
182
Iptables
● Ejemplo (III)# Masquerading para red local con IP pública dinámica:iptables −t nat −A POSTROUTING −s 192.168.0.0/24 -o eth1 −j MASQUERADE
# Dejo pasar los paquetes ICMP:iptables −A INPUT −p ICMP −j ACCEPT
# Acepto paquetes de conexiones ya establecidas:iptables −A INPUT −p TCP −m state −−state RELATED,ESTABLISHED −j ACCEPT
# Permitir SSH a la máquina:iptables −A INPUT −p TCP −−dport 22 −m state −−state NEW −j ACCEPT
# Redirigir HTTP a una máquina local:iptables −t nat −A PREROUTING −i eth1 −p tcp −−dport 80 −j DNAT −−to 192.168.0.2:80
Irontec – Curso básico Linux
183
Iptables
● Más info:– http://iptables-tutorial.frozentux.net/spanish/chunkyhtml
● Tutorial completo de Iptables en castellano.
Irontec – Curso básico Linux
184
Paquetes de software
Paquetes de software
Irontec – Curso básico Linux
185
Paquetes de software
● Un paquete es un fichero que contiene un programa, scripts de instalación y ficheros de configuración.
● Es posible instalar, eliminar programas y actualizar el sistema completo con un solo comando, yum.
● También es posible instalar paquetes a mano sin yum, pero tendremos que resolver el problema de dependencias manualmente.
Irontec – Curso básico Linux
186
Paquetes de software
● Instalar: yum install nombrepaquete● Eliminar: yum remove/erase nombrepaquete● Actualizar paquetes: yum update● Actualizar sistema: yum upgrade● Buscar paquete: yum search textodebusqueda● Mostrar info de paquete: yum info
nombrepaquete
Irontec – Curso básico Linux
187
Paquetes de software
● ¿Qué es un repositorio?El repositorio es un almacén de paquetes. Los repositorios pueden estar en internet, en un medio extraíble como un CD, en el disco duro...
● Se configuran en /etc/yum.repos.d[kbs-CentOS-Extras]
name=CentOS.Karan.Org-EL$releasever - Stable
gpgcheck=1
gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
enabled=1
baseurl=http://centos.karan.org/el$releasever/extras/stable/$basearch/RPMS/
Irontec – Curso básico Linux
188
Paquetes de software
También es posible instalar paquetes a mano sin usar YUM, mediante rpm. Las dependencias las tenemos que gestionar notrosos.
[root@localhost alumno]# rpm -i pidgin-2.0.2-3.el5.i386.rpm
warning: pidgin-2.0.2-3.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
error: Failed dependencies:
libgtkspell.so.0 is needed by pidgin-2.0.2-3.el5.i386
libpurple.so.0 is needed by pidgin-2.0.2-3.el5.i386
Irontec – Curso básico Linux
189
Paquetes de software
● Algunas opciones de rpm.● Instalar: rpm -i nombrepaquete● Borrar: rpm -e nombrepaquete● Ver paquetes instalados: rpm -qa● Actualizar paquete: rpm -Uvh
Irontec – Curso básico Linux
190
Servicios y Niveles de Ejecución
Servicios y Nivelesde Ejecución
Irontec – Curso básico Linux
191
Proceso de arranque
– La BIOS busca un dispositivo de inicio (disco duro, CD-ROM,..) 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 ejecución
de arranque.
Irontec – Curso básico Linux
192
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 configuración en Debian GNU/Linux es: /boot/grub/menu.lst
– No es necesario ejecutar ningún comando para que se tengan en cuenta los cambios realizados.
Irontec – Curso básico Linux
193
Gestores de arranque
Grub– Grub no es capaz de distinguir entre dispositivos IDE, SCSI
u otros.– Sintaxis:
● Dispositivos– (dispositivo[particion][,letra_particion])
(hd0) # disco maestro IDE primario(fd0) # disquetera(hd0,1) # partición 2 del maestro IDE 0
● Ficheros– Es necesario indicar la ruta completa
(hd0,0)/boot/grub/menu.lst
Irontec – Curso básico Linux
194
Gestores de arranque
Grub– Datos de interes del archivo menu.lst:
default 0timeout 3
title Ubuntu, kernel 2.6.12-10-386root (hd0,1)kernel /boot/vmlinuz-2.6.12-10-386 root=/dev/hda2 ro quiet splashinitrd /boot/initrd.img-2.6.12-10-386savedefaultboot
title Microsoft Windowsroot (hd0,2)savedefaultmakeactivechainloader +1
Irontec – Curso básico Linux
195
Niveles de Ejecución
En los sistemas Unix hay 7 (0...6) niveles de ejecución– nivel 0: estado de parada (halt)– nivel 1: monousuario– nivel 2, 3 y 5: multiusuario– nivel 4: no tiene un uso específico– nivel 6: estado de reinicio (reboot)
Irontec – Curso básico Linux
196
Niveles de Ejecución
Init– Es el primer proceso que se crea (PID=1).– Se configura mediante /etc/inittab.
● Sintaxisid:nivel:accion:proceso
– id: nombre de la línea– nivel: nivel o niveles en los que la línea debe procesarse– accion
wait (espera), once (solo 1 vez), respawn (rearranca una vez finalizado), off (ignora la línea)
– proceso: path del proceso a ejecutar
Irontec – Curso básico Linux
197
Niveles de Ejecución
Init● Valores típicos del archivo /etc/inittab:
id:2:initdefault
l0:0:wait:/etc/init.d/rc 0l1:1:wait:/etc/init.d/rc 1l2:2:wait:/etc/init.d/rc 2l3:3:wait:/etc/init.d/rc 3
1:2345:respawn:/sbin/getty 38400 tty12:23:respawn:/sbin/getty 38400 tty2
z6:6:respawn:/sbin/sulogin
# CTRL-ALT-DEL!ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
Irontec – Curso básico Linux
198
Arranque del sistema
– Cuando la máquina se inicia en un nivel de ejecución 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 parámetro 'start'.
● Si el nombre del script comienza por K se le pasa como parámetro 'stop'.
– Normalmente todos estos ficheros de /etc/rcN.d son enlaces a scripts localizados en /etc/init.d/
Irontec – Curso básico Linux
199
Configurando servicios en arranque y parada
chkconfig– Herramienta para configurar automágicamente los enlaces
a los scripts de init tipo System V que están en /etc/rcN.d/[S|K]NNnombre y que apuntan a los scripts /etc/init.d/nombre.
– Ejemplos
# chkconfig --list# chkconfig --level 345 sendmail off