Está en la página 1de 199

GNU/Linux Centos 5.

Miguel ngel Nieto <miguelangel@irontec.com>


Irontec Internet y Sistemas sobre GNU/Linux
Irontec Curso bsico Linux

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.

Administracin bsica de un sistema GNU/Linux basado

en RedHat.

Y por encima de todo, aprender a buscar la informacin

que necesitamos para solventar los posibles problemas.

2
Irontec Curso bsico Linux

Antes de nada...

GNU GPL
Software Libre Linux
Kernel
GNU/Linux
Distribucin Linux Debian
Paquete
KDE (K)Ubuntu
Gnome Emule
3
Irontec Curso bsico Linux

Introduccin

Programas informticos

Tipos de Software
Software privativo
Shareware
Freeware
Software libre

4
Irontec Curso bsico Linux

1
Introduccin

Qu es eso del Software


Libre?

5
Irontec Curso bsico Linux

1
Introduccin

4 Libertades:

Libertad 0: Libertad para ejecutar el
programa para cualquier propsito.

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.

6
Irontec Curso bsico Linux

Introduccin

Inicios del Software libre


Richard Stallman (1983 Funda GNU Ver.7)
Linus Torvalds (1991 Crea Linux)
1992 GNU/Linux (Ver. 7)

7
Irontec Curso bsico Linux

1 Conceptos Generales sobre GNU Linux (I)


Introduccin


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

8
Irontec Curso bsico Linux

1 Conceptos Generales sobre GNU Linux (II)



Introduccin


Qu son Redhat, Debian, SuSE ... ?

Son Distribuciones de GNU Linux.

Diferentes formas de empaquetar el ncleo, las
herramientas GNU y el resto de software (libre o
no).

Gestionadas por:

empresas

grupos de personas.

organismos ...

9
Irontec Curso bsico Linux

1 DistribucionesGNULinux(I)

Introduccin

Debian:ProyectofundadoporIanMurdocken1993,
proyectoconorganizacinjerrquicatotalmente
horizontal.Objetivoprincipal:competirconlas
distribucionescomercialesparapodergarantizarel
exitodeGNULinux.
Redhat:Empresafundadaen1994porMarcEwing,

ofrecesoportetcnicoprofesionalygarantasde
escalabilidad.Plataformaliderenelmercado.

10
Irontec Curso bsico Linux

1 DistribucionesGNULinux(II)

Introduccin

Mandrakesoft:Nacidaen1998,conobjetivo
principal:instalacinyusodiariosencillos.
Crecimientoespectacularen2aos(3a100
empleados).
SuSE:Proyectodeempresaaleman,iniciadoen

1993.PrimerasversionesbasadasenSlackware.En
laactualidaddistribucintotalmentepropia.Ofrecen
soporteprofesionaldecalidad,similaraldeRedHat.

11
Irontec Curso bsico Linux

1 DistribucionesGNULinux(III)

Introduccin

Slackware:DistribucindesarrolladaporPatrick
Volkerding.PrimeraversinpublicadaenAbrilde
1993.Noofrecesoportetcnicoprofesionaldirecto.
Knoppix:EselSistemaLive(ejecucindesde

CDRomsininstalacin)mspopular.Soporta
prcticamentetodoslosdispositivoshardwaredel
mercado.Muypopularcomomtododeiniciacina
GNULinux.

12
Irontec Curso bsico Linux

1 DistribucionesGNULinux(IV)

Introduccin

Ubuntu:DistribucinbasadaenDebian,centradaen
elsistemadeescritorio(aunquetambindisponede
versinservidor).Nuevaversincada6meses.
CentOS:Distribucinbasadaenelcdigofuentede

RedHat.Concadanuevaversinenterprisede
RedHat,Centosdescargaelcdigo,locompilaycrea
supropiaversin.Es100%compatibleanivelbinario
conRedHat.

13
Irontec Curso bsico Linux

1 Versiones

SubVersin:
Introduccin

Parindicaestable
Imparindica
inestable

2.4.19 2.5.3

Versin Release

Enlaprctica,sedenomina
versinatodoelconjunto.
14
Irontec Curso bsico Linux

1 Introduccin

Situacin de GNU/Linux

15
Irontec Curso bsico Linux

1 SituacinrealdeGNULinux
Introduccin

Lasestadsticasnosiempresonmuyobjetivas,perose
calculanlassiguientescifras:
Servidores:Prcticamentetodoslosservidores

potentesseejecutansobreunderivadodeUNIX
(GNULinux,*BSD...).
Equiposdeescritorio:Existenciadenumerosos

gestoresdeventanas(KDE,GNOME,...)apariencia
estticayusabilidadmuymejorada.
Dispositivosempotrados:GNULinuxestpresente

ennumerososdispositivosWifi(802.11b/g)(Cisco
LinksysWRTG54G,SMC),entelfonoscelulares

16
Irontec Curso bsico Linux

1 SituacinrealdeGNULinuxenelpanorama
Introduccin

empresarial
Soporte:LavaprincipaldeingresoenelmundodeGNULinuxes
elsoporte.ServiciossobreGNULinux.Eldesarrollonocopael
mercadocomoenotrossistemasoperativos(Laruedayaest
inventada).
Apoyodegrandesempresas:EntreotrasIBMsehaposicionado

enfavordeGNULinux,afrontandodirectamentedemandasdeSCO
UNIXsobreposibleviolacindecopyrightdeLinux.
PosturadeMicrosoft:

2001:Proyectohechoporaficionados,noesserio
2004:Esnuestraprincipalamenaza
BillGates

17
Irontec Curso bsico Linux

1 SituacinrealdeGNULinuxenelpanorama

Introduccin

empresarial:Desarrolloysistemas

