Gentoo Logo

Guía Gentoo Linux OpenAFS

Contenido:

1.  Introducción

Sobre este documento

Este documento provee todos los pasos necesarios para instalar un servidor OpenAFS en Gentoo Linux. Partes de este documento están tomadas del AFS PUF y la Guía de inicio rápido sobre AFS de IBM. Bueno, nunca reinventaremos la rueda. :)

¿Qué es AFS?

AFS es un sistema de archivos distribuido que permite compartir, eficientemente, recursos del sistema de archivos a través de una red de área local y una red de área amplia entre máquinas co-operativas (clientes y servidores). Los clientes mantienen un caché de los objetos más utilizados (archivos), para tener un acceso más rápido.

AFS está basado en el sistema de archivos distribuido originalmente desarrollado en el Centro de Tecnología de la Información de la Universidad Carnegie-Mellon que fue llamado el "Sistema de Archivos Andrew". "Andrew" era el nombre del proyecto de investigación de la CMU - honrando a los fundadores de la universidad. Una vez que Transarc fue formada y AFS se convirtió en un producto, el "Andrew" fue dejado de lado como una forma de indicar que AFS había ido más allá del proyecto de investigación Andrew y se había convertido en un producto con soporte, un sistema de archivos de calidad. Sin embargo, ya habían numerosas celdas cuyo sistema de archivos raíz era /afs. Inicialmente, cambiar este detalle no era una operación sencilla, así que, para evitar que los primero sitios AFS tuviesen que renombrar sus sistemas de archivos, se mantuvo el nombre AFS.

¿Qué es una celda AFS?

Una celda AFS es una colección de servidores agrupados juntos administrativamente y que representan un único y cohesionado sistema de archivos. Típicamente, una celda AFS es un conjunto de máquinas que comparten el mismo nombre de dominio de Internet (como por ejemplo gentoo.org). Los usuarios ingresan al sistema a través de una de las estaciones de trabajo cliente y esta solicita, a nombre del usuario, la información y archivos necesarios de los servidores de la celda. El usuario no sabe en qué servidor se encuentra el archivo al que está accediendo, incluso no notará si el servidor está localizado en otra habitación, dado que cada volumen puede ser replicado y movido a otro servidor sin que el usuario lo note. Los archivos son siempre accesibles. Es como NFS, pero con esteroides :)

¿Cuáles son los beneficios de usar AFS ?

Las principales fortalezas de AFS son: facilidad en el manejo del caché (en el lado del cliente, normalmente de 100M a 1GB), características de seguridad (basado en Kerberos 4, listas de control de acceso), simplicidad en el direccionamiento (existe un único sistema de archivos), escalabilidad (es posible agregar servidores a la celda cuando sea necesario), protocolo de comunicaciones.

¿Dónde puedo encontrar más información?

Lee el AFS PUF.

La página principal de OpenAFS www.openafs.org.

AFS fue desarrollado originalmente por Transarc que es ahora parte de IBM. No ha vuelto a aparecer en el catálogo de productos de IBM desde abril de 2005.

¿Cómo puedo depurar problemas?

OpenAFS tiene grandes capacidades de bitácora. Sin embargo, por defecto, los mensajes son direccionados directamente a sus propias bitácoras en vez de hacerlo a través de los mecanismos que tienes en tu sistema. Para que los servidores utilicen estos mecanismos agrega la opción -syslog a todos los comandos bos.

2.  Actualizando desde versiones anteriores

Introducción

Esta sección apunta a ayudarte a través del proceso de actualización de una instalación existente a OpenAFS versión 1.4.0 o superior (o 1.2.x empezando desde 1.2.13. Lo antes mencionado no será atacado específicamente, ya que la mayoría de las personas querrán la versión 1.4 debido a que incorpora soporte apropiado de linux-2.6, soporte para archivos más grandes y correcciones de ciertos fallos).

Si, en cambio, estás haciendo una instalación completamente nueva de la versión 1.4 de OpenAFS, entonces no dudes en saltarte este capítulo. Sin embargo, si estás actualizando de una versión anterior, es muy recomendable que sigas las instrucciones de las siguientes secciones. El guión de transición en el ebuild está diseñado para asistirte en una actualización rápida y el reinicio del sistema en poco tiempo. Por favor, nota que (por razones de seguridad) no borrará los archivos de configuración y guiones de arranque de los lugares antiguos, tampoco alterará tu configuración de arranque para que utilice los nuevos guiones, etc. Si necesitas más razones para convencerte, utilizando el antiguo módulo OpenAFS del núcleo junto con los binarios del sistema actualizados, muy probablemente causará que tu núcleo enloquezca. Así que, sigamos leyendo para tener una transición limpia y tranquila, ¿ok?

