28 diciembre 2007

NFS, compartir ficheros entre máquinas Linux

Tras entregar Microsoft las especificaciones del directorio activo al grupo de Samba y tal (no, no es una inocentada, sus dineros y sentencias europeas les ha costado) y como en el último artículo comenté algo sobre Samba para compartir archivos entre máquinas Linux y Windows, ahora vamos a comentar algo (poca cosa) de NFS, ese gran desconocido, para que la gente no se ponga a compartir cosas entre máquinas Linux con Samba por ser algo "que suena".

NFS son las siglas de "Network File System", o sistema de ficheros en red. Permite montar sistemas de ficheros remotos como si fueran locales. Si, Samba permite hacer esto, pero es que NFS lo lleva haciendo desde 1984, antes de que existiera Linux, y lo hace muy bien. Digamos que es como mínimo un 25% más rápido que Samba, que no es poco.

El problema de NFS es que las distribuciones de Linux "amigables" no facilitan el uso de NFS y sí de Samba. Si, por ejemplo, en Ubuntu vamos a compartir un archivo, veremos que nos da la opción de Samba o NFS, pero al compartir con el último no se comparte (exporta) nada todavía, porque NFS no está en marcha y ni siquiera está instalado, ni pide instalarlo como sí hace con Samba. Comprobamos con "rpcinfo -p" si está funcionando. Si hay líneas con nfs, está en marcha.

Vamos a poner las cosas en su sitio. NFS consiste en un servidor y clientes. Como no están instalados en Ubuntu (creo que tampoco en Debian) vamos al Synaptic y buscamos nfs-kernel-server y nfs-common (o nfs y salen ambos) o escribimos en una terminal:

sudo apt-get install nfs-kernel-server nfs-common

Nos instalará unas cuantas dependencias.
Tras esto ya puede funcionar. Si usamos el asistente que comentaba antes, el de compartir carpetas de Gnome, pondremos el nombre del equipo, la IP o la red que tendrán acceso a dicha carpeta. Este asistente lo que hace es escribir (y a veces mal) en el archivo /etc/exports, pero no hace más. O sea, que no reexporta y nos toca reiniciar el demonio a mano.
sudo /etc/init.d/nfs_kernel_server restart

Puede resultar cómodo en algún sentido el asistente, pero al final nos toca usar la línea de órdenes. Vamos a ver el /etc/exports rápidamente:
#directorio_que_se_exporta cliente1(opciones) cliente2(opciones)
/home/usuariodebian/compartido 192.168.0.20(rw,sync,no_root_squash)