Desarrollo(web):Lapuntadelalanzaresideen
solucionesLAMP(LinuxApacheMySQL,PHP):
Pros:Rapidez,seguridad,integracincon

prcticamentetodoslosprotocolosycomunidadde
desarrolladoresmuyactiva(numerosaslibrerasy
cdigoreutilizable).
Contras:IntegracinconsolucionesMSWindows

18
Irontec Curso bsico Linux

1 SituacinrealdeGNULinuxenelpanorama

Introduccin

empresarial:Desarrolloysistemas

Sistemas:EselpuntofuertedeGNULinux:
estabilidad,seguridad,escalabilidadeintegracin
prcticamentetotal:
Solucionesdeseguridad(VPNs,Ids,Firewalls,...)

Solucionesdetiemporeal(sistemasde

monitorizacin,...)
RoutingAvanzado(OSPF,BGP,VRRP,....)

Servidores:DNS(Bind9),Web(Apache),FTP

(Proftpd),Netbios(Samba)....

19
Irontec Curso bsico Linux

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

20
Irontec Curso bsico Linux

Instalacin de CentOS

Instalacin de CentOS

21
Irontec Curso bsico Linux

Instalacin de CentOS

Se puede descargar CentOS desde su pgina web.


http://www.centos.org

Se puede descargar en distintos Cds o en un solo


DVD.

La ltima versin 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 instalacin es del estilo siguiente-siguiente...


finalizar :)

22
Irontec Curso bsico Linux

Instalacin de CentOS

Comprobacin del medio.

23
Irontec Curso bsico Linux

Instalacin de CentOS

Seleccin de idioma.

Se aplicar tanto al entorno de consola como al


entorno de escritorio.

24
Irontec Curso bsico Linux

Instalacin de CentOS

Seleccin de idioma del teclado.

25
Irontec Curso bsico Linux

Instalacin de CentOS

Particionado del disco duro.

Es necesario que el disco duro est vaco o que en


caso contrario tengamos una particin vaca en la
que realizar la instalacin.

26
Irontec Curso bsico Linux

Instalacin de CentOS

Seleccin y creacin de particiones.

Como mnimo debe existir / y swap.

Qu problemas tiene el uso exclusivo de /?

27
Irontec Curso bsico Linux

Instalacin de CentOS

Sistemas de ficheros
VFAT
Ext2
Ext3
RaiserFS
XFS
y muchos otros...

28
Irontec Curso bsico Linux

Sistemas de ficheros en Unix

En un sistema Unix todo son archivos: memoria fsica,


ratn, modems, teclado...
Filosofa de diseo de grn xito y potencia, aunque
tambin peligrosa: un simple error de permisos puede
permitir modificar todo un disco duro.
Tipos de archivos:

ficheros planos

directorios

ficheros especiales (dispositivos)
orientados a carcter
orientados a bloque

29
Irontec Curso bsico Linux

Sistemas de ficheros en Unix

Desplazndose por el sistema de ficheros

30
Irontec Curso bsico Linux

Sistemas de ficheros en Unix

Estructura de los Sistemas de Ficheros


Estndar de la Jerarqua 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.

31
Irontec Curso bsico Linux

Instalacin de CentOS

rbol tpico de directorios de un sistema GNU/Linux (ls -p /)


bin/
dev/
home/
lost+found/
proc/
sbin/
usr/
boot/
etc/
lib/
mnt/
root/
tmp/
var/
32
Irontec Curso bsico Linux

Instalacin 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

33
Irontec Curso bsico Linux

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

34
Irontec Curso bsico Linux

Instalacin 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 configuracin del sistema


/etc/X11/xorg.conf Sistema X
/etc/resolv.conf
/etc/lilo.conf

35
Irontec Curso bsico Linux

Instalacin de CentOS

/home Directorios de los usuarios del


sistema (Linux es multiusuario)
/home/username

Archivos del usuario

Configuraciones especficas del usuario

/lib Libreras compartidas del sistemas

/lost+found Directorio donde se dejan los


archivos que FSCK recuperara despus de
una cada del sistema. (Sistemas de
ficheros sin Journaling)

36
Irontec Curso bsico Linux

Instalacin de CentOS

/mnt Punto de montaje genrico donde


se montarn 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...

37
Irontec Curso bsico Linux

Instalacin de CentOS

/usr Directorio donde se encuentran todos los


programas
/usr/src/linux Kernel de Linux
/usr/doc Documentacin de los programas

38
Irontec Curso bsico Linux

Instalacin de CentOS

Grub es el gestor de arranque. Se encargar de


arrancar CentOS y cualquier sistema operativo que
detecte.

39
Irontec Curso bsico Linux

Instalacin de CentOS

Configuracin de la red Ethernet. Puede ser por


DHCP o con IP fija.

40
Irontec Curso bsico Linux

Instalacin de CentOS

Especificar contrasea para root. El usuario root es


el Administrador de la mquina y tiene permiso para
todo.

41
Irontec Curso bsico Linux

Instalacin de CentOS

Ahora toca seleccionar que deseamos instalar en el


sistema. Por defecto se instalar el escritorio
Gnome.

42
Irontec Curso bsico Linux

Instalacin de CentOS

Ya est, instalacin de CentOS finalizada. Ya nos


podemos autodenominar hackers.

43
Irontec Curso bsico Linux

Configuracin inicial

Con el primer inicio del sistema accederemos a un


asistente de configuracin.

Se desactivar el Cortafuegos y SELinux para evitar


problemas durante el curso.

Crearemos un usuario sin privilegios.

44
Irontec Curso bsico Linux

EJERCICIO

Navegar por el sistema de ficheros y comprobar que lo


que vemos se ajusta o no al mapa.