Nota: Este capítulo ha sido escrito teniendo en mente distintas configuraciones del sistema. Sin embargo, es posible que debido a ajustes que el usuario haya realizado, su configuración específica no esté descrita aquí. Un usuario con suficiente confianza en sí mismo como para modificar sus sistema debe tener suficiente experiencia cómo para aplicar los consejos aquí presentados cuando sean necesarios. Viceversa, un usuario que haya hecho pocas modificaciones puede saltarse la mayoría de las advertencias.

Diferencias con versiones anteriores

Tradicionalmente, OpenAFS ha utilizado las mismas convenciones de rutas que utilizaba IBM TransArc labs, antes de que el código sea bifurcado. Por lo cual se entiende que configuraciones antiguas de AFS sigan con aquellas convenciones de rutas antiguas. Instalaciones más recientes están más acorde con el FHS al utilizar ubicaciones estándar (como se ve en muchas distribuciones de Linux). La siguiente tabla es una compilación del guión de configuración y el LEEME que acompaña los comprimidos de la distribución de OpenAFS:

Directorio Propósito Modo Transarc Modo por defecto Traducción hacia Gentoo
viceetcdir Configuración del cliente /usr/vice/etc $(sysconfdir)/openafs /etc/openafs
sin nombre Binarios del cliente sin especificar $(bindir) /usr/bin
afsconfdir Configuración del servidor /usr/afs/etc $(sysconfdir)/openafs/server /etc/openafs/server
afssrvdir Binarios internos del servidor /usr/afs/bin (servers) $(libexecdir)/openafs /usr/libexec/openafs
afslocaldir Estado del servidor /usr/afs/local $(localstatedir)/openafs /var/lib/openafs
afsdbdir Auth/serverlist/... bases de datos /usr/afs/db $(localstatedir)/openafs/db /var/lib/openafs/db
afslogdir Archivos de bitácora /usr/afs/logs $(localstatedir)/openafs/logs /var/lib/openafs/logs
afsbosconfig Configuración del supervisor $(afslocaldir)/BosConfig $(afsconfdir)/BosConfig /etc/openafs/BosConfig

Hay algunas rarezas, como binarios siendo colocados en /usr/vice/etc en modo Transarc, pero esta lista no intenta ser exhaustiva. Es más que nada para dar una referencia a aquellos tratando de resolver problemas con la transición de sus archivos de configuración antiguos.

Otro resultado del cambio de rutas es que el caché de disco ha sido movido de ubicación de /usr/vice/cache a /var/cache/openafs.

Además, el guión de inicio ha sido dividido en una parte cliente y otra servidor. Solía existir /etc/init.d/afs, pero ahora existen tanto /etc/init.d/openafs-client como /etc/init.d/openafs-server. Consecuentemente, el archivo de configuración /etc/conf.d/afs a sido dividido en /etc/conf.d/openafs-client y /etc/conf.d/openafs-server. Junto con esto, las opciones dentro de /etc/conf.d/afs para definir la máquina como cliente o servidor son ahora obsoletas.

Otro cambio en el guión de inicio ha causado que la configuración de tu caché de disco ya no sea revisada. El antiguo código requería que una partición ext2 separada sea montada en /usr/vice/cache. Habían algunos problemas con ello:

  • Aunque es una configuración muy lógica, tu caché no necesita estar en una partición separada. Mientras te asegures que exista la cantidad de espacio libre que especificas en /etc/openafs/cacheinfo para el uso del caché de disco, estás a salvo. Así que no existe un problema real con que tu caché esté en tu partición raíz.
  • Algunas personas utilizan enlaces simbólicos para apuntar a la verdadera ubicación del caché de disco. El guión de inicio no se llevaba bien con ello, ya que la ubicación del caché no era mostrada en /proc/mounts.
  • En estos días, muchos prefieren ext3 sobre ext2. Ambos sistemas de archivos son válidos para utilizarlos en el caché de disco. Cualquier otro sistema de archivos no está soportado (como por ejemplo: no intentes reiserfs, recibirás una enorme advertencia, y ocurrirán fallos de todas formas).

Transición a las nuevas rutas

Antes de nada, emerger una nueva versión de OpenAFS no debe sobreescribir ningún archivo de configuración antiguo. El guión está diseñado para no alterar ningún archivo de configuración ya existente en el sistema. Incluso si tienes una configuración completamente entreverada utilizando nuevas y antiguas ubicaciones, el guión no debe causar mayores problemas. También, si se detecta que hay un servidor OpenAFS ejecutándose, la instalación se detendrá, previniendo cualquier posible corrupción en la base de datos.

Una advertencia sin embargo -- han estado circulando algunos ebuilds a través de la Internet que desactivan parcialmente la protección que Gentoo impone a /etc. Estos ebuilds nunca han sido distribuidos por Gentoo. Quizás quieras revisar la variable CONFIG_PROTECT_MASK en la salida del siguiente comando:

Listado de Código 2.1: Revisando tu CONFIG_PROTECT_MASK

