Laboratorio de Sistemas Operativos Sesiones de Practicas. Indice. 1. Análisis y diseño. Políticas de red. 2. Instalación de Windows 95. Configuración de arranque. 3. Instalación de Linux. 4. Linux a nivel de administrador. 5. Servicio DNS, Instalación de aplicaciones. 6. Servicio NFS. Servicio de cuotas. 7. Servicio NIS. 8. Servidor http. Servidor FTP 9. Servidores de BBDD. 10. Referencias 11. Anexos Iván Fernández Vallejo Fernando Perales Esandi itig11.labitig.unavarra.es Laboratorio de Sistemas Operativos Ingeniería Técnica en Informática – UPNA Junio 2003 Memoria 1 Laboratorio de Sistemas Operativos Laboratorio de Sistemas Operativos 1. Análisis y diseño. Políticas de red. En la primera sesión de practicas, una vez dadas las primeras indicaciones sobre el desarrollo de las sesiones, grupos, recursos disponibles, forma de trabajo, etc., diseñamos como iba a quedar definida nuestra red. Una vez conocidas todas las posibilidades en cuanto a clases de redes, decidimos montar una red de clase C, con la dirección de red 192.168.192.0 y su correspondiente mascara de red 255.255.255.0. Nomenclatura de equipos: Estaciones: itigXX correspondientes a las posiciones ocupadas en clase por los equipos, comenzando de las direcciones IP inferiores o más bajas dentro del rango establecido: 192.168.192.1 Servidores: las direcciones más altas o superiores: 192.168.192.255 DNS: ESPINETE WEB: SPIDERMAN MAIL: MAZINGER FTP: FLASH IMPRESIÓN: HULK NIS: SCOOBY NFS: BATMAN Nuestra estación dentro de la red va a tomar el nombre itig11 y su tarea consistirá en una gestionar una estación de investigación matemática con las funciones de realizar informes, estadísticas, información, formulas, ecuaciones, gráficos, maquetación, por lo que necesitamos una estación con potentes herramientas de calculo, estadística, diseño y procesamiento de textos. Ver anexos: Hojas de Descripción de maquinas e Instalación de Software. Memoria 2 Laboratorio de Sistemas Operativos 2. Instalación de Windows 95. Configuración de arranque. Antes de comenzar con la instalación de ningún sistema, conviene realizar un pequeño diagrama de configuración del disco duro, con sistemas operativos a instalar, numero de particiones, tamaño, sistema de archivos....etc., dependiendo de las necesidades de nuestra maquina. Tabla de particiones HD 3’2 GB: Sistema operativo Función Tamaño Sistema de Archivos Win’95 S. Operativo \ 250 Mb 2’5 GB Fat16 Ext3 Linux Swap 32 Mb Intercambio Datos 400 Mb Ext2 Una vez definidas las particiones, procederemos a instalar el primer sistema operativo. Elegimos primero Windows 95, porque en el caso de hacerlo al revés, instalando primero Linux, al instalar W95, este sobrescribiría el sector de arranque y la parte Linux, no estaría accesible. Arrancamos con un disquete de inicio de W’95 y con el la instrucción fdisk, establecemos las particiones. Borraremos las particiones existentes en el disco, crearemos una primaria y le daremos formato. Ahora solo realizamos la partición donde residirá W95, posteriormente cuando instalemos Linux, el propio sistema, durante la fase de instalación, nos permitirá establecer el resto de particiones necesarias. Procedemos a la instalación estándar del sistema W95. A continuación, la instalación de Linux, nos generará un boot de arranque (Grub) que una vez arrancada la maquina nos permitirá elegir entre trabajar con un sistema operativo u otro. Memoria 3 Laboratorio de Sistemas Operativos 3. Instalación de Linux Un vez instalado Windows 95, reiniciamos la maquina, y configurando apropiadamente el arranque de nuestro equipo modificando la Bios, para que arranque desde cd-rom, comenzamos la instalación de Linux Mandrake 9. Para ello cogimos el CD1 de Mandrake. Una vez arrancada la instalación de Linux procedemos a realizar las particiones por medio del gestor de particiones Druida (Teníamos que particionar el espacio que dejamos después de instalar W95 en nuestro PC). Con las particiones definidas pasamos a configurar los dispositivos de nuestro PC tales como teclado, ratón.... teniendo solo que decir en la instalación el tipo de dispositivo, sino venía ya definido en el controlador, ya que una de las grandes ventajas de Linux, es que puede configurar la mayoría de dispositivos sin necesidad de proporcionarle el driver, algo que en Windows es bastante complicado, por lo menos en las versiones más antiguas. El siguiente paso consistirá en elegir los paquetes para la instalación, algunos de ellos podrían ser: - Icewm (Este paquete lo instalamos porque consume menos memoria que el KDE o el GNOME y con las características del equipo instalar uno de estos entornos es “insufrible”) - Estación científica - Calculo matemático - Estadística - OpenOffice - Servidores (Servidores Web, Apache, DNS,....) Una vez instalados los paquetes, nos queda configurar la red y la resolución de pantalla. La red la configuramos según se muestra en el punto 1 es decir según habíamos decidido en la primera sesión de practicas. Para la resolución de la pantalla elegimos una resolución baja y con pocos colores para conseguir una mayor agilidad en StartX, debido a la escasa memoria RAM del PC, además, como principalmente trabajaremos con terminales la resolución no es excesivamente importante. Con ésto terminamos la instalación de Linux y comprobamos que todo funciona correctamente dentro de las posibilidades que nos ofrecen los escasos recursos de los que disponemos. El gestor de arranque elegido a la hora de iniciar la maquina y seleccionar el sistema operativo a cargar es Grub, que configura todo de forma automática. Memoria 4 Laboratorio de Sistemas Operativos 4. Linux a nivel de administrador Lo primero que debemos decidir en nuestro sistema operativo es el nivel en el que queremos arrancar, estos niveles, se denominan niveles de ejecución (Runlevel): 0. Parar (Halt) 1. Modo de usuario único o monousuario 2. Multiusuario sin NFS (usuario definible) 3. Modo multiusuario completo 4. Sin usar (Usuario-definible) 5. Modo multiusuario completo con entorno gráfico (X) 6. Rearrancar (Reboot) En nuestra maquina, como no está muy “sobrada” de recursos, decidimos arrancar en el nivel 3, es decir, multiusuario en pantalla de terminal, con lo cual conseguimos un arranque más rápido y si queremos podemos arrancar la el interface X (gráfico), algo que no usamos muy a menudo. Para configurar este nivel de arranque editamos el archivo /etc/inittab y modificamos el nivel de arranque, que por defecto se encontraba en el nivel 5. Otro punto importante en Linux son los demonios, que sería el equivalente a los servicios en Windows, estos se encuentran en el directorio /etc/rc.d/init.d, los demonios se gestionan con 3 parámetros: Start: Arranca un demonio Restart: Detiene el demonio y lo vuelve a arrancar Stop: Detienen el demonio Status: nos muestra el estado actual Política de Seguridad: El siguiente paso en nuestra maquina fue proceder a definir las políticas de seguridad del sistema, para la gestión de los usuarios de nuestra maquina: Nuestra organización ha sido la siguiente y la implementamos como se muestra en la figura siguiente: Memoria 5 Laboratorio de Sistemas Operativos ROOT ADMINISTRADORES JCONTA JRRHH JINFORMATICA JINVESTICAGION CONTABILIDAD RRHH INFORMATICA INVESTIGACION La organización de los usuarios funciona de la siguiente forma, los que se encuentran por encima tendán control sobre los que tienen por debajo. En los distintos grupos estarían: a. b. c. d. e. f. g. h. i. j. ROOT: El súper usuario, Contraseña: A1B2C3 ADMINISTRADORES: ivan, fperales JCONTA: jconta , Contraseña: jCONTA JINFORMATICA: jinformatica, Contraseña: jinformatica JRRHH: jRRHH, Contraseña: idem JINVESTIGACIÓN: jinvestigacion, Contraseña: jINVESTIGACIÓN CONTABILIDAD: conta1, conta2, conta3, INFORMATICA: inform1, inform2, inform3 RRHH: RRHH1, RRHH2, RRHH3 INVESTIGACIÓN: invest1, invest2, invest3 Los usuarios normales tinen la contraseña en blanco, pulsar intro. La política que seguimos fue la siguiente, los jefes de cada sección pueden acceder a los grupos de sus subordinados, los administradores lo pueden hacer a todos los grupos de los jefes y a todos los subordinados de los jefes y el súper usuario puede acceder a todos los recursos, para ello creamos todos los usuarios y creamos un grupo para cada usuario, introducimos a cada usuario en un grupo con todos los permisos para el usuario y aquellos usuarios que tienen acceso a los demás formaran parte de su grupo y de sus subordinados. Para realizar lo anterior utilizamos linuxconf: con él creamos los usuarios, los grupos y realizamos la política de seguridad establecida. También está la opción de usar un terminal y generar los usuarios, grupos, etc., por medio de los comandos adduser (añadir un usuario), groupadd (crear un grupo y asignar las pertenencias a grupos), chown (cambiar el propietario de un directorio o archivo) y chmod (cambiar los permisos de un directorio o archivo), además del comando passwd para especificar password a los usuarios. La tercera opción sería crear los usuarios, grupos, etc por medio de un programa de gestión de usuarios mediante la interfaz gráfica, Kuser, por ejemplo. Memoria 6 Laboratorio de Sistemas Operativos Añadir/Quitar paquetes: Otro punto a tener en cuenta sería la instalación de paquetes que nos va a ser muy útil para poder actualizar el sistema operativo, instalar aplicaciones, utilidades que no se han instalado en la instalación inicial...... y sobre todo nos va a servir para las futuras sesiones, debido a que vamos a tener que añadir paquetes para usar distintos servicios. Usamos dos formas para la instalación de paquetes: 1. Comando RPM: rpm –i “nombre_paquete” 2. Por medio de un gestor de paquetes en entorno gráfico: Gnorpm (gnome) Kpackage Rpmdrake (Mandrake): Fue la utilizada para añadir y quitar paquetes Nosotros mayormente usamos el comando rpm aunque también usamos algo el rpmdrake. Memoria 7 Laboratorio de Sistemas Operativos 5. Servicio NFS. Servicio de cuotas. Un Sistema de Ficheros en Red (NFS-Net File System) permite manejar ficheros de distintos ordenadores dentro de una red como si estuvieran en el disco duro local. Es decir, no se necesita saber dónde están localizados físicamente los ficheros para poder acceder a ellos. NFS nos permite compartir datos entre varios ordenadores de una forma sencilla. Por ejemplo, un usuario validado en una red no necesitará hacer login en un ordenador específico, vía NFS, accederá a su directorio personal (que llamaremos exportado) en la máquina en la que esté trabajando. Se requiere tener instalados los paquetes nfs-utils y portmap. Antes de hablar de NFS, hay que hacer mención al concepto “Sistema de ficheros”. Un sistema de ficheros es la forma de almacenar datos en un medio, la manera en que se organizan y manejan. Hay muchos sistemas de ficheros, algunos más utilizados que otros (New Technology FileSystem (NTFS), High Performance FileSystem (HPFS), DOS, FAT 16/32, VFAT, Macintosh Hierarchical Filesystem (HFS), ISO 9660(para CD-ROM), extended file systems (Ext, Ext2, Ext3), y muchos otros). El protocolo NFS Lo que comúnmente se llama NFS está formado por 4 protocolos distintos. Cada uno depende de las Remote Procedure Calls (RPC) y de portmap (también llamado rpc.portmap). Un portmapper convierte números de programa RPC en números de puerto. Cuando un servidor RPC se inicia, dice a portmap qué puerto usará y el número de programa RPC manejado. Cuando un cliente quiere enviar una petición RPC a un número de programa dado, primero contacta con el servidor portmap para tomar el número de puerto dando acceso al programa deseado. Después, dirige los paquetes RPC al puerto correspondiente. Memoria 8 Laboratorio de Sistemas Operativos Los 4 servicios que permiten funcionar a NFS son: Protocolo Descripción Demonio Nfs Este protocolo es el básico y permite crear, buscar, leer o escribir ficheros. Este protocolo también maneja autentificación y estadísticas de ficheros. nfsd Mountd Éste se encarga de montar sistemas exportados para acceder a ellos con nfs. El servidor recibe peticiones como mount y umount debiendo mountd mantener información sobre los sistemas de ficheros exportados. nsm (Network Status Monitor) Se usa para monitorizar los nodos de la red y así conocer el estado de una máquina (cliente o servidor). Informa, por ejemplo, de un rearranque. statd nlm (Network Lock Manager) Para impedir modificaciones de los datos por varios clientes al mismo tiempo, este protocolo maneja un sistema de bloqueo. Así, con la ayuda del protocolo Nsm es posible conocer cuándo se está reiniciando un cliente. Nsm libera todos los bloqueos del cliente antes de devolverlos. lockd El demonio knfsd, disponible con las últimas versiones del núcleo, soporta directamente los protocolos nfs y nlm. etc/export datos a exportar etc/fstab chequeo de sistemas de ficheros y los monta Configuración servidor: Arrancar demonio: etc/rc.d/init.d/nfs start Recursos compartidos: Etc/exports directorios, usuarios, maquinas y permisos Ejemplo: /disco itig11(rw) itig17 (r) Configuración cliente: Etc/fstab Incluir la ruta del servidor nfs Ejemplo: 192.198.192.13: /mnt/intercambio /mnt rsize=8192,wsizw=8192,timeo=14,intr. También podemos configurar /etc/host para la resolución de nombres estática. Memoria 9 Laboratorio de Sistemas Operativos El servidor: La primera cosa a hacer, como ya hemos visto, es iniciar portmap ya que este protocolo es necesario para NFS . root >>/usr/sbin/rpcinfo -p rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused root >>/sbin/portmap root >>/usr/sbin/rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper El comando rpcinfo muestra los servicios RPCs en la máquina especificada como argumento (opción -p). Vemos que portmap todavía no está funcionando: lo iniciamos (la mayoría de las distribuciones Linux proveen scripts para automatizar esto en el arranque) y comprobamos que funciona. Otra razón común para que rpcinfo responda negativamente es que el portmapper no permita la respuesta a causa de la restricción de seguridad en los ficheros /etc/hosts.{allow, deny}. En este caso, añada una entrada "portmap: hosts" en el fichero hosts.allow. Antes de que NFS se inicie por sí mismo, debe ser configurado. Existe un único fichero de configuración que se llama /etc/exports. Cada línea muestra la ruta exportada seguido de una lista de clientes a los que se permite el acceso. Se pueden añadir opciones al final de cada nombre de cliente. La página de manual exports (man exports) explica la sintaxis para los nombres de cliente y las opciones. Se aceptan como nombres de cliente: • • • • nombre de la máquina caracteres comodín en un nombre de dominio (ej: : linux-*.unavarra.es) un netgroup ( @grupo) si se usa NIS una dirección IP No vamos a detallar aquí todas las opciones de montaje disponibles, pero algunas de las más importantes son: • • • • • Memoria rw (lectura/escritura) : el cliente puede leer y escribir en el sistema exportado ro (sólo lectura) : el cliente sólo puede leer el sistema exportado root_squash : es preferible que un usuario root del cliente no pueda escribir con permisos de root. Para impedirlo, UID/GID 0 (i.e. root) en el lado del cliente se traduce en el usuario nobody. Esta opción está activada por defecto, pero se puede cancelar con no_root_squash all_squash : todos los clientes que acceden al sistema exportado utilizan el UID/GID de nobody anonuid, anongid: el usuario nobody ahora usa los UID y GID definidos por estas opciones. 10 Laboratorio de Sistemas Operativos Ahora tenemos que iniciar los demonios rpc.mountd y rpc.nfs para tener funcionando el servidor NFS. Comprobamos nuevamente que todo está funcionando con el comando rpcinfo. Incluso podemos inicializar el servidor para los protocolos nsm y nlm (rpc.statd y rpc.lockd, respectivamente). No hay ninguna premisa para arrancar un servidor NFS... pero es altamente recomendable que se reinicie por sí mismo, en caso de que la máquina falle, etc... Cuando modificamos el fichero de configuración /etc/exports, debemos avisar a los demonios implicados que se deben hacer los cambios. El comando exportfs transmite esta información a nuestros servidores. La opción -r sincroniza el fichero /etc/mtab con el fichero /etc/exports file. La opción -v muestra juntos todos los sistemas de ficheros exportados junto con sus opciones. Después de ponerse en marcha el servidor NFS, los siguientes ficheros contienen información importante: • • • • /var/lib/nfs/rmtab: cada línea muestra el nombre del cliente y el sistema de ficheros importado desde este servidor /var/lib/nfs/etab: el fichero /etc/exports sólo contiene una lista de peticiones. etab está creado por exportfs. Contiene en cada línea información detallada sobre las opciones usadas cuando se exporta un sistema de ficheros a un solo cliente. Es el fichero de referencia usado por rpc.mountd cuando es arrancado /proc/fs/nfs/exports contiene la lista de clientes conocida por el núcleo /var/lib/nfs/xtab: Se usa por precisión cuando etab contiene nombres de clientes y grupos de máquinas con comodines. Este fichero sólo contiene nombres explícitos de máquinas. Cuando un cliente quiere acceder a un sistema de ficheros, empieza haciendo una petición mountd. Entonces se busca en etab si la petición está disponible. Se comprueba el núcleo para saber si el cliente tiene permitida la petición (comprobando hosts.{allow, deny}, reglas de cortafuegos, ...). El núcleo utiliza exportfs para la comprobación, permitiendo actualizar el fichero /var/lib/nfs/etab. Si, en este fichero, el sistema exportado tiene permitido ser exportado al grupo al que pertenece el cliente, entonces mountd informa al núcleo que actualice xtab con este nuevo host. El cliente: No hay que hacer nada ... normalmente. El acceso al sistema de ficheros exportado por NFS está controlado directamente por el núcleo. Éste tiene que haber sido compilado para soportar NFS. El fichero /proc/filesystems contiene una lista con todos los sistemas de ficheros soportados directamente por el núcleo. Entonces, lo único que tiene que hacer es decir al núcleo que quiere acceder a un sistema exportado por NFS. Memoria 11 Laboratorio de Sistemas Operativos El comando mount permite acceder a diferentes sistemas de ficheros. Informa al núcleo que está disponible un nuevo sistema de ficheros indicando su tipo, su dispositivo y su punto de montaje. Se puede usar la opción -t para indicar el tipo del sistema de ficheros a usar. Para NFS, escribimos: -t nfs. mount tiene sus propias opciones para NFS. Por ejemplo, se pueden utilizar las opciones rsize y wsize para cambiar el tamaño de los bloques para lectura o escritura. Puede combinar opciones específicas de NFS con opciones más generales como intr, noexec o nosuid. La página de manual mount muestra todas esas opciones. Quota: Gestiona el espacio que un usuario (usrquota) o un grupo de usuarios (grpquota), puede usar en un sistema de ficheros. En nuestra estación no se han establecido Quotas. Ejemplo: /dev/hda1 / ext2 default 1 1 /dev/hda2 /usr ext2 default.usrquota 1 1 /dev/hda1 / ext2 default 1 1 /dev/hda2 /usr ext2 default.grpquota 1 1 Comprobación: /usr/sbin/quotacheck –avug Activación: /usr/sbin/quotaon –avug Touch /patition/quota.user Touch /patition/quota.group Chmod 600 /partition/quota/user Chmod 600 /partition/quota/group Memoria 12 Laboratorio de Sistemas Operativos 6. Servicio NIS NIS es un sistema distribuido de información que nos permite compartir en varias maquinas el conteniendo de ciertas bases de datos del sistema permitiéndonos que desde cualquier máquina que está dentro del dominio NIS acceder a dichas bases de datos. Las bases de datos que más se suelen usar en NIS son los ficheros de password /etc/password y /etc/shadow, el fichero /etc/hosts, es decir, aquellos ficheros de configuración que tienen que ver con los usuarios o bien con la red. Vamos a tener una serie de maquinas, donde una de ellas será el master o servidor principal de NIS, otras serán esclavas, y mantendrán las bases de datos. Los clientes realizaran peticiones a esos servers sobre las bases de datos de las cuales se necesita información y a partir de ahí todo se supone que debe funcionar. En nuestro caso no hemos montado mas que un servidor NIS, debido a que no teníamos experiencia en montar redes con mas de un servidor NIS. Los paquetes de Mandrake 9.0 necesarios en este caso son: yp-clients-* yppasswd-* ypserv-* portmap-* Se instalan a golpe de rpm los paquetes adecuados ( rpm -i ). Una vez compilados e instalados los programas, pasamos a su configuración: Configuración del software: Lo primero, asegurarnos que el portmapper, ypserv e yppasswd se arranca en los "runlevels" adecuados cuando se inicializa el sistema. Para el caso de Mandrake 9.0, basta con asegurarse desde el control-panel/runlevel editor, que estén ambos demonios puestos para arrancar en los niveles adecuados. Concretamente el portmapper debe de estar en los niveles 2, 3 y 5 mientras que el ypserv e yppasswd deben de estar en los niveles 3 y 5. Los dos siguientes pasos hay que realizarlos tanto en las máquinas clientes como en las servidoras: Vamos a /etc/sysconfig, editamos el fichero network y añadimos una línea del tipo NIS_DOMAIN=. Por ejemplo: NIS_DOMAIN=unavarra.es. Ahora editamos el fichero /etc/yp.conf que es el que se encarga de decir cuales son los servidores de NIS en la red. En él ponemos lo siguiente: Memoria 13 Laboratorio de Sistemas Operativos # # Configuración # labitig.unavarra.es <------ Este es nuestro nombre de dominio NIS ypserver itigXX.labitig.unvarr.esa <------- Nuestro servidor de NIS Por ultimo nos vamos al directorio /var/yp. Una vez ahí buscamos una línea de la siguiente forma: all: passwd hosts group netid networks protocols rpc services netgrp \ mail shadow ypservers publickey ethers # amd.home bootparams Y solo dejamos en ella los bases de datos que nos interese. Una vez que hemos hecho ésto, ponemos el dominio de la maquina con labitig.unavarra.es (solo habrá que hacerlo ahora), y tecleamos make. Esto nos hará todas las bases de datos que nos interese. Es importante decir, que siempre que se modifiquen en el server NIS una de estas bases de datos, se debe de rehacer NIS, simplemente yendo a /var/yp y tecleando make. Para evitar que todo el mundo tenga acceso a nuestras NIS, se hace un fichero /var/yp/securenets, donde vamos a indicar quien nos interesa que acceda al server. La sintaxis de ese fichero es: host <ip_maquina> <netmask> <subred> Por ejemplo: host 127.0.0.1 255.255.255.0 192.168.192.0 Esto da acceso a la localhost y a todas la maquinas de la subred 192.168.192.0. Por último reseteamos la máquina, y “cruzamos los dedos” esperando que todo funcionara correctamente, y al parecer lo conseguimos. Memoria 14 Laboratorio de Sistemas Operativos 7. Servicio DNS, Instalación de aplicaciones. DNS es el Domain Name System (Sistema de Nombres de Dominio), las reglas de nomenclatura de las máquinas y el software que asigna y/o relaciona los nombres de maquina a direcciones IP. Antes de empezar, debemos configurar el sistema convenientemente, de forma que se pueda hacer telnet desde y hacia su máquina, efectuando satisfactoriamente toda clase de conexiones de red, especialmente telnet 127.0.0.1 entrando en nuestra propia máquina. También necesita que los archivos /etc/host.conf (o /etc/nsswitch.conf), /etc/resolv.conf y /etc/hosts sean correctos) El servicio de nombres en Unix es llevado a cabo por un programa, llamado named. Éste forma parte del paquete bind, instalado como /var/named. A continuación necesitamos el archivo /etc/resolv.conf, que será: search labitig.unavarra.es nameserver 127.0.0.1 La línea `search' especifica en qué dominios se buscaría para cualquier nombre de máquina a la que quiera conectar. La línea `nameserver' especifica la dirección del servidor de nombres. Y el fichero /etc/host.conf. Probablemente contendrá varias líneas, una de ellas debería comenzar con order y tendría que parecerse a lo siguiente: order hosts,bind Si no hay una línea order debemos incluirla. Esto le indica a las rutinas de resolución de nombres que busquen primero en /etc/hosts, y pregunte luego al servidor de nombres (que especificamos en resolv.conf que está en 127.0.0.1). Luego debemos configurar los archivos especificados en los apuntes acerca de DNS y adaptarlos a nuestra máquina, estos archivos son: named.conf, named.local, named.forward, named.192.168.192, named.206.130 y named.ca named.unavarra.es, Una vez que tenemos todos los ficheros completos y modificados necesitamos arrancar el servicio named y probar que funciona adecuadamente. Para ello lo primero que tenemos que hacer es cambiar el propietario de directorio /var/named con la orden chown. Memoria 15 Laboratorio de Sistemas Operativos A continuación arrancamos el servicio dns: /etc/rc.d/init.d/named start Si no hay problemas se arrancará el servicio y en principio tendremos configurado el servidor DNS que tanto nos ha costado, pero para comprobarlo deberemos usar: Named-checkconf: Para comprobar la configuración Named-checkzone: Para comprobar la zona Una vez realizadas las comprobaciones tenemos que pasar a la “prueba de fuego”, esta se consigue con el comando nslookup: $ nslookup Si ésto es lo que obtenemos la maquina nos funcionará correctamente: Default Server: localhost Address: 127.0.0.1 Y terminaríamos la configuración de DNS pudiendo realizar las búsquedas de maquinas que deseemos para asegurarnos del correcto funcionamiento. Memoria 16 Laboratorio de Sistemas Operativos 8. Servidor HTTP. Servidor FTP. Telnet: Es el protocolo que permite conectar dos ordenadores, ejecutando los programas sobre el remoto pero realizando las operaciones de entrada/salida sobre el local. Permite hacer login sobre una maquina remota y hacer uso de todos sus recursos de computación desde la maquina local. La información enviada por telnet se envía en forma de texto plano, lo que supone un problema de seguridad que se resuelve empleando SSH. Puertos utilizados: telnet: 23 ssh: 22 Comandos: telnet 192.168.192.0 ssh 192.168.192.0 FTP: File Transfer Protocol, es el protocolo de permite transferir ficheros entre dos maquinas conectadas en red. Podemos “subir” y “bajar” ficheros. De la maquina local a la remota y viceversa. La versión segura se denomina sftp (secure FTP) Puertos: ftp: 20 y 21 sftp: 115 Comandos: ftp dirección ip Para coger un archivo: get nombre_archivo* Para dejar un archivo: put nombre_archivo* Nota: Si tenemos NIS activado no es necesario hacer logon, el propio sistema se encarga de gestionar los accesos con la seguridad establecida. Memoria 17 Laboratorio de Sistemas Operativos Apache: Es un servidor web portable, modular, fiable y open source(código abierto), es uno de los servidores web más utilizados en todo el mundo. Configuración: Modificar fichero: httpd.conf Modificar la página Index.shtml en la siguiente ubicación: /var/www/html para la pagina de bienvenida. Arranque: /etc/httpd/conf Ficheros de configuración: commonhttpd.conf httpd.conf Impresión: Hay dos formas de impresión: Lpd: Demonio que gestiona la cola de impresión en nuestra maquina Cups: Es un equivalente al spooler de Windows. Para la impresión necesitamos tener instaladas las herramientas de impresión, que se obtienen del paquete Printtool. Una vez instaladas las herramientas de impresión procedimos a configurar la impresora en nuestra máquina, nosotros utilizamos el demonio de impresión Lpd en lugar de Cups, para configurar la impresora ejecutamos la utilidad drakconf y lo único que tuvimos que hacer fue decirle el tipo de impresora y poco mas, porque de lo demás se encargo é, lo que también nos pidió fue la dirección IP de la impresora que le dimos la 192.168.192.250 y una vez elegida la impresora y proporcionada la dirección IP procedimos a la impresión de documentos. Ver hoja anexa configuración impresora. Nota: En nuestro laboratorio la impresora esta dentro de la red de la universidad, por lo que estaba en una red de tipo B y nuestra red era una red de tipo C, por lo que tuvimos que cambiarle la dirección IP para poder imprimir desde nuestra red. Memoria 18 Laboratorio de Sistemas Operativos 9. Servidores de BBDD Mysql o postgres Instalación de paquetes: Interfaz: Mysqlcc Mysqladmin Gasql Consola: /usr/bin/mysqladmin safe_mysql & (salvar cambios y evitar bloqueos) Directorio de BBDD: Var/lib/mysql Test (pruebas) Mysql (configuración) Directorio de bbdd Var/lib/mysql Lo primero que debemos hacer es arrancar MySQL : • • Linux: ./mysqld start Windows: mysqld-shareware.exe Todo el sistema de permisos de acceso al servidor, a las bases de datos y sus tablas, MySQL lo almacena en una tabla llamada mysql, que estará en el directorio /data, a menos que hallamos especificado otro directorio. En Windows esta tabla se crea con la instalación, pero en Linux/Unix debemos crearla con: /usr/local/mysql/bin/mysql_install_db En la base de datos mysql es donde se guardarán todos los permisos y restricciones a los datos de nuestras bases de datos. La principal herramienta de MySQL es mysqladmin, la cuál como parece indicar su nombre es la encargada de la administración. MySQL crea por defecto al usuario root con todos los permisos posibles habilitados, podemos utilizar este usuario como administrador o crear otro, por ejemplo mysqladmi. Como el usuario root lo crea sin clave de acceso, lo primero que debemos hacer es asignarle una: mysqladmin -u root password "miclave" Memoria 19 Laboratorio de Sistemas Operativos A partir de ahora cualquier operación que hagamos como root deberemos especifica la clave. Hay que destacar que entre el modificador -p y la clave no debe haber espacios. mysqladmin -u root -pmiclave Pues bien, ya estamos preparado para crear una base de datos mysqladmin -u root -pmiclave create mibasededatos Para borrarla: mysqladmin -u root -pmiclave drop mibasededatos La estructura de MySQL En el directorio /benc encontraremos ejemplos de script y SQL. En el directoio /share están los mensajes de error del servidor para los distinos idiomas. Los directorios /include y /lib contiene los fichero *.h y las librerías necesarias, en /bin están los ficheros ejecutables y en /data encontraremos como subdirectorio cada una de las bases de datos que hayamos creado. Como hemos dicho, para cada base de datos que nosotros creamos, MySQL crea un directorio con el nombre que le hemos asignado a la base de datos. Dentro de este directorio, por cada tabla que definamos MySQL va ha crear tres archivos: mitabla.ISD, mitabla.ISM, mitabla.frm El archivo con extensión ISD, es el contiene los datos de nuestra tabla, el ISM contiene información acerca de las claves y otro datos que MySQL utiliza para buscar datos en el fichero ISD. Y el archivo frm contiene la estructura de la propia tabla. Dado que las bases de datos de MySQL son simples ficheros de un directorio, para realizar copias de seguridad, podremos utilizar las herramientas de compresión que habitualmente usamos en nuestro sistema y luego copiarlo a otro lugar, o simplemente esto último. Seguridad Como comentamos anteriormente, todo el sistema de permisos MySQL lo guarda en una base de datos llamada mysql, la cuál se componen de cinco tablas: host, user, db, tables_priv, colums_priv. La tabla user contiene información sobre los usuarios, desde que máquinas pueden acceder a nuestro servidor MySQL, su clave y de sus diferentes permisos. La tabla host nos informa sobre que máquinas podran acceder a nuestro sistema, así como a las bases de datos que tendrán acesso y sus diferentes permisos. Finalmente, las Memoria 20 Laboratorio de Sistemas Operativos tablas db, tables_priv, columns_priv nos proveen de un control individual de las bases de datos, tablas y columnas (campos). Tabla user: CAMPO TIPO POR DEFECTO Host char(60) User char(16) Password char(16) Select_priv enum('N','Y') N Insert_priv enum('N','Y') N Update_priv enum('N','Y') N Delete_priv enum('N','Y') N Create_priv enum('N','Y') N Drop_priv enum('N','Y') N Reload_priv enum('N','Y') N Shutdown_priv enum('N','Y') N Process_priv enum('N','Y') N File_priv enum('N','Y') N Grant_priv enum('N','Y') N References_priv enum('N','Y') N Index_priv enum('N','Y') N Alter_priv enum('N','Y') N CAMPO TIPO POR DEFECTO Host char(60) Db char(32) Select_priv enum('N','Y') N Insert_priv enum('N','Y') N Update_priv enum('N','Y') N Delete_priv enum('N','Y') N Create_priv enum('N','Y') N Drop_priv enum('N','Y') N Grant_priv enum('N','Y') N References_priv enum('N','Y') N Index_priv enum('N','Y') N Tabla host: Memoria 21 Laboratorio de Sistemas Operativos Alter_priv enum('N','Y') N CAMPO TIPO POR DEFECTO Host char(60) Db char(32) User char(16) Select_priv enum('N','Y') N Insert_priv enum('N','Y') N Update_priv enum('N','Y') N Delete_priv enum('N','Y') N Create_priv enum('N','Y') N Drop_priv enum('N','Y') N References_priv enum('N','Y') N Index_priv enum('N','Y') N Alter_priv enum('N','Y') N Tabla db: He aquí una breve descripción de los diferentes permisos: • • • • • • • • • • • • • Memoria Select_priv: Permite utilizar la sentencia SELECT Insert_priv: Permite utilizar la sentencia INSERT Update_priv: Permite utilizar la sentencia UPDATE Delete_priv: Permite utilizar la sentencia DELETE Create_priv: Permite utilizar la sentencia CREATE o crear bases de datos Drop_priv: Permite utilizar la sentencia DROP o eliminar bases de datos Reload_priv: Permite recargar el sistema mediante mysqladmin reload Shutdown_priv: Permite parar el servidor mediante mysqladmin Permite parar el servidor mediante mysqladmin shutdown Process_priv: Permite manejar procesos del servidor File_priv: Permite leer y escribir ficheros usando comando como SELECT INTO OUTFILE y LOAD DATA INFILE Grant_priv: Permite otorgar permisos a otros usuarios Index_priv: Permite crear o borrar índices Alter_priv: Permite utilizar la sentencia ALTER TABLE 22 Laboratorio de Sistemas Operativos Si dejamos en blanco los campos user, host o db, haremos referencia a cualquier usuario, servidor o base de datos. Conseguiremos el mismo efecto poniendo el símbolo % en el campo. Comparación: • MySQL: o Su principal objetivo de diseño fue la velocidad. Se sacrificaron algunas características esenciales en sistemas más "serios" con este fin. o Otra característica importante es que consume muy pocos recursos, tanto de CPU como de memoria. o Licencia GPL a partir de la versión 3.23.19. o Ventajas: Mayor rendimiento. Mayor velocidad tanto al conectar con el servidor como al servir selects y demás. Mejores utilidades de administración (backup, recuperación de errores, etc). Aunque se cuelgue, no suele perder información ni corromper los datos. Mejor integración con PHP. No hay límites en el tamaño de los registros. Mejor control de acceso, en el sentido de qué usuarios tienen acceso a qué tablas y con qué permisos. MySQL se comporta mejor que Postgres a la hora de modificar o añadir campos a una tabla "en caliente". o Inconvenientes: No soporta transacciones, "roll-backs" ni subselects. No considera las claves ajenas. Ignora la integridad referencial, dejándola en manos del programador de la aplicación. • PostgreSQL: o Postgres intenta ser un sistena de bases de datos de mayor nivel que MySQL, a la altura de Oracle, Sybase o Interbase. o Licencia BSD. o Ventajas: o Inconvenientes: Por su arquitectura de diseño, escala muy bien al aumentar el número de CPUs y la cantidad de RAM. Soporta transacciones y desde la versión 7.0, claves ajenas (con comprobaciones de integridad referencial). Tiene mejor soporte para triggers y procedimientos en el servidor. Soporta un subconjunto de SQL92 MAYOR que el que soporta MySQL. Además, tiene ciertas características orientadas a objetos. Consume BASTANTES más recursos y carga más el sistema. Memoria 23 Laboratorio de Sistemas Operativos Límite del tamaño de cada fila de las tablas a 8k !!! (se puede ampliar a 32k recompilando, pero con un coste añadido en el rendimiento). Es de 2 a 3 veces más lenta que MySQL. Menos funciones en PHP. En cuanto a consideraciones de estabilidad del servidor, en general parece que MySQL es más estable (aunque también hay gente que opina lo contrario), y que Postgres tiende a desperdiciar memoria y sobrecargar bastante el sistema (aunque de nuevo, hay opiniones distintas). Como conclusión a la comparación entre MySQL y Postgres, parece aceptado que MySQL junto con Apache y PHP forman un buen equipo para servir páginas web con contenido dinámico, discusiones, noticias, etc.,. en general, sistemas en los que la velocidad y el número de accesos concurrentes sea algo primordial, y la seguridad no sea muy importante (pueda bastar con hacer backups periódicos que se restaurarán tras una caida del servidor). En cambio, para sistemas más serios en las que la consistencia de la BD sea fundamental (BD con información realmente importante, bancos, etc.) PostgreSQL es una mejor opción pese a su mayor lentitud. Memoria 24 Laboratorio de Sistemas Operativos 10. • • • • • • Referencias www.mandrakeuser.org MySQL, www.mysql.org Página principal de KSql ksql.sourceforge.net http://www.marqueze.net/relatos/relatos/mvarios/linux3/nis.html http://www.httpd.apache.org www.wrox.com Transparencias de teoría de la Asignatura. 11. Anexos Hoja de Descripción de maquinas Hoja de Instalación de Software Hoja de Configuración impresora Memoria 25