Comprobar la versin del ncleo y ver en la web si


existe una versin nueva. Se podr actualizar?

45
Irontec Curso bsico Linux

Comandos bsicos

Comandos bsicos

46
Irontec Curso bsico Linux

Introduccin a GNU/Linux

Shells
Existen muchas shells: sh,csh,ksh,bash...
Entorno de trabajo:

Case sensitive: sensible a maysculas (ECHO != echo).

Sintxis: comando arg1 arg2... argn

Si un programa no est en el PATH: ./programa

Prompt:
$: usuario normal
#: usuario administrador (root)

47
Irontec Curso bsico Linux

Comandos bsicos

Comandos para el manejo del sistema de ficheros


ls (lista contenido de directorios)
cd / pwd (cambia /muestra la ruta de directorio)
touch (crea fichero vaco o actualiza existente)
cp / mv / rm (copia / mueve/ elimina fichero)
mkdir / rmdir (crea / elimina directorio)
man / info (ayuda sobre comandos)
echo (muestra una lnea de texto)
date / cal (muestra la hora del sistema)
file (muestra el tipo de fichero)
halt / reboot (apaga el sistema)
sleep (cuentra atrs)

48
Irontec Curso bsico Linux

Comandos bsicos

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/

49
Irontec Curso bsico Linux

Comandos en GNU/Linux

Comandos para bsqueda 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 {} \;

50
Irontec Curso bsico Linux

EJERCICIO

Ir a tmp.
Crear un fichero llamado prueba.
Renombrarlo a nominas.
A continuacin copiar nominas a nuestra home.
Una vez hecho, buscamos en todo el disco duro los
ficheros con nombre nominas y los borramos.

51
Irontec Curso bsico Linux

EJERCICIO

Comprobar con file distintos ficheros del disco duro y


comprobar los resultados que nos d.
Cambiar la fecha del sistema (buscar informacin en
google). Vamos a adelantarnos al 2009.
Programar un reinicio del sistema dentro de dos
minutos.

52
Irontec Curso bsico Linux

EJERCICIO

Localizar el comando ifconfig e intentar ejecutarlo.


Ejecutar echo $PATH Qu es esa informacin?
Ejecutarlo como usuario root. Qu diferencias
encontramos?

53
Irontec Curso bsico Linux

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 carcter
[]: sustituye un carcter de los indicados

Expansin de comandos y archivos

54
Irontec Curso bsico Linux

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 nminas
Buscar en el disco duro todos los ficheros que empiecen
por n.

55
Irontec Curso bsico Linux

Introduccin a GNU/Linux

Tuberas
Un proceso en un sistema UNIX-like tiene inicialmente
abiertos 3 canales:

0: STDIN o entrada estndar

1: STDOUT o salida estndar

2: STDERR o salida de error
Imaginmonos una refinera:

Metes crudo por 0 (STDIN), consigues gasolina por 1
(STDOUT) y bastantes residuos por el desage 2 (STDERR).

56
Irontec Curso bsico Linux

Introduccin a GNU/Linux

Tuberas
Redirigiendo la salida de un comando:

> : redirigir STDOUT a un fichero:
ls > listado.txt

>>: redirigir STDOUT al final de un fichero (aadir):
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 > salida 2>&1

57
Irontec Curso bsico Linux

EJERCICIO

Aadir datos al fichero nomina mediante echo.


Juan 1000 euros
Pedro 980 euros
Jose 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.

58
Irontec Curso bsico Linux

EJERCICIO

Usando STDIN, STDOUT utilizar cat para crear otro


fichero llamado nominas2 con los siguientes datos:
Elisa 1200 euros
Pepa 1400 euros
Sara 200 euros
No se puede usar echo!

59
Irontec Curso bsico Linux

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 lneas de un
fichero)
grep (busquedas basadas en expresiones regulares)

60
Irontec Curso bsico Linux

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

61
Irontec Curso bsico Linux

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 aadir
lineas con echo.
Para que nos puede servir el tail -f?
Hacer un tail del servicio httpd y acceder a nuestra web.

62
Irontec Curso bsico Linux

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

63
Irontec Curso bsico Linux

EJERCICIO

Contar el nmero de lneas que tiene el fichero de


nominas.
Comprimir el fichero de nominas y comprobar su
tamao.
Descomprimirlo y volver a comprobar su tamao.

64
Irontec Curso bsico Linux

Introduccin a GNU/Linux

Tuberas
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 desage y conducirlo a la
entrada de otro comando.
cat fichero.txt | tr a A

65
Irontec Curso bsico Linux

EJERCICIO

Usando los comandos ya vistos mostrar del fichero /etc/


passwd nicamente los usuarios que comiencen por s.

66
Irontec Curso bsico Linux

Comandos bsicos

El sistema es multitarea, podemos dejar multiples


procesos corriendo en background.
Con control+z llevamos el siguiente proceso a
background.
Con fb [nmero de proceso] lo traemos de nuevo al
frente.
Con bg listamos el ltimo proceso enviado a
background.

67
Irontec Curso bsico Linux

EJERCICIO

Ejecutar los siguientes tres comandos e ir enviandolos a


background:
sleep 70
sleep 80
sleep 90
Una vez hecho, se debe volver a traer uno a uno al
frente.

68
Irontec Curso bsico Linux

Comandos bsicos

Es posible crear alias de comandos, de forma que sea


ms sencillo de recordar para nosotros.
alias apagar=halt

69
Irontec Curso bsico Linux

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 (tamao,
propietarios, permisos...).

70
Irontec Curso bsico Linux

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

71
Irontec Curso bsico Linux

Administracin de usuarios

Administracin de usuarios

72
Irontec Curso bsico Linux

Gestin de Usuarios y Grupos