# emerge info | grep "CONFIG_PROTECT_MASK"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/texmf/web2c /etc/env.d"

Aunque nada en este ebuild tocará el archivo /etc/afs, la actualización causará que tu antigua instalación de OpenAFS sea eliminada. Los archivos en CONFIG_PROTECT_MASK que pertenezcan a la antigua instalación también serán eliminados.

Debe ser claro para el usuario experimentado que en caso se haya ajustado el sistema añadiendo enlaces simbólicos manualmente (e.g. /usr/afs/etc hacia /etc/openafs), la nueva instalación posiblemente se llevará bien con los antiguos archivos de configuración. En este caso, no ha habido una transición real, así que eliminar la antigua instalación resultará en una configuración de OpenAFS rota.

Ahora que sabes que no sucede, quizás quieras saber lo que sí pasa:

  • /usr/afs/etc es copiado a /etc/openafs/server
  • /usr/vice/etc es copiado a /etc/openafs
  • /usr/afs/local es copiado a /var/lib/openafs
  • /usr/afs/local/BosConfig es copiado a /etc/openafs/BosConfig, mientras se reemplazan las ocurrencias de /usr/afs/bin/ con /usr/libexec/openafs, /usr/afs/etc con /etc/openafs/server y /usr/afs/bin (sin el / como previamente) con /usr/bin
  • /usr/afs/db es copiado a /var/lib/openafs/db
  • El archivo de configuración /etc/conf.d/afs es copiado a /etc/conf.d/openafs-client, ya que todas las opciones antiguas estaban destinadas para el uso exclusivo del cliente.

La actualización en sí

¿Así que no tienes un servidor OpenAFS? O quizás sí, y las secciones anteriores te han informado de que va a suceder, ¿y aún quieres seguir?

¡Entonces vamos a hacerlo!

Si tienes el servidor corriendo, es recomendable que lo apagues ahora.

Listado de Código 2.2: Deteniendo OpenAFS (en caso que tengas un servidor)

# /etc/init.d/afs stop

Ahora, a actualizar.

Listado de Código 2.3: ¡Actualiza!

# emerge -u openafs

Reiniciando OpenAFS

Si tenías el servidor OpenAFS corriendo, no deberías haber sido obligado a detener el cliente. Ahora es tiempo de hacerlo.

Listado de Código 2.4: Deteniendo el cliente OpenAFS luego de la actualización

# /etc/init.d/afs stop

De seguro querrás mantener al mínimo el tiempo de inactividad del servidor, así que ahora reinicia tu servidor OpenAFS.

Listado de Código 2.5: Reiniciando el servidor OpenAFS luego de la actualización

# /etc/init.d/openafs-server start

Puedes revisar si está corriendo adecuadamente con el siguiente comando:

Listado de Código 2.6: Revisando el estado del servidor OpenAFS

# /usr/bin/bos status localhost -localauth

Antes de reiniciar el cliente OpenAFS, por favor revisa la configuración de la caché. La configuración está definida en /etc/openafs/cacheinfo. Para reiniciar tu cliente OpenAFS, ejecuta el siguiente comando:

Listado de Código 2.7: Reiniciando el cliente OpenAFS luego de la actualización

# /etc/init.d/openafs-client start

Haciendo la limpieza

Antes de hacer la limpieza de tu sistema, asegúrate bien que todo esté corriendo adecuadamente y que efectivamente has reiniciado el cliente y el servidor luego de la actualización (de otra forma, puede que aún estés ejecutando tu antigua instalación).

Importante: ¡¡Asegúrate de no estar estás utilizando /usr/vice/cache para el caché de disco si vas a eliminar el directorio /usr/vice!!

Los siguientes directorios pueden ser eliminados del sistema de manera segura:

  • /etc/afs
  • /usr/vice
  • /usr/afs
  • /usr/afsws

Los siguientes archivos también son innecesarios:

  • /etc/init.d/afs
  • /etc/conf.d/afs

Listado de Código 2.8: Eliminando los archivos antiguos

# tar czf /root/oldafs-backup.tgz /etc/afs /usr/vice /usr/afs /usr/afsws
# rm -R /etc/afs /usr/vice /usr/afs /usr/afsws
# rm /etc/init.d/afs /etc/conf.d/afs

En caso que hayas utilizado previamente los ebuilds =openafs-1.2.13 o =openafs-1.3.85, es probable que también tengas algunos archivos innecesarios más:

  • /etc/init.d/afs-client
  • /etc/init.d/afs-server
  • /etc/conf.d/afs-client
  • /etc/conf.d/afs-server

Cambios en los guiones de inicio

La mayoría de la gente tiene configurado su sistema para que inicie el cliente y el servidor OpenAFS automáticamente durante el inicio del sistema. Aquellos que no, pueden saltarse esta sección con seguridad. Si tienes un sistema que inicia automáticamente el cliente y el servidor, debes reactivar esta característica ya que los nombres de lo guiones de inicio han cambiado.

