Este documento describe la estructura de directorios común en sistemas operativos GNU/Linux y UNIX. Explica que los directorios principales incluyen /bin, /boot, /dev, /etc, /home, /lib, /mnt, /opt, /proc, /root, /sbin, /tmp, /usr y /var, y describe brevemente la función de cada uno. También cubre esquemas de inicio como sysinit y runit, y formas de buscar manuales y programas.
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
Introducción a GNU - POSIX - LINUX
1. GNU – Linux – UNIX
Sistemas Operativos
Autor: José Plá
2. 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
3. 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
4. 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
5. 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
6. 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.
7. 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
8. 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
9. 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
10. 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
12. 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
13. 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
14. 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
15. 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
16. 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
17. 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
18. 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
19. 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
20. 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
21. 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
22. ¿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
23. 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
24. 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
25. 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
26. 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
27. 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
28. 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
29. 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
30. ¿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
31. 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
32. ¿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
33. 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
34. 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
35. 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
36. 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
37. 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
38. 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
39. 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
40. 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
41. 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
42. 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
43. 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
44. 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
45. 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
46. 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
47. 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
48. 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
49. 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
50. 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
51. 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
52. 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
53. 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
54. 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
55. 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