En el archivo real hay varios ejemplos puestos como la primera linea anterior, como comentarios (con #). Lo que explico es de NFS hasta la versión 3, útil aunque tengamos la 4. La 4 tiene un refuerzo en seguridad, para evitar los falseos de IP y demás, así que la segunda columna cambiaría.

Veamos las columnas. La primera es el directorio que exportamos para que los clientes puedan acceder a él. En la segunda tenemos los que pueden acceder y de qué forma: IP de equipos, rangos, grupos de red, etc; para este ejemplo sólo puede acceder el cliente con IP 192.168.0.20 y entre paréntesis tenemos las opciones correspondientes al acceso que tendrá. Será acceso de lectura y escritura (rw-read write en inglés), aunque le podremos poner "ro" si no queremos que nadie modifique nada, sincronizará (aunque ya es así por defecto y no sería necesario ponerlo) la información modificada (la escribirá al disco) y por último, no permitirá acceso como root. Root en este ejemplo accedería como usuario anónimo, cosa recomendable. Al acceder a archivos exportados con NFS se usa el UID (el código identificador del usuario) y no el nombre, así que nuestro nombre de usuario se transformará allí en el que exista en dicha máquina con mismo UID, grupo (GID), etc, y en la nuestra al revés, aunque nuestro mismo usuario exista en ambas. Este problema se evita creando los usuarios en el mismo orden en todas las máquinas o usando NIS, pero eso es otra historia.

Vamos a acceder desde esa otra máquina. Debe estar instalado nfs-common. Creo que en Gnome no hay ningún tipo de utilidad gráfica, así que volvemos a la línea de órdenes. Comprobamos lo que hay exportado en la máquina anterior (que tiene IP 192.168.0.1):
sudo showmount -e 192.168.0.1

que nos contesta:
/home/usuariodebian/compartido 192.168.0.1

Montamos ese directorio exportado en nuestro sistema de ficheros:
sudo mount -t nfs 192.168.0.1:/home/usuariodebian/compartido /mnt/puntomontaje

El directorio /mnt/puntomontaje debe existir. Lo pongo en mnt porque es el punto clásico de montaje, pero lo podéis poner en un directorio personal perfectamente.

Como es algo montable, podemos ponerlo en /etc/fstab para que se monte siempre que arranquemos o para poder montarlo manualmente con un usuario normal sin "sudo". Podríamos por ejemplo centralizar los directorios de usuario compartiendo /home, al tiempo que centralizamos las cuentas de usuario con NIS, pero eso será otra historia.

20 diciembre 2007

Samba: Unix enredando con windows

La web de Samba dice: "Abriendo windows a un mundo más amplio". Pues eso: Samba es un conjunto de utilidades que permiten comunicarse con redes de ordenadores con Windows. Es una implementación libre del protocolo de red utilizado por Windows, el SMB. El protocolo SMB lo creó IBM y fue utilizado en sus inicios por multitud de fabricantes para compartir archivos entre ordenadores. Microsoft lo empezó a utilizar con el MSDOS y ya no se han despegado de él, haciéndole diversas modificaciones, incluyendo el cambio de nombre a CIFS en el 98. O sea, que se le llama SMB/CIFS. La última versión de SMB, la 2, lanzada con el último S.O. de Microsoft, parece ser una reimplementación completa del protocolo para que no les digan que sigue siendo de IBM, haciéndolo incompatible con el anterior. Éste también está soportado por samba.

Vamos a ver rápidamente qué cosillas podemos hacer con samba.
Lo básico es que si estamos en una red con un dominio de Windows (cualquier versión de sus servidores) o un grupo de trabajo, samba puede ser un miembro del dominio o del grupo. Podrá acceder a los archivos compartidos por otros y compartir archivos sin ningún problema, siempre que no nos despistemos con los permisos:
Supongamos que compartimos archivos con samba y no le ponemos "sólo lectura", que equivale a que les damos permiso de escritura; podríamos pensar que así cualquiera que acceda podrá hacer lo que quiera. No, hay que mirar que permisos Unix tienen esos archivos. Hay que tener en cuenta que no nos podemos saltar a la torera el funcionamiento de nuestro sistema de archivos (sea el que sea). Si los archivos compartidos tienen el acceso permitido en Unix sólo a su propietario y accedemos como otro usuario, no veremos nada, sea por la red o sea localmente. Si dichos archivos tienen en Unix permiso total para todos y lo compartimos como sólo lectura con samba, desde la red sólo podremos leerlo. Los permisos resultantes para los archivos compartidos siempre serán los más restrictivos.

Samba puede hacer muchas más cosas. Puede ser un controlador de dominio NT, permitiendo centralizar las cuentas de los usuarios y máquinas, lo que significa que los usuarios se validan ante samba, y pueden guardar sus datos y perfiles centralizadamente. No puede crear un directorio activo de windows 2000 hasta que no salga Samba 4, pero puede hacer todo lo demás. Para que sea casi como lo del directorio activo podemos instalar un servidor de directorio LDAP y un servidor de claves Kerberos, que es lo que usa aquel, si es que lo necesitamos, claro. Le faltarían algunos detalles (políticas), pero su elevado rendimiento y escalabilidad lo hace bastante más apto que windows en general.

Para configurar samba podemos modificar directamente el archivo /etc/samba/smb.conf o más fácil, usar la utilidad de configuración por web SWAT, incluida en los repositorios de todas las distribuciones. En ambos casos necesitamos tener claro qué queremos hacer, porque el asunto es de poner valores a los parámetros. Calma, que SWAT nos enlaza con la ayuda del archivo smb.conf (que podemos mirar también con man) para aclararnos los parámetros que no conozcamos. También tiene un pequeño asistente muy general, y gestión de compartidos, aunque el asunto de los compartidos ya lo integra Gnome (de forma más limitada). Desconozco lo que incluye KDE.
También se puede configurar con el módulo samba de webmin, utilidad web que permite configurar casi todo. En según que distribuciones hay asistentes propios (RedHat, Centos) que facilitan el asunto para casos generales, pero ocultan muchas opciones para casos más específicos que tendremos que ajustar directamente. Próximamente Ubuntu pretende facilitar el asunto. Espero que no olviden a NFS donde no hay windows, que hay quien usa samba entre máquinas linux.

04 diciembre 2007

Paz Padilla usa Ubuntu

He leído esta curiosidad no se donde, acabando finalmente en lo que incluyo abajo. El tema es que en el programa de radio de Ramón García estuvo Paz Padilla haciendo una especie de promoción de Ubuntu. No es que esta señora me caiga demasiado bien, pero dado que esto tiene su gracia, tenía que publicarlo. Hace un comentario sencillo cuyo resultado es una explicación bastante clara sobre el asunto de los virus.

Para que luego digan que Linux es sólo para expertos.