Listado de Código 2.9: Reactivando el inicio de OpenAFS al arrancar el sistema

# rc-update del afs default
# rc-update add openafs-client default
# rc-update add openafs-server default

Si tienes =openafs-1.2.13 o =openafs-1.3.85, debes eliminar afs-client y afs-server del nivel de ejecución por defecto, en lugar de afs.

Solucionando problemas: qué hacer si falla la actualización automática

No entres en pánico. No deberías haber perdido ninguna información ni tampoco archivos de configuración. Así que analicemos la situación. En cualquier caso envía información sobre la falla a bugs.gentoo.org, con la mayor cantidad de información posible.

Si tienes problemas iniciando el cliente, los siguientes pasos deben ayudarte a diagnosticar el problema.

  • Ejecuta dmesg. El cliente normalmente envía mensajes de error ahí.
  • Revisa /etc/openafs/cacheinfo. Debería estar con el siguiente formato: /afs:{ruta al caché de disco}:{número de bloques para el caché de disco}. Normalmente, tu caché de disco estará localizado en /var/cache/openafs.
  • Revisa la salida de lsmod. Debes revisar las lineas que empiecen con la palabra openafs.
  • pgrep afsd te dirá si afsd se está ejecutando o no.
  • cat /proc/mounts debe mostrar si /afs fue montado.

Si tienes problemas iniciando el servidor, entonces estos consejos deben ser útiles:

  • pgrep bosserver te dirá si el supervisor está en ejecución o no. Si tienes más de uno corriendo, entonces algo ha salido mal. En ese caso, deberías intentar apagar el servidor OpenAFS elegantemente con bos shutdown localhost -localauth -wait, revisar el resultado con bos status localhost -localauth y eliminar los procesos supervisores restantes que sigan ejecutándose (ls /usr/libexec/openafs para obtener una lista de ellos). Luego de ello, haz un /etc/init.d/openafs-server zap para reiniciar el estado del servidor y /etc/init.d/openafs-server start para intentar arrancarlo nuevamente.
  • Si estás utilizando el sistema de bitácoras propio de OpenAFS (que es la configuración por defecto), revisa /var/lib/openafs/logs/*. Si estás utilizando syslog, revisa sus propias bitácoras en búsqueda de cualquier información útil.

3.  Documentación

Obteniendo la documentación sobre AFS

Puedes obtener la documentación original AFS de IBM. Está muy bien escrita y si vas a administrador un servidor AFS es una lectura muy recomendada.

Listado de Código 3.1: Instalando afsdoc

# emerge app-doc/afsdoc

También tienes la opción de utilizar la documentación distribuida con OpenAFS. Esta es instalada cuando tienes activada la bandera USE doc. La documentación puede ser encontrada en el directorio /usr/share/doc/openafs-*/. Al momento de escribir este documento, esta documentación está aún en fase de desarrollo. Puede, sin embargo, documentar características nuevas de OpenAFS que no son incluidas en la documentación de IBM sobre AFS.

4.  Instalación del cliente

Construyendo al cliente

Listado de Código 4.1: Instalando openafs

# emerge net-fs/openafs

Luego de una compilación exitosa, estás listo para seguir.

Instalación de un cliente de navegación-global simple

Si no eres parte de una celda OpenAFS específica a la cual que quieres acceder, y solamente quieres navegar las particiones compartidas OpenAFS disponibles de manera global, entonces solo instala OpenAFS, no modifiques la configuración para nada, y arranca /etc/init.d/openafs-client.

Accediendo a una celda OpenAFS específica

Si necesitas acceder a una celda específica, digamos a la celda de tu universidad o compañía, entonces es necesario hacer algunos ajustes a la configuración.

Primero, necesitas actualizar /etc/openafs/CellServDB con la base de datos de servidores de tu celda. Normalmente, tu administrador te ofrecerá esta información.

Luego, para poder ingresar a la celda OpenAFS, necesitas especificar su nombre en /etc/openafs/ThisCell.

Listado de Código 4.2: Ajustando CellServDB y ThisCell

CellServDB:
>netlabs        #Nombre de la celda
10.0.0.1        #almacenamiento

ThisCell:
netlabs       

Aviso: Utiliza solamente espacios dentro del archivo CellServDB. El cliente muy probablemente fallará si utilizas TABs.

CellServDB le dice al cliente que servidor(es) necesita contactar para una celda en particular. ThisCell debe ser bastante obvio. Normalmente se utiliza un nombre que es único para tu organización. Tu dominio (oficial) es una buena elección.

Para un inicio rápido, puedes iniciar /etc/init.d/openafs/client y utilizar klog para autenticarte y empezar a utilizar tu acceso a la celda. Para autenticarte de manera automática en tu celda, consulta la sección adecuada más abajo.

Ajustando el caché