Caractersticas de usuarios Unix


Los sistemas Unix son sistemas multiusuario. Cada usuario
tiene una serie de caractersticas 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 informacin de usuarios)

su/sudo (cambia de usuario o privilegios)

73
Irontec Curso bsico Linux

Gestin de Usuarios y Grupos

Gestin de Usuarios
adduser (crear usuarios)
usermod (modificar usuarios)
deluser (eliminar usuarios)

Gestin de Grupos
groupadd (aade grupo o usuario a grupo)
groupmod (modifica grupo)
delgroup (elimina grupo o usuario de grupo)

74
Irontec Curso bsico Linux

Gestin de Usuarios y Grupos

Gestin 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 aade a alumno al grupo softwarelibre

75
Irontec Curso bsico Linux

Gestin de Usuarios y Grupos

Cambiando el propietario y grupo


Para cambiar el propietario o grupo puede hacerse a travs
del nombre o del identificativo (uid o gid).

chown (cambiar el propietario y grupo)

chmod (cambiar los permisos)

76
Irontec Curso bsico Linux

Gestin 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 alumno
uid=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

77
Irontec Curso bsico Linux

Administracin 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 accin con el
archivo.
Es la base de la seguridad de Unix.
2 formas de notacin:

Modo alfabtico

Modo octal

78
Irontec Curso bsico Linux

Administracin de permisos

Permisos de ficheros en sistemas Unix


Modo alfabtico

79
Irontec Curso bsico Linux

Administracin de permisos

Permisos de ficheros en sistemas Unix


Modo octal

80
Irontec Curso bsico Linux

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

+ / -: aadir / eliminar permisos

r (lectura), w (escritura), x (ejecucin)

chmod [modo_octal] archivo

81
Irontec Curso bsico Linux

EJERCICIO

Crear como root un fichero /tmp/nominas y darle


permisos de lectura solo a consultec, no a alumno.
Iniciar sesin con alumno y comprobar si lo puede leer.

82
Irontec Curso bsico Linux

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.

83
Irontec Curso bsico Linux

EJERCICIO

Con alumno crear un fichero llamado privado y darle


permisos para que solo el pueda acceder al fichero.
Luego intentar abrirlo con root.

84
Irontec Curso bsico Linux

EJERCICIO

Abrimos /etc/passwd y comprobarlos los cambios. Le


quitamos la posibilidad de iniciar sesin a alumno.
Luego probamos a iniciar sesin con el.

85
Irontec Curso bsico Linux

EJERCICIO

Borramos el usuario alumno y comprobamos a


continuacin los permisos del fichero prueba y su
carpeta de tmp.

Intentar crear ficheros por todo el disco duro,


comprobando as donde tenemos permiso.

86
Irontec Curso bsico Linux

Montaje de dispositivos

Montaje de dispositivos

87
Irontec Curso bsico Linux

Montaje de dispositivos

Diferencia Linux <-> Windows


En Windows los directorios se montan sobre unidades
fsicas:
C:\Carpeta
D:\Drivers\vga
En Linux los dispositivos se montan en directorios de la
estructura de ficheros:
/home/usuario
/media/cdrom

88
Irontec Curso bsico Linux

Montaje de dispositivos

Dispositivos y devices asociados


Disco duro IDE y CDROM: /dev/hdXY

X: Nmero de disco/dispositivo_IDE (a, b, c...)

Y: Nmero de particin (1, 2, 3...)
/dev/hda
/dev/hda1
/dev/hdb3
Disco duro SCSI, SATA y externos USB: /dev/sdXY
/dev/sda
/dev/sda1
/dev/sdc4

89
Irontec Curso bsico Linux

Montaje de dispositivos

Particiones primarias y lgicas


Mximo 4 primarias:
/dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4
Una de ellas se puede establecer como particin extendida:
/dev/hda4
Se pueden crear varias particiones lgicas en una
extendida:
/dev/hda5 /dev/hda6 ...
Linux puede arrancar desde una particin lgica, no as
Windows que requiere una primaria.

90
Irontec Curso bsico Linux

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 opcin user permite que un usuario normal (no root)


monte la particin.

91
Irontec Curso bsico Linux

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/cdrom0
mount -t ext3 /dev/hdb1 /media/disco_2
mount -t vfat /dev/hda2 /mnt/windowsXP

92
Irontec Curso bsico Linux

Montaje de dispositivos

mount (II)
Notas:

Una particin de tipo VFAT no dispone de permisos ni dueos/
grupos as que no se puede usar el comando chown ni
chmod para permitir a usuarios la escritura.
La particin por defecto es del usuario que la monta (la puede
montar cualquiera si tiene la opcin user).
Se puede fijar el dueo de la particin con la opcin uid, el
grupo con gid y los permisos con umask (ojo, umask es la
mscara invertida).
man mount !!

93
Irontec Curso bsico Linux

Montaje de dispositivos

umount
Desmonta un dispositivo:
umount /dev/dispositivo

umount punto_de_montaje
Slo si el dispositivo no est usado por ningn proceso!

Si un usuario tiene una terminal en /media/cdrom no se podr
desmontar el dispositivo.

Para comprobar qu procesos estn usando un dispositivo:
lsof punto_de_montaje
Ej:
lsof /media/cdrom

94
Irontec Curso bsico Linux

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 montaje
dd if=/dev/zero of=fichero bs=1 count=5120000
mkfs.ext3 fichero
mount -o loop fichero montaje

95
Irontec Curso bsico Linux

EJERCICIO

Nos metemos en la carpeta y creamos un fichero.


Abrimos otra consola y desmontamos la carpeta.
Configuramos el fstab para que automticamente monte
el dispositivo al iniciar el sistema.

96
Irontec Curso bsico Linux

