Vous êtes sur la page 1sur 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.

Irontec Curso bsico Linux

Antes de nada...

GNU GPL
Linux
Software Libre
Kernel
GNU/Linux
Distribucin Linux Debian
Paquete

(K)Ubuntu
KDE
Gnome Emule
3

Irontec Curso bsico Linux

Introduccin

Programas informticos
Tipos de Software

Software privativo
Shareware
Freeware
Software libre

Irontec Curso bsico Linux

Introduccin

Qu es eso del Software


Libre?

Irontec Curso bsico Linux

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.

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)

Irontec Curso bsico Linux

Introduccin
Conceptos 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 bsico Linux

Introduccin
Conceptos Generales sobre GNU Linux (II)

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

Irontec Curso bsico Linux

Introduccin
DistribucionesGNULinux(I)

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

10

Irontec Curso bsico Linux

Introduccin
DistribucionesGNULinux(II)

Mandrakesoft:Nacidaen1998,conobjetivo
principal:instalacinyusodiariosencillos.
Crecimientoespectacularen2aos(3a100
empleados).
SuSE:Proyectodeempresaaleman,iniciadoen
1993.PrimerasversionesbasadasenSlackware.En
laactualidaddistribucintotalmentepropia.Ofrecen
soporteprofesionaldecalidad,similaraldeRedHat.

11

Irontec Curso bsico Linux

Introduccin
DistribucionesGNULinux(III)

Slackware:DistribucindesarrolladaporPatrick
Volkerding.PrimeraversinpublicadaenAbrilde
1993.Noofrecesoportetcnicoprofesionaldirecto.
Knoppix:EselSistemaLive(ejecucindesde
CDRomsininstalacin)mspopular.Soporta
prcticamentetodoslosdispositivoshardwaredel
mercado.Muypopularcomomtododeiniciacina
GNULinux.

12

Irontec Curso bsico Linux

Introduccin
DistribucionesGNULinux(IV)

Ubuntu:DistribucinbasadaenDebian,centradaen
elsistemadeescritorio(aunquetambindisponede
versinservidor).Nuevaversincada6meses.
CentOS:Distribucinbasadaenelcdigofuentede
RedHat.Concadanuevaversinenterprisede
RedHat,Centosdescargaelcdigo,locompilaycrea
supropiaversin.Es100%compatibleanivelbinario
conRedHat.

13

Irontec Curso bsico Linux

Introduccin
Versiones

2.4.19

SubVersin:
Parindicaestable
Imparindica
inestable

2.5.3

Versin

Release

Enlaprctica,sedenomina
versinatodoelconjunto.

14

Irontec Curso bsico Linux

Introduccin

Situacin de GNU/Linux

15

Irontec Curso bsico Linux

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

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

Introduccin
SituacinrealdeGNULinuxenelpanorama
empresarial:Desarrolloysistemas

Desarrollo(web):Lapuntadelalanzaresideen
solucionesLAMP(LinuxApacheMySQL,PHP):
Pros:Rapidez,seguridad,integracincon
prcticamentetodoslosprotocolosycomunidadde
desarrolladoresmuyactiva(numerosaslibrerasy
cdigoreutilizable).
Contras:IntegracinconsolucionesMSWindows

18

Irontec Curso bsico Linux

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

Caracteres especiales

Absolutas: desde el directorio raiz hasta el archivo


deseado.
Relativas: desde el directorio actual hasta el archivo
deseado.
*: 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>
proc
/proc
proc
defaults

<dump>
0

<pass>
0

/dev/hda1
/dev/hda3
/dev/hda2

/
/home
none

ext3
ext3
swap

defaults,errors=remount-ro 0
defaults
0
sw
0

1
2
0

/dev/hdb1

/media/hdb1

ext3

defaults

/dev/hdc

/media/cdrom0

udf,iso9660 user,noauto

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 ~]$
[punisher@shyris ~]$
[punisher@shyris ~]$
2747992 -rw-r--r-- 2
2747992 -rw-r--r-- 2

touch hola
ln hola adios
ls -li hola adios
punisher users 0 jun 12 16:40 adios
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`
$ echo $SUMA
12
$ expr 7 \> 5
operadores!)
$ expr \( 7 + 5 \) \* 2

(ojo espacios!)

(ojo escapar

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

-atup # muestra tambien procesos


-a # muestra todas las conex.
-a | grep LISTEN
-a | grep ESTABLISHED
-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.

--state

Hace falta un mdulo para Netfiler: ip_conntrack_ftp.

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+
eth)
-o, --out-interface : Interfaz de salida.

(por cualquier

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 --todestination 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.23.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.23.el5.i386
libpurple.so.0 is needed by pidgin-2.0.23.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, CDROM,..) y pasa el control al MBR (512 bytes).
Se carga el gestor de arranque (instalado en MBR).
Se carga el kernel.
Se monta el sistema de ficheros raiz (/).
Se inicia el init (el abuelo de todos los procesos).
Se lee el archivo /etc/inittab.
Se ejecutan los scripts indicados por el nivel de ejecucin
de arranque.

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)
(fd0)
(hd0,1)
0

# disco maestro IDE primario


# disquetera
# particin 2 del maestro IDE

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
timeout

0
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
root
savedefault
makeactive
chainloader

Microsoft Windows
(hd0,2)

+1
194

Irontec Curso bsico Linux

Niveles de Ejecucin

En los sistemas Unix hay 7 (0...6) niveles de ejecucin

nivel
nivel
nivel
nivel
nivel

0: estado de parada (halt)


1: monousuario
2, 3 y 5: multiusuario
4: no tiene un uso especfico
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
l1:1:wait:/etc/init.d/rc
l2:2:wait:/etc/init.d/rc
l3:3:wait:/etc/init.d/rc

0
1
2
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

Vous aimerez peut-être aussi