Nota: Desafortunadamente los clientes AFS necesitan un sistema de archivos ext2/3 para que su caché funcione correctamente. Existen algunos problemas cuando se utilizan otros sistemas de archivos (e.g. utilizar reiserfs no es una buena idea).

Puedes hospedar tu caché en un sistema de archivos ya existente (si es ext2/3), o quizás prefieras crear una partición separada para ello. La ubicación por defecto del caché es /var/cache/openafs, pero puedes cambiarla editando /etc/openafs/cacheinfo. El tamaño estándar del caché es de 200MB, pero más no hará ningún daño.

Iniciando AFS en el arranque

El siguiente comando creará los enlaces apropiados para que el cliente afs se inicie durante el arranque del sistema.

Aviso: Siempre debes tener activo el servidor AFS cuando trates de iniciar un cliente afs. Si el servidor está fuera de línea tu sistema no arrancará hasta que llegue a un límite de tiempo. (y esto es un tiempo muy, muy largo).

Listado de Código 4.3: Agregando AFS al nivel de ejecución por defecto

# rc-update add openafs-server default

5.  Instalación del servidor

Construyendo el servidor

Nota: ¡Todos los comandos deben ser escritos en una sola linea! En este documento están, algunas veces, divididos en dos líneas para hacerlos más fáciles de leer.

Si aún no lo has hecho, el siguiente comando instalará todos los binarios necesarios para construir un servidor y cliente AFS.

Listado de Código 5.1: Instalando openafs

# emerge net-fs/openafs

Iniciando el servidor AFS

Necesitas ejecutar el comando bosserver para inicializar el Servidor Basic OverSeer (BOS), que monitorea y controla otros procesos del servidor AFS. Tómalo como si fuera el init del sistema. Incluye la bandera -noauth para desactivar la comprobación de autorización, ya que no has añadido al usuario administrador todavía.

Aviso: Deshabilitar la comprobación de autenticación compromete gravemente la seguridad de la celda. Debes completar todos los siguientes pasos subsecuentemente de manera ininterrumpida y no debes dejar desatendida la máquina en ningún momento hasta que reinicies el servidor BOS con la comprobación de autorización habilitada. Bueno, eso es lo que la documentación sobre AFS dice :).

Listado de Código 5.2: Inicializando el servidor Basico OverSeer (supervisor básico)

# bosserver -noauth &

Verifica que el Servidor BOS creó /etc/openafs/server/CellServDB y /etc/openafs/server/ThisCell

Listado de Código 5.3: Revise si CellServDB y ThisCell han sido creados

# ls -al /etc/openafs/server/
-rw-r--r--    1 root     root           41 Jun  4 22:21 CellServDB
-rw-r--r--    1 root     root            7 Jun  4 22:21 ThisCell

Definiendo nombre de celda y membrecía para los procesos del servidor

Ahora asígnale un nombre a tu celda.

Importante: Hay algunas restricciones en el formato del nombre. Dos de las más importantes son que el nombre no puede incluir mayúsculas y tiene que ser menor a 64 caracteres. Recuerda que el nombre de tu celda estará bajo /afs, así que quizás desees escoger un nombre corto.

Nota: En la demás instrucciones de esta guía, sustituye el argumento <nombre servidor> por el nombre calificado completo (como por ejemplo afs.gentoo.org) de la máquina en la que estás instalando OpenAFS. Cambia también el argumento <nombre celda> por el nombre completo de tu celda (como gentoo).

Ejecuta el comando bos setcellname para definir el nombre de la celda:

Listado de Código 5.4: Asignando el nombre de la celda

# bos setcellname <nombre servidor> <nombre celda> -noauth

Iniciando el proceso de servidor de base de datos

Ahora, utiliza el comando bos create para crear las entradas de los cuatro procesos servidores de base de datos en el archivo /etc/openafs/BosConfig. Los cuatro procesos corren únicamente en las máquinas servidoras de base de datos.

kaserver El servidor de autenticación mantiene la base de datos de autenticación. Este puede ser reemplazado por un demonio kerberos 5. Si alguien quiere intentarlo siéntase libre de agregarlo a este documento :)
buserver El servidor de respaldo mantiene la base de datos de respaldo
ptserver El servidor de protección mantiene la base de datos de protección
vlserver El servidor de localización de volumen mantiene la base de datos de localización de volumen(VLDB). Por cierto, es muy importante.

Listado de Código 5.5: Creando los registros para los procesos de bases de datos

# bos create <nombre servidor> kaserver \
simple /usr/libexec/openafs/kaserver \
-cell <nombre celda> -noauth
# bos create <nombre servidor> buserver \
simple /usr/libexec/openafs/buserver \
-cell <nombre celda> -noauth
# bos create <nombre servidor> ptserver \
simple /usr/libexec/openafs/ptserver \
-cell <nombre celda> -noauth
# bos create <nombre servidor> \
vlserver simple /usr/libexec/openafs/vlserver \
-cell <nombre celda> -noauth