Editor VI

Es el editor que encontraremos en todo UNIX. Es


necesario conocer el funcionamiento bsico para
poder editar ficheros.

Tiene varios modos de funcionamiento, visual,


comando y edicin.

Tiene muchsimas opciones...

http://www.infor.uva.es/~arturo/Asig/EstSO/manvi.pdf

97
Irontec Curso bsico Linux

Enlaces duros y simblicos

Enlaces duros y simblicos

98
Irontec Curso bsico Linux

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
representacin que GNU/Linux le da a los archivos
es posible que dos o ms nombres apunten al
mismo contenido en el disco rgido..

99
Irontec Curso bsico Linux

Enlaces duros y simblicos

Simblicos: 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 comparacin con los "Accesos directos"
de Windows95. La orden ln -s genera un enlace
simblico.

100
Irontec Curso bsico Linux

Enlaces duros y simblicos

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

101
Irontec Curso bsico Linux

Enlaces duros y simblicos

Creacin de un enlace simblico

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

102
Irontec Curso bsico Linux

Crontab

Crontab

103
Irontec Curso bsico Linux

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.

104
Irontec Curso bsico Linux

Tareas peridicas

cron
La sintaxis tpica de los ficheros de cron consiste en 6
campos:
* * * * * [user] comando parametros

minuto: 0-59. Nmero, rango, intervalo o lista


(separada por comas).
hora: 0-23.
da del mes: 1-31.
mes: 1-12 o nombres.
da de la semana: 0-7 o nombres.
usuario: slo en ficheros comentados anteriormente.
comando: el resto de la lnea es el comando a
ejecutar.
Nota: Tambin puede haber lneas al principio con
declaracin de variables y comentarios (#).
Ms info (man 5 crontab).
105
Irontec Curso bsico Linux

Tareas peridicas

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 da por la noche


20 3 * * * /root/scripts/backupDiario.sh

# rotacin de backups cada mes


0 1 1 * * cd /root/scripts; ./rotaBackups.sh

106
Irontec Curso bsico Linux

Tareas peridicas

cron
Creacin o edicin 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

107
Irontec Curso bsico Linux

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.

108
Irontec Curso bsico Linux

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
aadiendo el texto adios al mismo fichero.
Crear una tarea que cada hora borre el fichero.
Lo abrimos con tail -f y vemos el progreso.

109
Irontec Curso bsico Linux

Programacin Bsica en Shell

Programacin Bsica
en Shell (Bash)

110
Irontec Curso bsico Linux

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

111
Irontec Curso bsico Linux

Shell Scripts

Nuestro primer shell script


Usamos un editor y creamos el fichero hola.sh:

#!/bin/sh
echo hola

Con #! en la primera lnea indicamos quin debera


interpretar el resto de comandos (/bin/sh).
Posteriormente escribimos los comandos separados por
saltos de lnea.

112
Irontec Curso bsico Linux

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

113
Irontec Curso bsico Linux

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, slo 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.

114
Irontec Curso bsico Linux

Shell Scripts

Variables: interactividad
Es posible leer del usuario el valor de una variable,
dotando a nuestros scripts de interactividad.
cat hola.sh

#!/bin/sh
echo Dime tu nombre:
read NOMBRE
echo Hola $NOMBRE, encantado de conocerte

115
Irontec Curso bsico Linux

Shell Scripts

Variables: argumentos
Es posible pasar los parmetros o argumentos que
queramos y utilizarlos dentro del script.
cat nombre.sh

#!/bin/sh
echo Nombre: $1
echo Primer Apellido: $2
echo Segundo Apellido: $3

./nombre.sh Juan Lpez Martnez


./nombre.sh Maria Dolores Pradera Snchez
$1, $2, $3... ${10}, ${11}: argumentos
$0 es el propio script.

116
Irontec Curso bsico Linux

Shell Scripts

Variables: argumentos especiales


$#: 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.

117
Irontec Curso bsico Linux

Shell Scripts

Variables: sustitucin de comandos


Es posible almacenar en una variable el resultado de la
ejecucin de un comando.
Dos sintaxis:

Acentos graves: compatibilidad
LISTADO=`ls`


Con $(): anidable
LISTADO=$(ls)
LISTADO=$(ls $(cat directorios.txt))

118
Irontec Curso bsico Linux

Shell Scripts

expr: Permite realizar operaciones aritmticas.


Sintaxis: expr ARG1 OP ARG2

$ SUMA=`expr 7 + 5` (ojo espacios!)


$ echo $SUMA
12

$ expr 7 \> 5 (ojo escapar


operadores!)
$ expr \( 7 + 5 \) \* 2

119
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


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 REVS QUE EN C!!)

http://www.ss64.com/bash/test.html

120
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


if: alternativa simple. Sintaxis:

if condicin_1
then
comandos
elif condicin_2
then
comandos
else
comandos
fi

121
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


if. Ejemplo:

if test $NOMBRE == Juan


then
echo Hola Juanin, qu tal?
elif test $NOMBRE == Pedro
then
echo Pedreteee, cunto tiempo!
else
echo No te conozco
fi

122
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


case: cmodo para evitar alternativas anidadas. Sintaxis:

case $VARIABLE in
VALOR1) comandos
;;
VALOR2) comandos
;;
*) comandos;
esac

123
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


case. Ejemplo:

case $NOMBRE in
Juan) echo Hola Juanin, qu tal?
;;
Pedro) Pedreteee, cunto tiempo!
;;
*) echo no te conozco;
esac

124
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


while. Ejecucin de 0 a N veces. Sintaxis:

while condicin
do
comandos
done

125
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


while. Ejemplo:

