Curso básico Linux

  • 21,826 views
Uploaded on

Curso básico de GNU/Linux sobre CentOS. Instalación, comandos de consola, paquetes, permisos, redes, BASH, etc.

Curso básico de GNU/Linux sobre CentOS. Instalación, comandos de consola, paquetes, permisos, redes, BASH, etc.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
21,826
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
1,813
Comments
3
Likes
8

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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