Puedes comprobar que todos los servidores están funcionando con el comando bos status:

Listado de Código 5.6: Revisar que estén corriendo todos los servidores

# bos status <nombre servidor> -noauth
Instance kaserver, currently running normally.
Instance buserver, currently running normally.
Instance ptserver, currently running normally.
Instance vlserver, currently running normally.

Inicializando la seguridad de la celda

Es hora de inicializar los mecanismos de seguridad de la celda. Empezaremos creando las dos siguientes entradas iniciales en la base de datos de autenticación: La cuenta administrativa principal, llamada admin por convención, y una entrada para el proceso del servidor AFS, llamado afs. Ningún usuario ingresa al sistema bajo la identidad afs, pero el módulo del Servicio de Entrega de Tickets (TGS) del Servidor de Autenticación utiliza esta cuenta para encriptar todos los tickets que entrega a clientes AFS. Esto suena muy parecido a Kerberos :)

Entrando al modo interactivo de kas

Listado de Código 5.7: Entrando al modo interactivo

# kas -cell <nombre celda> -noauth
ka> create afs
initial_password:
Verifying, please re-enter initial_password:
ka> create admin
initial_password:
Verifying, please re-enter initial_password:
ka> examine afs

User data for afs
key (0) cksum is 2651715259, last cpw: Mon Jun  4 20:49:30 2001
password will never expire.
An unlimited number of unsuccessful authentications is permitted.
entry never expires.  Max ticket lifetime 100.00 hours.
last mod on Mon Jun  4 20:49:30 2001 by <none>
permit password reuse
ka> setfields admin -flags admin
ka> examine admin
 
User data for admin (ADMIN)
key (0) cksum is 2651715259, last cpw: Mon Jun  4 20:49:59 2001
password will never expire.
An unlimited number of unsuccessful authentications is permitted.
entry never expires.  Max ticket lifetime 25.00 hours.
last mod on Mon Jun  4 20:51:10 2001 by <none>
permit password reuse
ka>

Ejecuta el comando bos adduser para añadir el usuario admin a /etc/openafs/server/UserList.

Listado de Código 5.8: Agregando al usuario admin al UserList

# bos adduser <nombre servidor> admin -cell <nombre celda> -noauth

Utiliza el comando bos addkey para definir la llave de encriptación del servidor AFS en /usr/afs/etc/KeyFile

Nota: Si el sistema solicita una llave de entrada, usa la contraseña que ingresaste al crear la entrada afs con kas

Listado de Código 5.9: Ingresando la contraseña

# bos addkey  <nombre servidor> -kvno 0 -cell <nombre celda> -noauth
input key:
Retype input key:

Con el comando pts createuser crea una entrada para el usuario admin en la Base de Datos de Protección

Nota: Por defecto el servidor de protección asigna AFS UID 1 al usuario admin, porque es el primer usuario cuya entrada se crea. Si el archivo de contraseñas local (/etc/passwd o equivalente) ya tiene una entrada para admin que le asigna un UID distinto, utiliza el argumento -id para crear UID que sean iguales.

Listado de Código 5.10: Creación del registro en la base de datos de protección para el usuario

# pts createuser -name admin -cell <nombre celda> [-id <AFS UID>] -noauth

Ejecuta el comando pts adduser para hacer al usuario admin miembro del grupo system:administrators, y el comando pts membership para verificar la membresía.

Listado de Código 5.11: Hacer a admin miembro del grupo de administradores y verificación

# pts adduser admin system:administrators -cell <nombre celda> -noauth
# pts membership admin -cell <nombre celda> -noauth
Groups admin (id: 1) is a member of:
system:administrators

(re-)iniciando apropiadamente el servidor AFS

En este momento, una autenticación adecuada es posible, y el servidor OpenAFS puede ser iniciado de forma normal. Nota que la autenticación también requiere un cliente OpenAFS corriendo (configúralo como se indica en el capítulo anterior).

Listado de Código 5.12: Apangando bosserver

# bos shutdown <nombre servidor> -wait -noauth
# killall bosserver

Listado de Código 5.13: Inicialización normal del servidor (y cliente) OpenAFS

# /etc/init.d/openafs-server start
# /etc/init.d/openafs-client start

Listado de Código 5.14: Agregando el servidor AFS al nivel de ejecución por defecto

# rc-update add openafs-server default

Listado de Código 5.15: Obteniendo un token como usuario administrador

# klog admin

Iniciando el Servidor de Archivos, el Servidor de Volumen y Salvager

Arranca el proceso fs, que consiste en el Servidor de Archivos, el Servidor de Volumen y Salvager (procesos fileserver, volserver y salvager).

Listado de Código 5.16: Iniciando el proceso fs