N=1
while [ $N -lt 100 ]
do
echo Repito esta frase, ya voy $N veces
N=$(expr $N + 1)
sleep 1 # Esperamos 1 segundo
done

126
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


until. Ejecucin de 0 a N veces. Idntico a while con la
condicin negada. Sintaxis:

until comando
do
comandos
done

127
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


until. Ejecucin de 0 a N veces. Idntico a while con la
condicin negada. Sintaxis:

N=1
until [ $N -ge 100 ]
do
echo Repito esta frase, ya voy $N veces
N=$(expr $N + 1)
done

128
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


for: ejecucin repetitiva asignando a una variable de
control valores de una lista. Sintaxis:

for VARIABLE in LISTA


do
comandos
done

129
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


for. Ejemplo:

for N in Sopa Carne Pan de ajo


do
echo Hoy comemos $N
done

130
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


for: la LISTA define la separacin 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 $PATH
do
echo $DIR
done

131
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


for. Ejemplos numricos:

for N in 1 2 3 4 5 6 7 8 9 10
do
echo N ahora vale $N
done
for N in $(seq 10)
do
echo N ahora vale $N
done

132
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


select: muestra las opciones especificadas en LISTA y
asigna a VARIABLE la opcin escogida. Sintaxis:

select VARIABLE in LISTA


do
comandos
done

133
Irontec Curso bsico Linux

Shell Scripts

Control del flujo de ejecucin


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

IMPORTANTE: sin el break el select seguira ejecutndose


indefinidamente.

134
Irontec Curso bsico Linux

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.

135
Irontec Curso bsico Linux

Shell Scripts

function. Ejemplo:
#!/bin/sh
function suma
{
echo $(expr $1 + $2)
}
suma 4 6
suma 3 234

136
Irontec Curso bsico Linux

Shell Scripts

source, .
Con source o con . podemos incluir el cdigo de otro
script en el nuestro:

#!/bin/sh
source funciones.sh # ah se define suma
suma 1 3
suma 12 12312

137
Irontec Curso bsico Linux

EJERCICIO

Crear un script que nos pida nombre de usuario y


contrasea.
Una vez tengamos los datos los aadimos al fichero
/tmp/datos
A continuacin nos pregunta si deseamos continuar
insertando datos. Si la respuesta es si, volvemos a
empezar, si es no terminamos la aplicacin.

138
Irontec Curso bsico Linux

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 das a
las 10 de la noche.

139
Irontec Curso bsico Linux

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
operacin sea 82.

140
Irontec Curso bsico Linux

Redes

Redes

141
Irontec Curso bsico Linux

Configuracin 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=eth0
BOOTPROTO=dhcp
HWADDR=00:0C:29:3D:90:4F
ONBOOT=yes

[root@localhost network-scripts]# cat ifcfg-lo


DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

142
Irontec Curso bsico Linux

Configuracin de la red

Configuracin manual de la red


ifconfig: configura interfaces de red. Asigna IP, mscara,
gateway, etc.
$ ifconfig eth0 192.168.0.12 netmask 255.255.255.0 up

route: aade rutas estticas. Ejemplo tpico:


$ 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

143
Irontec Curso bsico Linux

Configuracin de la red

IP alias: crear un interfaz de red sobre otro.



Una misma red fsica puede albergar distintas redes con
distinto direccionamiento y rango.

$ ifconfig eth0:1 192.168.1.123 netmask 255.255.255.0

$ ifconfig eth0:1
eth0:1
Link encap:Ethernet HWaddr 00:14:85:E8:D3:AF
inet addr:192.168.1.123 Bcast:192.168.1.255
Mask:255.255.255.
UP BROADCAST RUNNING MULTICAST MTU:1500
Metric:1 Interrupt:217 Base address:0xe800

144
Irontec Curso bsico Linux

Configuracin de la red

Configuracin manual 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'

145
Irontec Curso bsico Linux

Configuracin de la red

Configuracin automtica de la red (DHCP)


Configuracin para el arranque: en /etc/network/interfaces
definimos la interfaz como inet dhcp
Configuracin manual:

se utiliza un cliente dhcp como dhclient o pump

# dhclient eth0
# pump -i eth0

146
Irontec Curso bsico Linux

Comandos bsicos de administracin 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.132
PING 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 trfico ICMP est filtrado


por algn firewall.

147
Irontec Curso bsico Linux

Comandos bsicos de administracin de red

telnet: protocolo de terminal remoto


Se utiliza para conectarse a una mquina remota.

$ telnet IP puerto (default 23)

NO es un protocolo seguro (SSH s).


Se utiliza tambin para comprobar estado de servicios
remotos. Ejemplo:

$ telnet www.euskalnet.net 80
Connected to eui3h.euskaltel.es.
Escape character is '^]'.

el servidor web funciona!

148
Irontec Curso bsico Linux

Comandos bsicos de administracin de red

netstat: muestra conexiones de red


Comando potente que permite mostrar casi toda la
informacin de la configuracin TCP/IP de la mquina
(man netstat).
Ejemplos:

netstat -atup # muestra tambien procesos


netstat -a # muestra todas las conex.
netstat -a | grep LISTEN
netstat -a | grep ESTABLISHED
netstat -nrv # muestra tabla de rutas

149
Irontec Curso bsico Linux

Comandos avanzados administracin de red

iptraf:

150
Irontec Curso bsico Linux

Comandos avanzados administracin de red

netcat (nc): navaja suiza de red

Capaz de funcionar como cliente, como servidor, etc.


telnet 127.0.0.1 80
Trying 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 5000
cat fichero | nc 192.168.1.1 5000

151
Irontec Curso bsico Linux

Comandos avanzados administracin de red

nmap: escaneador de red

Permite comprobar que puertos estn o no abiertos.

