domingo, 9 de marzo de 2008

Compartir una carpeta con NFS en Ubuntu

NFS es un sistema de archivos distribuido para un entorno de red de área local. Posibilita que distintos sistemas conectados a una misma red accedan a ficheros remotos como si se tratara de locales. A continuación se detalla la configuración del cliente y del servidor.

Configuración en el servidor

Los paquetes necesarios para el funcionamiento del servidor son portmap, nfs-kernel-server y nfs-common. Para la descarga de los mismos ejecutaremos los siguientes comandos:

root@mi_equipo:~# aptitude install portmap

root@mi_equipo:~# aptitude install nfs-kernel-server

root@mi_equipo:~# aptitude install nfs-common

Para la configuración de un servidor de NFS se necesitan editar tres ficheros: /etc/exports, /etc/hosts.deny y /etc/hosts.allow.

/etc/exports
Contiene una linea por directorio a compartir. La estructura de dicha línea es:

directorio equipo1(opcion11,opcion12) equipo2(opcion21,opcion22)

donde:

directorio: Es el directorio a compartir.
equipox: Clientes que tendrán acceso al directorio compartido. Estos equipos se podrán indicar por su IP o dirección DNS(por ejemplo: mi_equipo.ral.com o 192.168.0.69). Recomiendo usar la IP.
optionxx: Son las opciones que nos permitirán tener acceso a esos directorios con determinados privilegios.

  • ro | rw : Con la opción ro el directorio será compartido de solo lectura. Esta opción está por defecto.y con la opción rw se permitirá tanto acceso de lectura como de escritura.
  • sync | async : sync es la opción recomendada, ya que se ha de respetar el protocolo NFS, es decir, no se responden a las peticiones antes de que los cambios realizados sean escritos al disco. Con la opción async se permite mejorar el rendimiento y agilizar el funcionamiento global, pero supone un riesgo de corrupción de archivos o del sistemas de ficheros en casos de caidas del servidor y/o errores de éste.
  • root_squash | no_root_squash | all_squash : root_squash indica que un cliente identificado como root tendrá acceso al directorio con privilegios de un usuario anónimo. Si seleccionamos la opción no_root_squash evitaremos esto, y si indicamos all_squash, entonces aplicaremos esto último a todos los usuarios, no sólo root.

Un ejempo de fichero /etc/exports es el siguiente:

/home/usuario/datos 192.168.1.0/24(ro,sync,root_squash)
/tmp 192.168.1.0/24(rw,sync,no_root_squash)

Con este fichero indicaremos que queremos compartir los directorios /home/usuario/datos y /tmp a los hosts de la red 192.168.1.0; /home/usuario/datos se podrá acceder como solo lectura, mientras que al directorio /tmp se tendrá acceso tanto de lectura como de escritura. Se respetará el protocolo NFS, ya que no se responderán a las peticiones que se hagan antes de que los cambios se hayan escrito en disco. Si un usuario root(en el cliente) accede al directorio /home/usuario/datos su privilegios son los mismos que el de un usuario anónimo; todo lo contrario ocurre con el directorio /tmp.

Los ficheros /etc/hosts.allow y /etc/hosts.deny tienen la siguiente estructura:

servicio: host [o red/mascara_subred], host [o red/mascara_subred]

servicio : Es el servicio que estará permitido o denegado para algunas IP’s, en nuestro caso serán portmap y rpc.nfsd.
host [o red/mascara_subred] : Indicará la IP del host de un posible cliente. También pueden indicarse redes con sus correspondientes mascaras de subred.

/etc/hosts.deny
En este fichero pondremos todas las restricciones posibles para hacer mas seguro el sistema. Para ello denegaremos el acceso a portmap, ya que si se deniega portmap, aunque permitas nfs, no se podrá compartir porque éste depende de portmap. Por lo que solo se tendrá acceso a portmap por aquellos equipos que estén definidos en el fichero /etc/hosts.allow. El fichero /etc/hosts.deny quedará:

portmap:ALL

/etc/hosts.allow
En este fichero debe indicar a quienes permitimos el acceso al servicio de nfs y portmap. Se pueden indicar hosts individuales o una red.

portmap:192.168.1.0/255.255.255.0
nfs:192.168.1.0/255.255.255.0

Una vez configurados los ficheros pasamos a arrancar el servicio portmap y rpc.nsfd:

root@mi_equipo:~# /etc/init.d/nfs-common restart
root@mi_equipo:~# /etc/init.d/nfs-kernel-server restart
root@mi_equipo:~# /etc/init.d/portmap restart

NOTA: Tanto el fichero /etc/hosts.deny como el /etc/hosts.allow no es necesario que tengan contenido alguna, pero se recomienda que sean configurados para la seguridad de los datos.

Configuración en el cliente

En el cliente instalaremos los siguientes paquetes:

root@cliente:~# aptitude install portmap

root@cliente:~# aptitude install nfs-common

Después montaremos el directorio exportado por el servidor, para ello ejecutaremos el siguiente comando:

cliente@cliente:~$ sudo mount -t nfs mi_equipo:/tmp /home/cliente/temp

Con el comando anterior montamos el directorio /tmp exportado por el host mi_equipo en el directorio /home/usuario1/temp que previamente habremos creado. A este comando se le puede pasar una serie de opciones, la estructura genérica con las opciones sería:

mount -t nfs -o opcion[:usuario] dir_remoto dir_local

Las opciones son ro, rw, root_squash, no_root_squash, entre otras.

Si queremos que el directorio remoto se monte al arranque del cliente deberemos añadir la siguiente línea al fichero /etc/fstab:

mi_equipo:/tmp /home/cliente/temp nfs defaults,rw 0 0