# bos create <nombre servidor> fs \
fs /usr/libexec/openafs/fileserver /usr/libexec/openafs/volserver /usr/libexec/openafs/salvager \
-cell <nombre celda> -noauth

Es hora de verificar que todos los procesos estén en ejecución:

Listado de Código 5.17: Verificando que todos los procesos estén corriendo

# bos status <nombre servidor> -long -noauth
Instance kaserver, (type is simple) currently running normally.
Process last started at Mon Jun  4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun  4 21:07:17 2001
Command 1 is '/usr/libexec/openafs/kaserver'

Instance buserver, (type is simple) currently running normally.
Process last started at Mon Jun  4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun  4 21:07:17 2001
Command 1 is '/usr/libexec/openafs/buserver'

Instance ptserver, (type is simple) currently running normally.
Process last started at Mon Jun  4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun  4 21:07:17 2001
Command 1 is '/usr/libexec/openafs/ptserver'

Instance vlserver, (type is simple) currently running normally.
Process last started at Mon Jun  4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun  4 21:07:17 2001
Command 1 is /usr/libexec/openafs/vlserver'

Instance fs, (type is fs) currently running normally.
Auxiliary status is: file server running.
Process last started at Mon Jun  4 21:09:30 2001 (2 proc starts)
Command 1 is '/usr/libexec/openafs/fileserver'
Command 2 is '/usr/libexec/openafs/volserver'
Command 3 is '/usr/libexec/openafs/salvager'

Tu siguiente acción depende de si alguna vez has ejecutado un servidor de archivos AFS en la celda.

En caso que estés instalando el primer servidor AFS de la celda, crea el primer volumen AFS root.afs

Nota: En el argumento "nombre partición", sustituye el nombre de una de las particiones de la máquina Servidor AFS. Cualquier sistema de archivos montado en un directorio llamado /vicepx, donde x está en el rango a-z, será considerado y utilizado como una partición del servidor AFS. A diferencia del caché (que solo soporta ext2/3), estas particiones pueden tener cualquier sistema de archivos unix. Tip: el servidor revisa cada punto de montaje /vicepx y si encuentra algún sistema de archivos montado ahí lo utiliza, de otra forma lo ignora. Este comportamiento puede ser modificado si creas un archivo llamado AlwaysAttach en el directorio en cuestión.

Listado de Código 5.18: Creación del volumen root.afs

# vos create <nombre servidor> <nombre partición> root.afs -cell <nombre celda> -noauth

Si hay máquinas servidoras de archivos AFS y volúmenes ya creados en la celda, utiliza los comandos vos sncvldb y vos syncserv para sincronizar el VLDB (Base de Datos de Localización de Volumen) con el estado actual de la localización de los volúmenes. Esto copiará toda la información necesaria a tu nuevo servidor.

Si el comando falla con el mensaje "partition /vicepa does not exist on the server", asegúrate que la partición está montada antes de levantar los servidores OpenAFS, o monta el directorio y reinicia los procesos utilizando/usr/afs/bin/bos restart <nombre servidor> -all -cell <nombre celda> -noauth.

Listado de Código 5.19: Sincronice el VLDB

# /usr/afs/bin/vos syncvldb <nombre servidor> -cell <nombre celda> -verbose -noauth
# /usr/afs/bin/vos syncserv <nombre servidor> -cell <nombre celda> -verbose -noauth 

Iniciando la parte servidor del servidor de actualizaciones

Listado de Código 5.20: Iniciando el servidor de actualización

# bos create <nombre servidor> \
upserver simple "/usr/libexec/openafs/upserver \
-crypt /etc/openafs/server -clear /usr/libexec/openafs" \
-cell <nombre celda> -noauth

Configurando el Nivel Superior del espacio de archivos AFS

Primero necesitas definir algunos ACLs, de manera que cualquier usuario pueda ver /afs.

Nota: La configuración por defecto del cliente OpenAFS tiene dynroot activado. Esta opción convierte /afs en un directorio virtual compuesto por el contenido de tu archivo /etc/openafs/CellServDB. Como tal, el siguiente comando no funcionará, debido a que necesita un directorio AFS real. Puede desactivar dynroot de manera temporal al definir ENABLE_DYNROOT en no en /etc/conf.d/openafs-client. No olvides reiniciar el cliente luego de modificar los parámetros.

Listado de Código 5.21: Configure las listas de control de acceso

# fs setacl /afs system:anyuser rl

Ahora necesitas crear el volumen raíz, montarlo como solo lectura en /afs/<nombre celda> y lectura-escritura en /afs/.<nombre celda>.

Listado de Código 5.22: Preparando el volumen raíz

# vos create <nombre servidor><nombre partición> root.cell
# fs mkmount /afs/<nombre celda> root.cell 
# fs setacl /afs/<nombre celda> system:anyuser rl
# fs mkmount /afs/.<nombre celda> root.cell -rw