Nos dice el sistema operativo y la versin 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
152
Irontec Curso bsico Linux

Iptables

IPTABLES

153
Irontec Curso bsico Linux

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.

154
Irontec Curso bsico Linux

Iptables

Tablas y cadenas

155
Irontec Curso bsico Linux

Iptables

Destino: nuestra mquina

156
Irontec Curso bsico Linux

Iptables

Origen: nuestra mquina

157
Irontec Curso bsico Linux

Iptables

Paquetes Reenviados (Forwarded)

158
Irontec Curso bsico Linux

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 !

159
Irontec Curso bsico Linux

Iptables

Tabla nat
Slo 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 (esttica)
Para dar salida a equipos LAN con IP's locales.
Masquerade:
Igual que SNAT con ms carga de procesador.
Cada vez chequea la IP saliente que debe asignarle.
Ej: Router Linux con IP pblica dinmica.

160
Irontec Curso bsico Linux

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

161
Irontec Curso bsico Linux

Iptables
Estado de los paquetes
NEW: paquete nuevo.
ESTABLISHED: comunicacin ya establecida.
RELATED: relaionada a otra comunicacin ESTABLISHED.
Para protocolos como FTP que incluyen puerto de transmisin de
datos dentro de datos de aplicacin.
Hace falta un mdulo 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 mdulo ip_conntrack.

162
Irontec Curso bsico Linux

Iptables

Estado de los paquetes (II)


Ejemplo:
Nuestra mquina enva un paquete a otra mquina:
Estado de la comunicacin: NEW.
Cadena OUTPUT.
La mquina destino nos responde con otro paquete.
Estado de la comunicacin: ESTABLISHED.
Cadena PREROUTING.

163
Irontec Curso bsico Linux

Iptables

Listar reglas actuales


iptables -L -v
iptables-save
Lista las reglas en un formato vlido para iptables-restore.
iptables-save > fichero-reglas (salva las reglas a fichero)
iptables-restore < fichero-reglas (carga reglas desde fichero)

164
Irontec Curso bsico Linux

Iptables

Comando iptables
Sintaxis para aadir una regla:
iptables [-t tabla] comando [comparacin] [objetivo/salto]

Los scripts de iptables constan de muchas lneas similares.

165
Irontec Curso bsico Linux

Iptables

Comandos
-A : Aade la regla al final de la cadena.
iptables -A INPUT (aade 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 posicin indicada.
-L : Lista todas las reglas (de la cadena especificada).
-F : (Flush) Elimina todas las reglas (de la cadena
especificada).

166
Irontec Curso bsico Linux

Iptables
Comparaciones
Comparaciones genricas:
-p, --protocol : Para comprobar si es TCP, UDP o ICMP.
iptables -A INPUT -p tcp
-s, --src : Comparacin de IP origen.
iptables -A INPUT -s 192.168.1.10
iptables -A INPUT -s 192.168.1.0/24
iptables -A INPUT -s ! 192.168.1.0/24
(invertir)
-d, --dst : Comparacin de IP destino.
iptables -A INPUT -d 192.168.0.1
iptables -A INPUT -d 192.168.0.0/16
-i, --in-interface : Interfaz origen.
Slo vlida en INPUT, FORWARD y PREROUTING.
iptables -A INPUT -i eth0
iptables -A INPUT -i eth+ (por cualquier
eth)
-o, --out-interface : Interfaz de salida.
Slo vlida en OUTPUT, FORWARD y POSTROUTING.
iptables -A FORWARD -o eth0
167
Irontec Curso bsico Linux

Iptables

Comparaciones implcitas
Comparaciones que se cargan implcitamente:
TCP
UDP
ICMP
Estas comparaciones se cargan con la opcin -p:
iptables -p TCP (o UDP, ICMP)

168
Irontec Curso bsico Linux

Iptables

Comparaciones implcitas TCP


-p tcp
--sport : Puerto origen.
iptables -A INPUT -p tcp --sport 1003
iptables -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 SYN
iptables -A INPUT -p tcp --tcp-flags SYN
iptables -A INPUT -p tcp --tcp-flags
SYN,FIN,ACK SYN

169
Irontec Curso bsico Linux

Iptables

Comparaciones implcitas UDP


-p upd
--sport : Igual que en TCP.
--dport : Igual que en TCP.

170
Irontec Curso bsico Linux

Iptables

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

171
Irontec Curso bsico Linux

Iptables

Comparaciones explcitas
Se deben cargan explcitamente con opcin -m (--match).
--state ESTADO : Verifica el estado de la conexin.
NEW, INVALID, ESTABLISHED, RELATED
iptables -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
Ms comparaciones:
TOS, TTL, multiport...

172
Irontec Curso bsico Linux

Iptables

Objetivos/Saltos
Accin que se ejecuta sobre el paquete.
-j ACCIN
Salto: Mandar el paquete a otra cadena:
-j cadena
Podemos crear cadenas propias:
iptables -N cadena_tcp
iptables -A INPUT -p tcp -j cadena_tcp

173
Irontec Curso bsico Linux

Iptables

Objetivos
ACCEPT : Aceptamos el paquete.
El paquete deja de compararse en la cadena
actual y en las cadenas de la tabla actual !
El paquete podra ser filtrado en otra tabla
!

DROP : Deseacha un paquete.

REJECT : Rechaza un paquete (enva un ICMP informativo al


origen).

LOG : Loguea el paquete en ssylog.

DNAT : Cambiamos la IP destino.


Slo 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

174
Irontec Curso bsico Linux

Iptables
Objetivos (II)
SNAT : Cambiamos la IP origen.
Slo 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)


Slo 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 mquina.


Slo 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

175
Irontec Curso bsico Linux

Iptables

Poltica por defecto