Esa línea indica que se monte en el directorio /home/cliente/temp el directorio remoto /tmp (el directorio que exporta el servidor que se ha puesto como ejemplo).

NOTA: El nombre de host mi_equipo tiene que poder ser resulto por el cliente (p.ej. mediante fichero hosts o DNS), sino hay que especificar en su lugar la ip.

Compartir una carpeta con Samba en Linux

Vamos a trabajar con un caso muy sencillo: queremos compartir una carpeta en modo lectura/escritura en la que pueda entrar todo el mundo sin que pida usuario o contraseña.

Lo primero que tenemos que instalar es el servidor Samba:

sudo apt-get install samba smbfs

Creamos la carpeta que vamos a compartir:

sudo mkdir /media/compartir

Cambiamos el propietario de la carpeta para que el usuario 'nobody' con el que configuraremos Samba pueda accedar sin restricciones a la carpeta:

sudo chown nobody compartir/

Hacemos una copia de seguridad del archivo de configuración de Samba:

sudo cp /etc/samba/smb.conf /etc/samba/smb.back

Editamos smb.conf:

sudo joe /etc/samba/smb.conf


#
# Archivo de configuración de Samba editado por Manolo
# He realizado una configuración simple
#
#======================= Global Settings =======================
[global]

# Fijamos nuestro grupo de trabajo. En este caso 'WORKGROUP'
workgroup = WORKGROUP

# Configuramos el nombre nuestro servidor en la red Samba
server string = Ubuntu-Server

####### Authentication #######
#Para no utilizar contraseña
security = share
# Asociamos la cuenta de invitado con el usuario 'nobody' de nuestro servidor
guest account = nobody

# Compartimos una carpeta
[compartir]
comment = Carpeta para compartir trabajos
#Permisos de escritura habilitados
writable = yes
path = /media/compartir
#Se permite el acceso al usuario 'invitado'
public = yes
#Sólo se permite el acceso al usuario 'invitado'
guest only = yes
browseable = yes


Para que los cambios se hagan efectivos hay que reiniciar el servicio de Samba:

sudo /etc/init.d/samba restart


martes, 4 de marzo de 2008

Características de los nombres NetBIOS

Las características de los nombres NetBIOS son las siguientes:

  • Los nombres NetBIOS son utilizados por los servicios que requieren NetBIOS. Windows 2003 Server, Windows 2000, y Windows XP utilizan nombres DNS para la mayoría de las funciones, pero tiene que existir un método de resolución de nombres NetBIOS en cualquier red con computadoras que estén ejecutando versiones anteriores de Windows o para aplicaciones que aún dependen de los nombres NetBIOS.
  • Un nombre NetBIOS es un alias que se asigna a un ordenador por un administrador para identificar un servidor NetBIOS sobre un host TCP / IP.
  • El nombre NetBIOS no tiene por qué coincidir con el nombre del host.
  • Los nombres NetBIOS no pueden comenzar con asterisco (*), y consisten sólo en caracteres alfanuméricos estándar (a-z, A-Z, 0-9) y los siguientes: ! @ # $ % ^ & ( ) - ' { } . ~
  • Aunque puedes usar el punto (.) en un nombre NetBIOS, no te lo recomendamos, debido a que esos nombres puede que no funcionen en las futuras versiones de NetBIOS sobre TCP/IP.
  • No se permiten espacios en nombres de NetBIOS a partir de Windows 2000.
  • No es una coincidencia que todos los nombres válidos DNS también sean válidos en NetBIOS. De hecho, el nombre DNS para un servidor Samba es frecuentemente reutilizado como su nombre NetBIOS. Por ejemplo, si tienes una máquina phoenix.ora.com , su nombre NetBIOS podría ser PHOENIX (seguido por 8 espacios en blanco).
  • Los nombres NetBIOS tienen 15 caracteres o menos de longitud, en comparación con los 255 caracteres o menos para los nombres de host de DNS. El nombre de host y el nombre NetBIOS, en un equipo que ejecute Windows Server 2003, se generan juntos. Si el nombre de la máquina es de más de 15 caracteres, el nombre NetBIOS estará formado por los primeros 15 caracteres del nombre de host. [En realidad son 16 caracteres: nombre(15) + sufijo(1) que identifica la funcionalidad del dispositivo registrado]
  • Los nombre NetBIOS deben ser exclusivos en una misma red.
  • Cuando se enciende el ordenador, diversos servicios (tales como el servicio del servidor o el servicio de la estación de trabajo) registran un único nombre NetBIOS basado en el nombre del equipo. El nombre registrado es un nombre NetBIOS de 15 caracteres más un decimosexto carácter (byte) que identifica de forma exclusiva el servicio del servidor.
  • Los nombres NetBIOS también son registrados por los grupos de ordenadores que proporcionan servicios de red. Por ejemplo, si Mickey.Disney.com es un controlador de dominio, registrará el nombre NetBIOS, Mickey, y procederá al registro de los nombres que identifican sus funciones como controlador de dominio en el dominio de Disney al mismo tiempo. Esto permite a los clientes buscar todos los hosts de NetBIOS que proporcionan servicios de controlador de dominio en el dominio Disney, sin que el cliente conozca los nombres reales de los controladores de dominio.
  • Un nombre NetBIOS simplifica la forma en que un usuario identifica a un host TCP / IP, ya que son más fáciles de recordar que las direcciones IP.
  • Un nombres NetBIOS se pueden resolver si el nombre y la dirección IP se encuentran en la base de datos de un servidor WINS o en el archivo LMHOSTS. Un broadcast puede también resolver un nombre NetBIOS.
  • La utilidad nbtstat muestra los nombres NetBIOS que utilizan los servicios de NetBIOS en el equipo.