Listado de Código 5.23: Agregando los volúmenes inferiores

# vos create <nombre servidor> <nombre partición> <MiVolumen>
# fs mkmount /afs/<nombre celda>/<nombre partición> <MiVolumen>
# fs mkmount /afs/<nombre celda>/.<miPuntoDeMontaje> <MiVolumen> -rw
# fs setquota /afs/<nombre celda>/.<miPuntoDeMontaje> -max <quotum>

Finalmente, ¡terminaste!. Ahora debes tener un servidor de archivos AFS funcionando en tu red local. ¡¡Es hora de tomar una gran taza de café e imprimir la documentación sobre AFS!!

Nota: Es muy importante para el correcto funcionamiento de servidor AFS que todos los relojes de todos los sistemas estén sincronizados. Esto lo puedes conseguir instalando un servidor ntp en una máquina (por ejemplo el servidor AFS) y sincronizar los relojes como clientes ntp. Esto también puede ser hecho por el cliente AFS.

6.  Administración básica

Renuncia de responsabilidad

OpenAFS es una tecnología extensa. Por favor lee la documentación de AFS para mayor información. Nosotros solo listamos una pequeña lista de tareas administrativas en este capítulo.

Configurando PAM para obtener una ficha AFS al ingresar

Para poder utilizar AFS necesitas autenticarte con el servidor KA si utilizas una implementación AFS Kerberos 4, o con un servidor Kerberos 5 KDC si utilizas MIT, Heimdal o ShiShi Kerberos 5. Sin embargo, para poder ingresar a una máquina también necesitarás una cuenta de usuario, que puede ser local mediante /etc/passwd, NIS, LDAP (OpenLDAP), o una base de datos Hesiod. PAM permite a Gentoo atar la autenticación de ingreso al sistema y de AFS a la cuenta del usuario.

Necesitarás actualizar /etc/pam.d/system-auth que es utilizado por las demás configuraciones. "use_first_pass" indica que primero se revisará el ingreso al sistema, e "ignore_root" evita que el usuario root sea autenticado de manera que pueda ingresar al sistema si el AFS o la red falla.

Listado de Código 6.1: /etc/pam.d/system-auth

auth       required     pam_env.so
auth       sufficient   pam_unix.so likeauth nullok
auth       sufficient   pam_afs.so.1 use_first_pass ignore_root
auth       required     pam_deny.so

account    required     pam_unix.so

password   required     pam_cracklib.so retry=3
password   sufficient   pam_unix.so nullok md5 shadow use_authtok
password   required     pam_deny.so

session    required     pam_limits.so
session    required     pam_unix.so

Para hacer que sudo mantenga la ficha del usuario real y prevenir a los usuarios locales ganar acceso AFS cambia /etc/pam.d/su de la siguiente manera:

Listado de Código 6.2: /etc/pam.d/su

# Aquí usuarios con uid > 100 se consideran miembros del AFS y usuarios con 
# uid <= 100 son ignorados por pam_afs.
auth       sufficient   pam_afs.so.1 ignore_uid 100

auth       sufficient   pam_rootok.so

# Si quieres restringir más a los usuarios de utilizar el comando su, crea el archivo,
# /etc/security/suauth.allow que es solo con permisos de escritura por el superusuario
# y añade a los usuarios que se les permite hacer "su" a ese archivo, uno por línea
#auth       required     /lib/security/pam_listfile.so item=ruser \
#       sense=allow onerr=fail file=/etc/security/suauth.allow

# Descomenta esta linea para permitir que los usuarios del grupo 
# wheel puedan hacer "su" sin utilizar passwd.
#auth       sufficient   pam_wheel.so use_uid trust

# Alternativamente a lo anterior, puedes implementar una lista de usuarios 
# que no necesitan dar una contraseña con una lista.
#auth       sufficient   pam_listfile.so item=ruser \
#       sense=allow onerr=fail file=/etc/security/suauth.nopass

# Comenta las siguiente lineas para permitir a cualquier usuario, incluso a
# aquellos fuera del grupo 'wheel', poder hacer "su"
auth       required     pam_wheel.so use_uid

auth       required     pam_stack.so service=system-auth

account    required     pam_stack.so service=system-auth

password   required     pam_stack.so service=system-auth

session    required     pam_stack.so service=system-auth
session    optional     pam_xauth.so

# Aquí prevenimos que la ficha del id real del usuario sea dejada atrás
session    optional     pam_afs.so.1 no_unlog


Imprimir

Página actualizada 13 de diciembre, 2011

Sumario: Esta guía muestra cómo instalar un servidor y clientes OpenAFS en Gentoo Linux.

Stefaan De Roeck
Editor

Holger Brueckner
Editor

Benny Chuang
Editor

Tiemo Kieft
Editor

Steven McCoy
Editor

Shyam Mani
Editor

John Christian Stoddart
Traductor

Rodrigo Lazo
Traductor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.