Para compartir directorios entre equipos de la red tenemos varias opciones. El protocolo NFS es el método utilizado como nativo en GNU/Linux. Esta opción es adecuada cuando todos los equipos que forman parte de la red utilizan el sistema GNU/Linux. Otra posibilidad es utilizar el protocolo de archivos compartidos utilizado en sistemas Microsoft llamado SMB/CIFS e implementado para sistemas GNU/Linux como Samba. La ventaja de utilizar Samba se que pueden acceder a los recursos compartidos con un cliente GNU/Linux o Windows.
NFS (Network File System) es un protocolo para sistemas de archivos distribuidos en una red de área local y posibilita que diferentes sistemas conectados a una misma red accedan a ficheros remotos cómo si se tratara de locales. El protocolo NFS está incluido por defecto en la mayoría de distribuciones Linux y también en los sistemas OSX de Apple y algunas versiones de Windows (como Windows 8 Enterprise).
El ordenador que actúa como servidor exporta ciertos directorios de su sistema de archivos para que los clientes tengan acceso a ellos. Para poder acceder a los archivos remotos, los clientes deben montar cada directorio exportado por el servidor en algún punto de su sistema de archivos (igual que hace con las particiones de su disco).
El paquete a instalar en el servidor es nfs-kernel-server. También se instalará el paquete nfs-common. El servicio nfs-kernel-server arranca dos demonios:
El fichero e que se configuran los directorios a exportar es /etc/exports. Sólo se pueden exportar directorios locales y que no se pueden exportar subdirectorios de un directorio exportado (a menos que se encuentran en diferentes dispositivos físicos).
El archivo /etc/exports contendrá una línea por cada directorio exportado, en la cual se indicará la ruta completa al mismo seguida por ciertos parámetros que permiten especificar qué ordenadores tienen derecho a montar remotamente el directorio exportado, y con qué tipo de acceso.
Ejemplo de fichero:
dónde /srv/nfs/C1 es la ruta al directorio exportado, a continuación aparece a quien se exporta el recurso (nombres, IPs o rangos de IP -ej. 192.168.1.0/24) y entre paréntesis las opciones que especifica el tipo de acceso. Sólo se pone espacio entre un cliente y otro. Entre las diferentes opciones se pone sólo coma.
Como cliente podemos poner:
Respecto a las opciones, las más comunes son (en negrita tenéis la predeterminada):
Otro ejemplo de fichero /etc/exports:
/net *.mi_empresa.com(rw)
/srv/compartida 192.168.1.0/255.255.255.0(rw) 192.168.2.0/255.255.255.0(rw)
/prueba (ro)
/home/jperez pc1.mi_empresa.com(rw)
/datos/ftp/public (ro)
En el ejemplo anterior, el servidor NFS exporta cinco directorios:
Después de cualquier cambio sobre el archivo /etc/exports tenemos que ejecutar la siguiente orden para actualizar la tabla de NFS
exportfs -arv
(-a exporta todos los directorios, -r eliminará las entradas antiguas y -v nos mostrará el resultado en la consola)
Para reiniciar el servicio NFS ejecutamos la orden:
/etc/init.d/nfs-kernel-server restart
Podemos ver los directorios exportados por una máquina con la orden:
showmount -e nombre_o_ip_pc
Los permisos que tendrá cada usuario que accede a un directorio compartido desde el cliente son los correspondientes a su uid en el servidor. Es decir, si el uid del usuario jomuoru en el equipo cliente es el 1000 tendrá sobre las carpetas compartidas en el servidor los permisos que tenga el usuario 1000 del servidor (a menos que hagamos la exportación con la opción all_squash).
Por ejemplo, imaginemos un directorio llamado prueba que pertenece al usuario con uid 1000 del servidor llamado vperez y al grupo con gid 1000 llamado profes con permisos 750. Desde el servidor veríamos algo como:
drwxr-x--- 2 vperez profes prueba
Ahora exportamos este directorio y lo montamos en el cliente en una carpeta llamada prueba. En dicho cliente el usuario 1000 es juan y el grupo 1000 es alumnos. Al mirar los permisos de dicho directorio veríamos:
[drwxr-x--- 2 juan alumnos prueba]
Por tanto el usuario juan acaba de adquirir permisos sobre dicho directorio simplemente por tener el mismo uid que tiene el propietario del directorio en el servidor.
Todos estos problemas desaparecerán al utilizar nuestros usuarios LDAP ya que en ellos hemos usado valores de UID y GID superiores a 5000 y así no coincidirán con ningún usuario local del cliente ni del servidor (con UID y GID superiores a 1000 o inferiores si son usuarios o grupos del sistema).
Aunque nosotros no vamos a profundizar en las opciones de compartición de NFS la versión NFSv4 sí permite la compartición en función de los usuarios utilizando diversas métodos de autentificación (kerberos con ACLs podría ser una).
Como hemos dicho las carpetas aparecerán como pertenecientes al usuario/grupo que en cada cliente coincida con el uid/gid del propietario en el servidor. Para evitar esto al crear la carpeta a compartir se suele cambiar su propietario a nobody/nogroup:
chown nobody:nogroup /srv/compartida
Además si queremos que sea de lectura y escritura compartiremos la carpeta con las opciones rw y all_squash para que cualquier usuario pueda escribir en ella.
Sin embargo, si la carpeta que estamos compartiendo es para almacenar los perfiles móviles de los usuarios las opciones con las que la debemos compartir son rw y no_root_squash. Esto es porque la primera vez que el usuario inicie sesión se crea su carpeta (en este caso en el servidor) y el root del equipo cliente debe cambiar su propietario para que pertenezca al usuario que inicia la sesión para lo que debe hacer un chown que sólo root puede ejecutar (por lo que tiene que tener los permisos de root en el servidor que es donde se está guardando la carpeta).
En el cliente el paquete a instalar es el nfs-common.
Los directorios remotos se montan localmente del mismo modo que cualquier otro sistema de archivos: manualmente por medio del comando mount, o añadiéndolos a /etc/fstab para se montan automáticamente al iniciar el sistema operativo.
En los dos casos, la sintaxis para especificar un directorio remoto es la siguiente:
nombre_del_host:directorio_remoto
Por ejemplo, para montar manualmente el directorio /net del equipo srvNFS en /usr/local del equipo cliente, se tiene que ejecutar el siguiente comando:
mount -t nfs srvNFS:/net /usr/local
Si queremos que el montaje se realice automáticamente al iniciar el cliente se tiene que añadir la siguiente línea en /etc/fstab:
srvNFS:/net /usr/local nfs rw,auto,noatime,nolock,bg,nfsvers=3,intr,actimeo=1800,rsize=8192,wsize=8192 0 0
Algunas opciones de mount son:
NOTA: aunque un usuario tenga permisos para escribir en una carpeta compartida con NFS no lo podrá hacer si no los tinen también sobre la carpeta en la cual se monta.
Ya tenemos configurado el directorio LDAP de forma que desde cualquier cliente puedo iniciar sesión con cualquier usuario del directorio. Pero su carpeta personal (que incluye su perfil y sus datos) se crea en cada máquina cliente lo cual es un problema si el usuario no tiene un único ordenador cliente asignado.
El siguiente paso es que las carpetas personales de los usuarios móviles se creen en el servidor y se montan automáticamente en los clientes. Los pasos a hacer son:
/home/movil *(rw,sync,no_root_squash,no_subtree_check)
Al igual que para LDAP tenemos muchas herramientas gráficas para configurar nuestro servidor NFS. Nosotros utilizaremos Webmin que ya tenemos instalado. Dentro de Red encontramos el elemento Exportaciones de NFS:
Desde aquí podemos modificar la configuración de los directorios exportados o exportado nuevos:
CUPS es el sistema de impresión común de Unix (Common Unix Printing System) y proporciona las tareas básicas de gestión de impresión y de colas de impresión. Está basado en el Internet Printing Protocolo (IPP).
El paquete a instalar (aunque posiblemente ya esté instalado en la mayoría de sistemas) es cups e instala un servicio con el mismo nombre. El registro se guarda en diferentes ficheros dentro del directorio /var/log/cups/.
Para su administración incluye un gestor web en el puerto 631. Por defecto cups está configurado para acceder a este gestor sólo desde el equipo local. Para poder acceder desde otros equipos (como tenemos que hacer nosotros porque en el servidor no tenemos entorno gráfico ni navegador) tenemos que cambiar la configuración en el fichero /etc/cups/cupsd.conf:
En la primera línea indica que podemos acceder desde cualquier equipo. Por defecto pone localhost y nosotros podríamos también poner una IP o una red (por ejemplo 192.168.100.*:631).
Las otras 2 líneas modificadas habilitan el acceso al servidor y en las páginas de administración del mismo. Aquí también podemos permitir acceder desde una IP concreta, una red o desde cualquier cliente (cómo en nuestro caso).
Ahora ya podemos acceder a CUPS desde nuestro cliente:
Desde esta aplicación podemos administrar y mantener el servicio de impresión. Algunas tareas requieren validarse con un usuario que tenga permisos para administrar el servicio. Por defecto los usuarios que pueden administrar el servicio de impresión tiene que pertenecer al grupo lpadmin.
En la pestaña “Administración” podemos acceder a todas las operaciones de gestión, por ejemplo:
En la parte derecha de la ventana de administración podemos encontrar algunas opciones importantes:
Por último, desde esta ventana se puede configurar algunos aspectos del funcionamiento de CUPS como permitir compartir impresoras, mostrar impresoras compartidas, u otra opción bastante interesante como permitir administración remota.
Para que CUPS funcione como servidor de impresión tiene que marcarse la opción “Compartir impresoras conectadas a este sistema”.
Para añadir una nueva impresora el asistente va preguntando todo lo necesario. Lo primero que nos pregunta es como se conecta la impresora a nuestro servidor. Lo más habitual es que la impresora se detecte automáticamente, y ya tendremos las opciones correctas marcadas por defecto. Si esto no pasa (es lo que nos pasará a nosotros porque estamos instalando una impresora inventada) tendremos que contestar como se conectará nuestra impresora:
Respecto a las clases son el equivalente a los grupo de impresoras de Windows. La principal diferencia es que aquí tenemos que instalar cada impresora del grupo por separado (pueden ser de diferente marca al contrario que en Windows) y después creamos la clase.
Para obtener más información de como instalar y configurar las impresoras podemos consultar la página oficial del CUPS en http://www.cups.org
El uso de CUPS en el servidor facilita la configuración de impresoras en los equipos cliente puesto que prácticamente no se requiere ninguna tarea de configuración.
Por defecto, la mayor parte de las distribuciones GNU/Linux de escritorio incluyen CUPS como gestor de impresión, de forma que cuando detectan un servidor de impresión a la red con impresoras compartidas, estas se hacen accesibles inmediatamente en los equipos clientes.
Tampoco tenemos que instalar ningún driver puesto que estos están centralizados en el servidor de impresión.
Además del acceso web a la configuración y administración de CUPS, también han aplicaciones integradas en los diferentes escritorios (por ejemplo system-config-printer en el escritorio GNOME o KDE Print):
Obra publicada con [Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0](http://creativecommons.org licenses by-nc-sa/4.0/)