• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introducción a GNU - POSIX - LINUX
 

Introducción a GNU - POSIX - LINUX

on

  • 222 views

Una presentación abordando diversos tópicos técnicos de Linux, sin dejar de lado las diferencias que hay entre versiones.

Una presentación abordando diversos tópicos técnicos de Linux, sin dejar de lado las diferencias que hay entre versiones.

Statistics

Views

Total Views
222
Views on SlideShare
220
Embed Views
2

Actions

Likes
0
Downloads
2
Comments
0

2 Embeds 2

http://www.linkedin.com 1
http://www.slideee.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introducción a GNU - POSIX - LINUX Introducción a GNU - POSIX - LINUX Presentation Transcript

    • GNU – Linux – UNIX Sistemas Operativos Autor: José Plá
    • Estructura de directorios • bin – • boot – • Todo en linux es un archivo, desde los puertos seriales, discos duros y escaners. Para poder acceder a estos archivos se necesita un archivo especial. etc – • Directorio de inicio de Linux. El kernel del sistema se guarda en este directorio. dev – • Programas esenciales. Representan el minimo para un usuario utilice el sistema. Cosas como el shell y comandos básicos del sistema de archivos. Aquí se guardan los archivos de configuración del sistema. Desde los archivos de configuración del ambiente X, el registro de usuarios y scripts de inicio del sistema. Este es el más importante de los directorios para un SysAdmin. home – UNIX/Linux es un sistema operativo multiusuario. Cada usuario en el sistema se le crea una cuenta y un directorio para archivos personales. Este directorio se le llama el directorio hogar (home) del usuario. Es el directorio predeterminado de todo usuario, además de contener archivos de personalización propios de cada usuario. 2
    • Estructura de directorios • lib – • mnt – • Paquetes opcionales de software. La idea es guardar bajo un mismo directorio las instalaciones de todos los paquetes que se instalen para así poder removerlos de forma más sencilla posteriormente. proc – • Los puntos para montar temporalmente los discos duros, discos removibles, CD-ROMs y hasta discos flexibles, se encuentran bajo este directorio. opt – • Las librerias del sistema que son necesarios para la operación básica del sistema se guardan en este directorio. Los módulos del kernel y la librería de C son unas de las muchas cosas que se guardan en este directorio. Este directorio es propio de sistemas Linux y tiene ciertas características especiales; no es parte real del sistema de archivos, sino un sistema de archivos virtual que provee acceso a información del kernel. Como por ejemplo ejecutando el comando ‘cat /proc/cpuinfo’. root – El administrador del sistema es conocido como “root”. El directorio de root no se encuentra bajo home, debido a que se corre el riesgo de que home esté en una partición por aparte, y que por alguna razón la partición no monte, entonces el administrador accedería como root para solucionar el problema; de haber estado bajo home, root hubiera tenido problemas para acceder al sistema. 3
    • Estructura de directorios • sbin – • tmp – • Almacenamiento temporal. Todos los usuarios tienen acceso de lectura y escritura para este directorio. usr – • Programas esenciales que son ejecutados por root y mientras que el sistema inicia son guardados aquí. Usuarios normales no usan programas de este directorio. Este es el mayor de los directorios padre en un sistema UNIX/Linux. Todo lo no mencionado anteriormente va acá, programas, documentación, el código fuente del kernel, el sistema de ventanas X. Este es el directorio donde se instalará la mayoría de los programas. var – Bitácoras “logs” del systema y programas, cache y archivos bandera de diferentes programas, se guardan aquí. En resumen este es el directorio donde la información cambia constantemente. 4
    • AYUDA S.O.S •¿Cómo se aprende UNIX/Linux? Leyendo •¿Qué voy a leer? MANuales Así como root es el superusuario, el comando man es el supercomando. Sus páginas se llaman manpages y esta dividido por secciones según la función. 5
    • MANunales •El indice de manuales se divide en secciones, para una mayor facilidad de uso. •Normalmente las secciones se distribuyen de la siguiente manera, aunque esto puede cambiar según la distribución de Linux o Unix: – – – – – – – – Sección 1 Sección 2 Sección 3 Sección 4 Sección 5 Sección 6 Sección 7 Sección 8 comandos de usuario llamadas de sistema llamadas de bibliotecas C dispositivos (p.e. hd, sd) formatos de archivo y protocolos (p.e. wtmp, /etc/passwd, nfs) juegos (solo introducción) convenciones, paquetes macro, etc. (p.e. nroff, ascii) administración del sistema •Buscar por contenido: – apropos <palabra clave> • No se encuentra en todas las distribuciones. – man –k <palabra clave> • Requiere de un man indexado a través del comando catman o mandb, los cuales deben ejecutarse cada vez que se agreguen nuevos manpages al 6 manpath.
    • Buscando MANs •Diferentes formas de busqueda: root@ubuntu:~# apropos crontab crontab (1) - maintain crontab files for individual users (V3) crontab (5) - tables for driving cron root@ubuntu:~# man -f crontab crontab (1) - maintain crontab files for individual users (V3) crontab (5) - tables for driving cron root@ubuntu:~# man -k crontab crontab (1) - maintain crontab files for individual users (V3) crontab (5) - tables for driving cron •Accesando las diferentes secciones del man root@ubuntu:~# man 1 crontab | head -7 CRONTAB(1) NAME crontab - maintain crontab files for individual users (V3) root@ubuntu:~# man 5 crontab | head -7 CRONTAB(5) NAME crontab - tables for driving cron CRONTAB(1) CRONTAB(5) 7
    • Buscando Programas •which(1). which es utilizado para localizar un programa rápidamente. Este solo busca en su PATH y devuelve la primera instancia que encuentre y el camino del directorio hasta esta. root@ubuntu:~# which sh /bin/sh •whereis(1) funciona de manera similar a which, pero puede buscar además en las páginas man y los archivos de fuentes. root@ubuntu:~# whereis sh sh: /bin/sh /bin/sh.distrib /usr/share/man/man1/sh.1.gz 8
    • Moviéndose entre directorios •Change Directory (cambiar directorio) cd cd cd cd cd cd $HOME  directorio ~  directorio  directorio  directorio .  directorio ..  directorio home del usuario home del usuario home del usuario anterior actual jerarquicamente superior •Y ¿como sé en cuál directorio estoy? pwd o echo $PWD 9
    • Busqueda Avanzada •find El comando find(1) le permite al usuario buscar en el sistema de archivos con una rica colección de predicados de búsqueda. Los usuarios pueden especificar una búsqueda con determinados comodines, rangos de modificación u hora de creación, u otras propiedades avanzadas. find se va a demorar un poco en ejecutar, pues tiene que recorrer todo el árbol de directorios. Y si el comando se corre como usuario normal, van a mostrarse mensajes de permisos denegados en los directorios que solo root u otros usuarios específicos tengan acceso. 10
    • Lab 1)mkdir -m 775 -p folder/numeros/{1/2/3/4/5,idiomas/ {espanol/uno/dos/tres/cuatro/cinco,english/one/two/three/four/five}} 2)find ~/folder -type d -exec touch {}/archivo ; 3)find ~/folder -name archivo -print | grep -E "(3|four|cinco)/archivo" | xargs -p rm -f 4)find ~/folder/* -name 3 -o -name four -o -name cinco | xargs -r ls -l 5)find ~/folder/* -type d | awk -F/ '$NF~/(3|four|cinco)/ {if($NF==3) {size=3}if($NF=="four"){size=4}if($NF=="cinco"){size=5} system("dd if=/dev/urandom of="$0"/"size"megas bs=1024 count=0 seek="1024*size"n"); system("ls -l "$0"/"size"megas")}' 6)find 7)find ~/folder -type f -size +4000000c -exec ls -l {} ; 11 ~/folder -path '/root/folder/numeros/1' -prune -o -type f -size
    • Formas de Arranque •Esquemas de init: – sysinit • Es el primer esquema de arranque y el más utilizado, proviene del System V – runit • Viene a sustituir al antiguo sysinit, intenta simplificar el proceso en 3 etapas http://smarden.sunsite.dk/runit/ – Upstart • Iniciativa de sustitución universal para la automatización de tareas y servicios 12
    • Sysinit o System V init •Se basa sobre el archivo /etc/inittab para definir un runlevel predeterminado. •Generalmente hay 8 niveles de funcionamiento para el sistema. •De estos 8, hay 3 que son reservados: – 0. Halt – 1. Single user mode – 6. Reboot Fuera de estos 3 niveles reservados, la mayoría de los UNIX/Linux utilizan sus propios niveles. 13
    • Sysinit o System V init OS Runlevel AIX 2 Cent OS 3 Debian GNU/Linux 3 Gentoo Linux 3 Mac OS X 3 Red Hat Linux /Fedora 3o5 Slackware Linux 3 Solaris 5 Ubuntu 2 $ runlevel $ who -r El runlevel solo puede ser cambiado por root a través de los comandos telinit o init. 3 Suse Linux Se puede ver en que runlevel se encuentra el sistema por medio de los comandos: El runlevel predeterminado se indica en el archivo /etc/inittab en la entrada :initdefault: 14
    • Sysinit o System V init •Cada runlevel tiene un directorio donde se encuentran las referencias a lo que debe o no debe estar corriendo $ pwd /sbin $ ll -d rc[0-9]* dr-xr-xr-x 2 bin dr-xr-xr-x 2 bin dr-xr-xr-x 2 bin dr-xr-xr-x 2 bin dr-xr-xr-x 2 bin bin bin bin bin bin 8192 8192 8192 8192 8192 Dec Aug Mar Feb Feb 17 2006 rc0.d 11 2007 rc1.d 5 2008 rc2.d 19 17:02 rc3.d 19 17:02 rc4.d •Los scripts que comienzan con S denotan “startup” (iniciar) mientras que los que comienzan con K denotan “kill” (matar) la tarea. Los números que le siguen a estas letras representan el orden de ejecución, del menor al mayor. $ ll rc4.d total 0 lrwxr-xr-x 1 root lrwxr-xr-x 1 root lrwxr-xr-x 1 root sys sys sys 32 Dec 17 2006 K451vxpbx_exchanged -> /opt/VRTSpbx/bin/vxpbx_exchanged 20 Dec 6 2006 S150autosec -> /sbin/init.d/autosec 32 Dec 17 2006 S450vxpbx_exchanged -> /opt/VRTSpbx/bin/vxpbx_exchanged •Los archivos bajo estos directorios son vínculos al archivo real, si se desea eliminar la activación automática de una tarea en un runlevel, no se elimina el archivo real, sino solo el vínculo. 15
    • Runit •Orientado al monitoreo de servicios. •Puede instalarse solo para monitoreo de servicios y seguir usando sysinit. •Es independiente de init. •No necesita guardar en archivos el pid de los demonios (daemons), por lo que en caso de falla del sistema no hay errores debido a que el pid-file no se haya podido limpiar correctamente. •Brinda prioridad al log del sistema y de los servicios. •http://smarden.sunsite.dk/runit/ 16
    • Runit •Supervisión de Servicios – Cada servicio esta asociado a un directorio del servicio y cada daemon del servicio correo como un proceso hijo de un proceso runsv de monitoreo que se ejecuta desde este directorio. El programa runsv provee una interfaz confiable para señalar al daemon del servicio y controlar el servicio y su supervisor. Normalmente el programa sv es usado para enviar comandos a través de esta interfaz y para solicitar información del estado acerca del servicio. – El programa runsv supervisa al daemon de servicio correspondiente. De forma predeterminada, un servicio se configura para estar arriba, lo que significa, si el servicio muere, será reiniciado. La configuración de runsv puede indicar lo contrario si así se desea. 17
    • Runit •Estado limpio del proceso – Un proceso antes de ser iniciado, puede necesitar un prechequeo del estado del sistema, para así garantizar un buen funcionamiento del daemon a iniciar. – En sysinit esto hay que hacerlo con un script que garantice un estado limpio del sistema para la correcta ejecución del daemon, el problema esta en que la configuración de estos scripts es por lo general manual, por lo que conlleva a nuevos puntos de falla. 18
    • Upstart •De acuerdo con Canonical, Upstart es un reemplazo de SysV init basado en eventos. Se pretende de que en futuras versiones llegue a remplazar a crontab, y demás programas de calanderización de tareas. •El venerable /etc/inittab sigue existiendo, pero todo lo que hace es indicar cual runlevel es el predeterminado. Todo lo demás es controlado por archivos de configuración en /etc/event.d/ (en Fedora) o /etc/init/jobs.d/ (en Ubuntu). Estos archivos sustituyen ciertas líneas en /etc/inittab; por ejemplo el archivo /etc/event.d/tty1 contiene: start on stopped rc2 start on stopped rc3 start on stopped rc4 stop on runlevel 0 stop on runlevel 1 stop on runlevel 6 respawn exec /sbin/mingetty tty1 •Mientras que en SysV init, un equivalente en /etc/inittab se leería: 1:2345:respawn:/sbin/mingetty tty1 http://upstart.ubuntu.com 19
    • Upstart •Al inicio init lee el directorio /etc/event.d, donde cada archivo describe un proceso que debe ser monitoreado. Esto incluye los pormenores sobre las dependencias del estado del sistema antes de iniciar el proceso, y que eventos pueden causar que el proceso sea iniciado o detenido. •Estados de transición: –Waiting to Starting y Stopped to Starting: ejecuta en el shell el script de inicio del proceso. –Starting to Running y Restarting to Running: reinicia los procesos. –Running to Restarting: ejecuta en el shell el script de reinicio del proceso. –Starting to Stopping, Running to Stopping y Restarting to Stopping: envía señales a los procesos que estén corriendo; ejecuta en el shell el script para detener el proceso. •Además de estos esquemas de inicio, hay otros en el sector privado que ya manejan lo que actualmente realiza Upstart además de muchas de sus ambiciones, estos esquemas son SMF de Solaris y launchd de Apple; ambos basados en XML. 20
    • Manejadores de Paquetes •Todo SO tiene alguna forma de instalar aplicaciones y poder ver que es lo que esta debidamente instalado; estas son aplicaciones independientes que manejan la información de lo que se encuentra instalado, lo que se puede desinstalar y algunas opciones más de otras aplicaciones o utilidades a desinstalar. •¿Si no tuvieramos manejadores de paquetes? –No sabríamos que hay para instalar. –No podríamos obetner rapidamente una lista de lo que esta instalado. –No tendríamos un control automatico de las dependencias. •Instalaríamos software sin que los recursos de otras aplicaciones esten completos. •Desinstalariamos software inhabilitando otras aplicaciones que dependen de este. –No podríamos desinstalar un software completo si este se encuentra distribuido por todo el sistema de archivos. Las librerías perdidas abundarían. 21
    • ¿Repositorios? •Los manejadores de paquetes (Package Managers) mantienen un lista de los repositorios de software. •Los repositorios: –Mantienen todos los paquetes que el sistema. –Contienen todos los paquetes que se pueden instalar en el sistema. –Existen en su forma oficial por quien mantiene el sistema o distribución y a los que se ofrece un soporte oficial, como también externos, donde se proveen paquetes extra general mente versiones beta o de algún proyecto específico. 22
    • PMs según el OS •APT, el cual se encuentra en sistemas basados en Debian Linux. También posee sus evoluciones en nivel gráfico como las populares interfaces de Aptitude y Synaptic. •RPM, que es el manejador de paquetes de Red Hat. Además se puede instalar su manejador más completo con instalaciones automáticas llamado Yum, siendo también mucho más amigable al usuario que su predecesor RPM. •Ports, comúnmente encontrado en los sistemas tipo BSD. DarwinPorts es un ejemplo de esto en Mac. •Portage, usado exclusivamente en Gentoo Linux. •Yast, como el PM de SUSE. •Fedora y Debian representan la mayoría del universo de Linux. Fedora, Red Hat, CentOS, Lineox, White Box Linux, y varios otros utilizan Yum. Los hijos de Debian son muchos: Ubuntu, Knoppix, Linspire, Mepis para nombrar algunos pocos. 23
    • PMs por CLI - YUM •Mejor usar YUM vs RPM; Yum es evolución, mejor manejo de dependencias, de limpieza del sistema, usabilidad y provee varias tareas automáticas. RPM para obtener información sobre paquetes. YUM para instalar o desinstalar paquetes. •Instalar y remover uno o multiples paquetes: # yum install 'foo' # yum remove 'foo' •Actualizar un paquete instalado: # yum update 'foo' •Lista las actualizaciones disponibles para los paquetes instalados: # yum list updates •Actualiza el sistema completo: # yum update •Realiza actualizaciones automáticas diarias: # chkconfig --level 345 yum on; service yum start •Buscar paquetes cuando se sabe el nombre: $ yum list 'foo' •Buscar un paquete cuando no se esta seguro del nombre, usando expresiones regulares: $ yum search 'foo*' $ yum search '*foo?' 24
    • PMs por CLI - YUM •Encontrar a que paquete pertenece un archivo específico: $ yum provides 'foo' •Yum posee grupos de paquetes que se instalan en masa mediante una única instrucción, se puede ver una lista de estas plantillas mediante: $ yum grouplist •Estos son manejados con casi los mismos comandos que se manejan los paquetes individuales, usando el nombre de la plantilla entre comillas simples: # yum groupinstall 'FTP Server' # yum groupupdate 'FTP Server' # yum groupremove 'FTP Server' •Por defecto, Yum realiza un query a los repositorios remotos cada vez que es ejecutado; los cuales se encuentran listados en /etc/yum.repos.d; esto puede tomar algun tiempo por lo que puede volverse poco práctico, esto se puede evitar creando un cache para Yum, añadiendo la siguiente línea en /etc/yum.conf: keepcache=1 - Posteriormente ejecuten yum de la siguiente manera yum -C 'options' cuando se desee utilizar el cache local en lugar de consultar los repositorios remotos. 25
    • PMs por CLI - RPM •RPM es usualmente más rápido que Yum, cuando se trata de buscar información sobre paquetes, como saber si estan instalados: $ rpm -q 'foo' •O para listar archivos contenidos por un paquete ya instalado: $ rpm -ql 'foo' •A qué paquete pertenece un archivo? $ rpm -qf '/usr/bin/foo' •Lista todos los paquetes instalados y salva la lista en un archivo: $ rpm -qa 'foo' | tee rpmlist.txt 26
    • PMs por CLI - Aptitude •Aptitude viene siendo para apt-get, lo que Yum es para RPM, aunque existe una restricción, no es recomendable usar Aptitude y apt-get a la vez, dado que usan registros diferentes que podrían padecer de entradas falsas. •Estos comandos instalan, actualizan, reinstalan o remueven un paquete: # aptitude install 'fie' # aptitude reinstall 'fie' # aptitude remove 'fie' # aptitude remove --purge 'fie' •Muestra todas las versiones de los paquetes: # aptitude -V install 'fie' •Se puede bajar un paquete sin necesidad de instalarlo: # aptitude -d install 'fie' •Actualice su listado de paquetes en cache, actualice el sistema, actualice hacia la siguiente versión: # aptitude update # aptitude upgrade # aptitude dist-upgrade •Aptitude muestra la información del paquete sobre los que se encuentren instalados: $ aptitude show 'fie' •Muestra paquetes disponibles para instalar: $ aptitude search 'fie' 27
    • PMs por CLI - Apt-file •Instalar y crear una lista local de los paquetes: # aptitude install apt-file # apt-file update •Encontrar el paquete al que pertenece un archivo específico: $ apt-file search 'fum' •También se puede usar para buscar paquetes cuando no se conoce su nombre exacto: $ apt-file list 'fum' Esto además muestra todos los archivos en un paquete. 28
    • PMs por CLI – dpkg •dpkg es semejante a RPM, dado a que opera en paquetes de forma individual, sin rastrear dependencias. •Los siguientes comandos buscan si un paquete esta instalado en el sistema y muestra un listado de los archivos que componen este paquete: $ dpkg -l | grep nano ii nano 1.3.12-2 free Pico clone with some new features $ dpkg -L nano /. /etc /etc/nanorc ... •Busca a que paquete pertenece un archivo: # dpkg -S '/sbin/fee' •Se puede descomponer un .deb sin necesidad de instalarlo, lo cual es muy útil para examinar un paquete o extraer archivos específicos que se necesiten reemplazar: # dpkg --unpack 'fee' 29
    • ¿Qué es el Kernel? •Parte esencial de un sistema operativo que provee los servicios más básicos del sistema. Se encarga de gestionar los recursos como el acceso seguro al hardware de la computadora. Se encarga también del multiplexado, determinando qué programa accederá a un determinado hardware si dos o más quieren usarlo al mismo tiempo. El kernel también ofrece una serie de abstracciones del hardware para que los programadores no tengan que acceder directamente al hardware, proceso que puede ser complicado. 30
    • Tipos de Kernel •Kernel monolítico –Todas las funcionalidades posibles están integradas en el sistema. Se trata de un programa de tamaño considerable que deberemos recompilar al completo cada vez que queramos añadir una nueva posibilidad. Esta es la estructura original de Linux. Por tratarse de una técnica clásica y desfasada el creador de Linux fue muy criticado. •Kernel modular –Se trata de la tendencia actual de desarrollo. En el kernel se centran la funcionalidades esenciales como la administración de memoria, la planificación de procesos, etc. Sin embargo no tiene sentido que el núcleo de un sistema operativo englobe toda la parafernalia para comunicarse con todas las posibles tarjetas de vídeo o de sonido. En otros sistemas operativos esto se soluciona con unos ficheros proporcionados por el fabricante llamados drivers. En Linux se creó una interfaz adecuada para posibilitar el desarrollo de módulos que cumplieran esas funcionalidades. Esos módulos pueden ser compilados por separado y añadidos al kernel en tiempo de ejecución. •Estructura de microkernel –Esta técnica pretende reducir a su mínima expresión el kernel, dejando a los niveles superiores el resto de las funcionalidades. Existen algunos kernels que lo utilizan, si bien el que centra nuestra atención es Hurd. Se trata del último kernel GNU llamado a sustituir a Linux como núcleo del sistema operativo. Aunque esta estrategia de diseño es tan antigua como la modular, no ha sido tomada en cuenta hasta ahora debido a las limitaciones de rendimiento que tenía. 31
    • ¿Quién mantiene el Kernel en LINUX? •Linux Fundation Organization –Es de vital importancia para el creador de Linux, Linus Torvalds y el grupo de desarrolladores del kernel mantenerse independientes de la industria. La fundación Linux patrocina a individuos clave del grupo de desarrolladores del kernel para que su enfoque sea único. Además la fundación es el punto de reunión entre la comunidad, los desarrolladores del kernel y la industria. •Kernel Organization –Son quienes se encargan de desarrollar y mantener el kernel de Linux, el grupo en si es dirigido por Linus Torvalds y en su sitio http://www.kernel.org mantienen disponible las últimas actualizaciones de las más recientes versiones del kernel. Es un grupo abierto que acepta recibir trabajo voluntario de personal calificado; aunque algunos miembros se dedican tiempo completo al proyecto, la organización en si es sin fines de lucro. 32
    • Kernel Download •El kernel se puede conseguir preferiblemente desde los mirrors de http://www.kernel.org : –Parches. –Versiones recientes. –Código fuente. •Además existen versiones específicas para cada distribución. 33
    • Actualizando el kernel •Cuando se compila el kernel todo archivo resultante se ubica en el directorio del código fuente. •Pasos para actualizar: –Bajar el kernel. –Configurar el kernel. –Compilar el kernel. –Realizar una copia de seguridad del kernel antiguo. –Ubicar el nuevo kernel en la carpeta especificada. –Modificar el manejador de arranque para que apunte al nuevo kernel. –Reiniciar el servidor. 34
    • Notas para compilar el kernel •Comandos Paso a Paso: – bzip2 -dc linux-2.6.XX.tar.bz2 | tar -xvf – – mv linux-2.6.XX /usr/scr/ – rm /usr/scr/linux – ln –s /usr/scr/linux-2.6.XX /usr/scr/linux – cd /usr/scr/linux-2.6.XX – make clean – make mrproper – make config ( existen opciones de configuración alternas ) – make – make install – mv vmlinuz /boot/vmlinuz-2.6.XX – mv System.map /boot/System.map-2.6.XX – rm /vmlinuz – ln –s /boot/vmlinuz-2.6.XX /vmlinuz 35
    • Notas para editar GRUB para que arranque con el nuevo kernel •Editar /boot/grub/menu.lst: –Ejemplo configuración anterior: title root kernel Linux (hd0,1) /vmlinuz root=/dev/hda2 ro – Ejemplo configuración modificada: title Linux root (hd0,1) kernel /vmlinuz root=/dev/hda2 ro title root kernel Linux recovery (hd0,1) /vmlinuz.old root=/dev/hda2 ro •/vmlinuz.old debe ser un puntero al kernel anterior en /boot 36
    • Configurando la LAN en la familia Debian •/etc/network/interfaces –este archivo contiene la configuración de cada una de las tarjetas de red. –Las líneas que empiecen con la palabra auto indica las interfaces que se activaran al inicio del sistema o cuando se ejecute el comando ifup –a –Ejemplo configuración estática: iface eth0 inet static address 192.168.1.5 netmask 255.255.255.0 gateway 192.168.1.254 – Ejemplo configuración dinámica: auto eth0 iface eth0 inet dhcp •Ifconfig: –Es el comando por definición para el manejo de las interfaces de red en POSIX. • • • • • • • • • • [root@ubuntu]# ifconfig eth0 192.168.99.14 netmask 255.255.255.0 up [root@ubuntu]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:80:C8:F8:4A:53 inet addr:192.168.99.14 Bcast:192.168.99.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:9 Base address:0x5000 37
    • Rutas estáticas •/etc/network/interfaces –Bajo la configuración de cada interfaz se añade la ruta deseada. auto eth0 iface eth0 inet static address 192.168.1.42 network 192.168.1.0 netmask 255.255.255.128 broadcast 192.168.1.0 up route add default gw 192.168.1.200 down route del default gw 192.168.1.200 • Comando route: [root@ubuntu]# route add default gw 192.168.99.254 [root@ubuntu]# route -n Kernel IP routing table Destination Gateway Genmask Flags 192.168.99.0 0.0.0.0 255.255.255.0 U 127.0.0.0 0.0.0.0 255.0.0.0 U 0.0.0.0 192.168.99.254 0.0.0.0 UG Metric 0 0 0 Ref 0 0 0 Use 0 0 0 Iface eth0 lo eth0 38
    • Varias interfaces una sola NIC •Una forma un poco más compleja pero que es una de las facilidades que nos brinda ifconfig, es configurar varias interfaces en una sola tarjeta de red. –Ejemplo en el archivo /etc/network/interfaces: auto eth0 eth0:1 iface eth0 inet static address 192.168.0.100 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 iface eth0:1 inet static address 192.168.0.200 network 192.168.0.0 netmask 255.255.255.0 39
    • Secure Shell SSH •Secure Shell nos permite ingresar a un sistema a través de la red de forma segura, para ejecutar comandos de forma remota y mover archivos de un sistema a otro. •Secure Shell provee una serie de comandos que remplazan comandos inseguros como rlogin, rsh, rcp, ftp, y telnet. •Es independiente de los demás servicios de red dado a que utiliza un demonio propio. 40
    • Métodos de SSH Método de autentificación Ventajas Desventajas Password Requiere poca o ninguna configuración. Conveniente para usuarios viajeros que prefieren no mantener claves encriptadas privadas. El usuario debe digitar el password cada vez que ingresa al servidor. Es menos seguro, dado que al momento de transferir la clave pasa entre servidores sin ser encriptadas. Public-key Método seguro que no necesita de un password para su autentificación. Conveniente para usuarios que corren scripts de forma remota. Difícil de administrar dado a que las claves están pares entre servidores. Host-based Simple y fácil de administrar. Conveniente en redes seguras, dado que el método revisa solo el servidor, no individualmente los usuarios. El menos seguro de los métodos de autentificación, porque múltiples usuarios pueden establecer conexiones desde un cliente, usando solo la llave par del servidor. 41
    • Configuración de Autentificación con Llave Pública - SSH •En orden de generar las llaves de seguridad para un usuario: profe@ubuntu:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/profe/.ssh/id_rsa): Created directory '/home/profe/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/profe/.ssh/id_rsa. Your public key has been saved in /home/profe/.ssh/id_rsa.pub. The key fingerprint is: 7d:58:42:a9:ba:84:ed:19:6c:08:ea:ad:17:d7:29:ba profe@ubuntu The key's randomart image is: +--[ RSA 2048]----+ | .. | profe@ubuntu:~$ ls -l .ssh | .. | | .. . | total 8 | . .. + | | . . =..S o . | -rw------- 1 profe profe 1675 2009-07-26 20:13 id_rsa |. .ooBo . | |. . ++.+ | -rw-r--r-- 1 profe profe 394 2009-07-26 20:13 id_rsa.pub | . + + | | .oE. | +-----------------+ 42
    • Configuración de Autentificación con Llave Pública - SSH •/etc/ssh/sshd_config –Este es el archivo de configuración del servidor de ssh. Algunos parámetros que necesitamos revisar son: PermitRootLogin yes RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys • Permisos de los archivos y directorios ssh: Archivo/Directorio Permisos $HOME (directorio hogar) drwx------ o drwxr--r-- $HOME/.ssh drwx------ o drwxr--r-- $HOME/.ssh/id_rsa y id_dsa -rw-r--r-- o -rw------ $HOME/.ssh/id_rsa.pub y id_dsa.pub -rw-r--r-- o -rw------ $HOME/.ssh/config -rwx------ 43
    • Configuración de Autentificación con Llave Pública - SSH •Copiar la llave pública en el sistema cliente al directorio home del servidor: # cat $HOME/.ssh/id_rsa.pub | ssh remoteuser@remotehost ´cat - >> $HOME/.ssh/authorized_keys • Listo para ingresar sin password: root@ubuntu:~# ssh profe@ubuntu The authenticity of host 'ubuntu (127.0.1.1)' can't be established. RSA key fingerprint is ec:51:30:73:aa:71:c1:1b:09:29:21:cc:00:76:6d:38. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'ubuntu' (RSA) to the list of known hosts. 44
    • Laboratorio SSH •Utilizar Putty y puttygen –Putty es un programa de cliente de terminales y puttygen es un generador de claves rsa para putty, que puede usarse para autentificaciones ssh usando putty como cliente. Sitio oficial de putty Putty.exe Puttygen.exe 45
    • NTP •Network Time Protocol (NTP) –En ambientes de trabajo con redes internas que abarcan varias zonas horarias, es importante mantener la hora sincronizada entre todos los servidores. •Revisión de logs de aplicaciones o la bitácora del sistema. •Para efectos de seguridad, como los tiquetes con registro de tiempo de Kerberos. –El objetivo es mantener un servidor con la hora oficial, así todos los demás servidores se sincronizan contra este servidor, manteniendo una hora estándar respetando las zonas horarias. •Componentes: –ntp.conf –ntpd –ntpdate 46
    • NTP Archivo de Configuración •/etc/ntp.conf –Cuando el servidor arranca, ntpd leé el archivo de configuración ntp.conf, para así determinar las fuentes de sincronización y el modo de operación. • Los siguientes 4 ejemplos muestran la configuración del servidor de tiempo y del método de operación a utilizar: – – – – server address [options ...] peer address [options ...] broadcast address [options ...] manycastclient address [options ...] 47
    • NTP por DHCP •Si el servidor de DHCP esta configurado para propagar la información del servidor NTP, entonces esta información será usada de forma automática. –Realizar una copia de /etc/ntp.conf a /etc/ntp.conf.dhcp, reemplazando las líneas del servidor con la información recibida del servidor de DHCP, y reiniciando el servicio NTP. –Para que esto funcione, la opción “ntp-servers” debe encontrarse en la sección de “request” en el archivo /etc/dhcp3/dhclient.conf. –Ejemplo: request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, host-name, netbios-name-servers, netbios-scope, interface-mtu, ntp-servers; –En caso de preferir usar otro servidor NTP para la sincronización que no sea el distribuido por el DHCP, entonces este también es un buen lugar para desabilitar esta opción. •Para habilitar la distribución de NTP a través del servidor DHCP, en el paquete de Debian dhcp3-server, hay que añadir la siguiente opción en el archivo /etc/dhcp3/dhcpd.conf: option ntp-servers ntp1.foo.bar, ntp2.foo.bar; 48
    • ntpdate •Este comando existe para ser usado en clientes que no mantienen una conectividad de red permanente. –ntpdate es ejecutado cada vez que una interfaz de red es iniciada. Para ajustar este comportamiento, el archivo /etc/network/if-up.d/ntpdate debe ser editado. –Ejemplo: root@ubuntu:/usr/share/doc# date mie sep 2 06:43:28 CST 2009 root@ubuntu:/usr/share/doc# ntpdate pa.pool.ntp.org 20 Sep 22:52:44 ntpdate[27773]: step time server 200.35.147.189 offset 1613201.384755 sec root@ubuntu:/usr/share/doc# date dom sep 20 22:53:11 CST 2009 49
    • NFS (Network File System) •NFS es un protocolo estándar de Internet, creado por Sun Microsystems (actualmente Oracle) en 1984. •Fue desarrollado para permitir compartir archivos entre sistemas que residan en la misma área de red local. •En caso de no tener NFS instalado en el servidor, intentar la seguiente línea: root@ubuntu:~# aptitude install nfs-common nfs-client nfs-server •Puerto de red: root@ubuntu:~# rpcinfo -p | grep nfs 100003 3 udp 2049 nfs 100003 3 tcp 2049 nfs 50
    • NFS – Configurando el Servidor •Existen 3 archivos cruciales, los cuales hay que editar para configurar el servidor NFS, /etc/exports, /etc/hosts.allow y /etc/hosts.deny . Realmente solo /etc/exports es necesario, pero sin los otros dos, se degaría el servidor abierto a ataques de seguridad. –/etc/exports Este archivo contiene una lista de entradas, donde cada una indica un volumen que es compartido y con cuales permisos. Un par de líneas de ejemplo: /usr/local 192.168.0.1(ro) 192.168.0.2(ro) /home 192.168.0.0/255.255.255.0(rw) –/etc/hosts.allow & /etc/hosts.deny Estos dos archivos especifican cuales computadoras en la red, pueden usar servicios desde este servidor. Cada línea contiene una entrada indicando un servicio y una lista de clientes. 1. Revisa primero el archivo hosts.allow, si el cliente se encuentra listado para el servicio solicitado, entonces se le concede acceso. 2. Si el cliente no se encuentra en el archivo hosts.allow entonces se procede a revisar el archivo hosts.deny, si el cliente se encuentra en este último archivo, se le niega el acceso. 3. En caso de que el cliente no esté especificado en ninguno de los dos archivo, el acceso es concedido. 51
    • NFS - Lab •Exportando sin percistencia: root@ubuntu:~# exportfs -o rw,sync,fsid=0,crossmnt *:/home/profe root@ubuntu:~# exportfs -v /home/profe <world>(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0) root@ubuntu:~# showmount -e localhost Export list for localhost: /home/profe * root@ubuntu:~# mkdir /home/alumno/profesdir root@ubuntu:~# mount -t nfs -o rw,users,exec,sync localhost:/home/profe /home/alumno/profesdir root@ubuntu:~# showmount -a All mount points on ubuntu: 127.0.0.1:/home/profe root@ubuntu:~# df /home/alumno/profesdir Filesystem 1K-blocks Used Available Use% Mounted on localhost:/home/profe 7611904 2218688 5006592 31% /home/alumno/profesdir root@ubuntu:~# ll /home/profe total 20 drwxr-xr-x 2 profe profe 4096 2009-09-01 00:45 carpeta root@ubuntu:~# ll /home/alumno/profesdir total 20 52 drwxr-xr-x 2 profe profe 4096 2009-09-01 00:45 carpeta
    • Samba •Es una implementación gratuita del protocolo SMB/CIFS; originalmente desarrollado por el australiano Andrew Tridgell como un proyecto de graduación para su Phd en la Universidad Nacional de Australia en 1992, mientras trabajaba para DEC. –SMB (Server Message Block), usado para proveer acceso compartido a impresoras, archivos y otros dispositivos del nodo con el resto de la LAN. Desarrollado por Barry Feigenbaum mientras trabajaba con IBM desarrollando para DOS y OS/2 además participo activamente en la elaboración del estándar NETBIOS. SMB siguió su evolución junto con Microsoft, puliendo muchas de las quejas por desempeño, además de hacer pública su especificación en la cual se basan las implementación de SMB en VMS, varias versiones de UNIX y Linux en conjunto de CIFS (Common Internet File System (CIFS) File Access Protocol) . –Actualmente el proyecto de SAMBA es mantenido por un grupo de desarrollo usando el licenciado bajo la ampliamente usada GNU GPL. www.samba.org •Los servicios de Samba son implementados a través de dos demonios: –Smbd •Provee los servicios para compartir archivos e impresoras. –Nmbd •Comprende el servicio de traducir entre el identificador NetBIOS y la dirección IP. 53
    • Descargar SAMBA código fuente •Por seguridad samba viene encriptado para así comprobar el buen estado de los archivos con el código fuente. En esta sección se utiliza la herramienta de verificación GPG de GNU. –Utilizamos wget para descargar los archivos mkdir samba && cd samba wget ftp://us1.samba.org/pub/samba/samba-latest.tar.asc wget ftp://us1.samba.org/pub/samba/samba-latest.tar.gz wget ftp://us1.samba.org/pub/samba/samba-pubkey.asc –Ahora a verificar la descarga y preparar el directorio con el código fuente gpg --import samba-pubkey.asc gzip -d samba-latest.tar.gz gpg --verify samba-latest.tar.asc tar -xvf samba-latest.tar cd samba-3.4.2 54
    • Compilar SAMBA código fuente •El crucial momento de compilar, como ya habíamos mencionado anteriormente se necesitan ciertas aplicaciones antes de empezar con el proceso, por ejemplo haber instalado “make” y “gcc”, aunque para SAMBA necesitamos algo más. –En este caso particular samba no viene con un archivo “configure” listo para instalar, pero sí con un script para crear este archivo faltante. aptitude install autoconf ./autogen.sh –Listo ahora personalizamos la instalación como los directorios involucrados y por último instalamos: ./configure -prefix=/opt/samba/samba-3.4.2 -with-configdir=/etc/samba -with-privatedir=/etc/samba/private -mandir=/usr/share/man make make install 55