Dos filosofas:
1: Todo abierto y cerrar aquello que no queramos
2: Todo cerrado y abrir aquello que queramos
Mucho ms segura la 2 !
Poltica por defecto en cada cadena (slo se cumple si el
paquete no coincide con ninguna regla):
iptables -P cadena poltica

Denegamos acceso a la mquina y otras mquinas:


iptables -P INPUT DROP
iptables -P FORWARD DROP
Permitimos acceso total al exterior desde nuestra propia mquina:
iptables -P OUTPUT ACCEPT

176
Irontec Curso bsico Linux

Iptables

Poltica 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 !
Solucin: Aadir:
iptables -A INPUT -p ALL -i lo -j ACCEPT

177
Irontec Curso bsico Linux

Iptables

sysctl
Para habilitar el rutado:
#> echo 1 > /proc/sys/net/ipv4/ip_forward
Ms elegante:
#> sysctl -w net.ipv4.ip_forward=1
Para dejarlo definitivo (activo en el arranque):
Fichero /etc/sysctl.conf:
net/ipv4/ip_forward=1

178
Irontec Curso bsico Linux

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 mdulos necesarios para nuestras reglas.
Imprescindible el mdulo ip_tables !

179
Irontec Curso bsico Linux

Iptables

Ejemplo
Aspectos comunes de los scripts:
Borrado de las reglas aplicadas actualmente (flush)
Aplicacin de polticas por defecto para INPUT, OUPUT,
FORWARD
Listado de reglas iptables.

180
Irontec Curso bsico Linux

Iptables
Ejemplo (II)
#!/bin/sh
## SCRIPT de IPTABLES
## Red local: eth0 - 192.168.0.0/24
## Internet: eth1 IP dinmica

# Borrar reglas:
iptables F
iptables t nat F

# Poltica por defecto:


iptables P INPUT DROP
iptables P OUTPUT ACCEPT
iptables P FORWARD DROP
iptables t nat P PREROUTING ACCEPT
iptables t nat P POSTROUTING ACCEPT

# Permito acceso local:


iptables -A INPUT -p ALL -i lo -j ACCEPT

181
Irontec Curso bsico Linux

Iptables
Ejemplo (III)
# Masquerading para red local con IP pblica dinmica:
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 mquina:


iptables A INPUT p TCP dport 22 m state state NEW j ACCEPT

# Redirigir HTTP a una mquina local:


iptables t nat A PREROUTING i eth1 p tcp dport 80 j DNAT to
192.168.0.2:80

182
Irontec Curso bsico Linux

Iptables

Ms info:
http://iptables-tutorial.frozentux.net/spanish/chunkyhtml
Tutorial completo de Iptables en castellano.

183
Irontec Curso bsico Linux

Paquetes de software

Paquetes de software

184
Irontec Curso bsico Linux

Paquetes de software

Un paquete es un fichero que contiene un programa,


scripts de instalacin y ficheros de configuracin.

Es posible instalar, eliminar programas y actualizar el


sistema completo con un solo comando, yum.

Tambin es posible instalar paquetes a mano sin


yum, pero tendremos que resolver el problema de
dependencias manualmente.

185
Irontec Curso bsico Linux

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

186
Irontec Curso bsico Linux

Paquetes de software

Qu es un repositorio?
El repositorio es un almacn de paquetes. Los
repositorios pueden estar en internet, en un medio
extrable 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/sta
ble/$basearch/RPMS/

187
Irontec Curso bsico Linux

Paquetes de software

Tambin 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

188
Irontec Curso bsico Linux

Paquetes de software

Algunas opciones de rpm.

Instalar: rpm -i nombrepaquete

Borrar: rpm -e nombrepaquete

Ver paquetes instalados: rpm -qa

Actualizar paquete: rpm -Uvh

189
Irontec Curso bsico Linux

Servicios y Niveles de Ejecucin

Servicios y Niveles
de Ejecucin

190
Irontec Curso bsico Linux

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 ejecucin
de arranque.

191
Irontec Curso bsico Linux

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.

192
Irontec Curso bsico Linux

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) # particin 2 del maestro IDE
0

Ficheros
Es necesario indicar la ruta completa
(hd0,0)/boot/grub/menu.lst

193
Irontec Curso bsico Linux

Gestores de arranque

Grub
Datos de interes del archivo menu.lst:

default 0
timeout 3

title Ubuntu, kernel 2.6.12-10-386


root (hd0,1)
kernel /boot/vmlinuz-2.6.12-10-386
root=/dev/hda2 ro quiet splash
initrd /boot/initrd.img-2.6.12-10-386
savedefault
boot

title Microsoft Windows


root (hd0,2)
savedefault
makeactive
chainloader +1

194
Irontec Curso bsico Linux

Niveles de Ejecucin

En los sistemas Unix hay 7 (0...6) 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)

195
Irontec Curso bsico Linux

Niveles de Ejecucin

Init
Es el primer proceso que se crea (PID=1).
Se configura mediante /etc/inittab.

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 (solo 1 vez), respawn
(rearranca una vez finalizado), off (ignora
la lnea)
proceso: path del proceso a ejecutar

196
Irontec Curso bsico Linux

Niveles de Ejecucin

Init

Valores tpicos del archivo /etc/inittab:
id:2:initdefault

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3

1:2345:respawn:/sbin/getty 38400 tty1


2:23:respawn:/sbin/getty 38400 tty2

z6:6:respawn:/sbin/sulogin

# CTRL-ALT-DEL!
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

197
Irontec Curso bsico Linux

Arranque del sistema

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/

198
Irontec Curso bsico Linux

Configurando servicios en arranque y parada

chkconfig
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

# chkconfig --list
# chkconfig --level 345 sendmail off

199

También podría gustarte