Recursos compartidos de red

De XTech Capacitacion

Tabla de contenidos

SAMBA

El protocolo SMB es usado por Microsoft Windows para compartir discos e impresoras. Usando el paquete de herramientas Samba, creado por Andrew Tridgell, las máquinas UNIX (incluyendo Linux) pueden compartir discos e impresoras con servidores Windows.

Hay cuatro cosas que uno puede hacer con Samba:

  1. Compartir una unidad de Linux con máquinas Windows.
  2. Compartir una unidad de Windows con máquinas Linux.
  3. Compartir una impresora de Linux con máquinas Windows.
  4. Compartir una impresora de Windows con máquinas Linux.

Todos estos puntos están cubiertos en este documento.

Instalación

Se requieren los dos demonios siguientes para el paquete Samba.

Se suelen instalar en /usr/sbin y se pueden ejecutar tanto desde los scripts de arranque del sistema como desde inetd.

  • smbd (El demonio de SMB)
  • nmbd (Provee un nameserver de NetBIOS para soporte de clientes)

También se instalan en /usr/bin los siguientes ejecutables de Samba. Aunque esta ubicación, como de costumbre, es opcional.

  • smbclient (Un cliente SMB para maquinas UNIX)
  • smbprint (Un script para imprimir a una impresora en un servidor SMB)
  • smbprint.sysv (Como el de encima, pero para máquinas UNIX SVR4)
  • smbstatus (Lista de las conexiones SMB en marcha en el servidor local)
  • smbrun (Un script 'cola' para facilitar la ejecución de aplicaciones en servidores )

Por si quiere compilar Samba desde el código fuente es bueno recordar la ubicación y nombre de todo:

Los demonios en /usr/bin
Los ejecutables en /usr/bin
Las páginas del man en /usr/local/man
El archivo de configuración: /etc/smb.conf
El archivo de registro: /var/log/samba-log.%m (dónde %m corresponde al nombre de la máquina)
El archivo de bloqueo: /var/lock/samba

Como siempre, la recomendación es que se use el paquete precompilado de la distribución que estemos utilizando con los sistemas de resolución de dependencias

Ejecutando los demonios

Los dos demonios de SMB son /usr/bin/smbd y /usr/sbin/nmbd.

Puedes ejecutar los demonios de Samba desde inetd o como procesos independientes . Si estás configurando un servidor de ficheros permanente, deberían ejecutarse desde inetd para que sean reejecutados si 'mueren'. Si solo quieres usar los servicios SMB de vez en cuando o como ayuda a la administración del sistema, puedes ejecutarlos con un script en /etc/rc.d/init.d o incluso a mano cuando los necesites.

Para ejecutar los demonios desde inetd, pon las siguientes líneas en el archivo de configuración, /etc/inetd.conf:

   # Servicios SAMBA NetBIOS (para compartición de ficheros e impresoras
    en PC)
   netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
   netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

Entonces reejecuta inetd con el siguiente comando:

   kill -HUP 1

Para ejecutarlos desde los scripts de inicio del sistema, pon las siguientes líneas en /etc/rc.d/init.d/smb y hazle un enlace simbólico con los ficheros indicados en los comentarios:

   #!/bin/sh
   #
   # /etc/rc.d/init.d/smb - comienza y termina los servicios SMB.
   #
   # Se deben crear los siguientes ficheros como enlaces simbolicos a 
     este fichero:
   # symlinks: /etc/rc.d/rc1.d/K35smb  (Termina los servicios SMB al
     cerrar el sistema)
   #           /etc/rc.d/rc3.d/S91smb  (Comienza los servicios SMB en 
               modo multiusuario)
   #           /etc/rc.d/rc6.d/K35smb  (Termina los servicios SMB al 
               hacer un reboot)
   #
   # Libreria de funciones
   . /etc/rc.d/init.d/functions
   # Configuracion de red
   . /etc/sysconfig/network
   # Asegurarse que la red esta a punto
   [ ${NETWORKING} = "no" ] && exit 0
   # Comprobar como fuimos llamados
   case "$1" in
     empezar)
       echo -n "Poniendo en marcha los servicios SMB: "
       daemon smbd -D  
       daemon nmbd -D 
       echo
       touch /var/lock/subsys/smb
       ;;
     parar)
       echo -n "Terminando los servicios SMB: "
       killproc smbd
       killproc nmbd
       rm -f /var/lock/subsys/smb
       echo ""
       ;;
     *)
       echo "Modo de uso: smb {empezar|parar}"
       exit 1
   esac

Configurando /etc/samba/smb.conf

La primera etiqueta o más bien la mas importante es la etiqueta [global]. Cualquier texto que esté encerrado entre corchetes, significa el inicio de una estructura de configuraciones, y a su vez implica el fin de la estructura de configuraciones anterior.

La Etiqueta global, permite definir las opciones fijas que tiene para todas las máquinas por defecto en la red. Se compone de distintas etiquetas de menu. Estas son las más importantes:

workgroup = GRUPO-DE-TRABAJO
Esta opción nos presenta ante el servidor, para estar en un grupo dentro de la red.
netbios name = Mi-Linux
Esta etiqueta nos presentara como la computadora con el nombre Mi-Linux (es solo un ejemplo).
netbios aliases = Mi-Linux-2
Esta opción, nos presenta en la red con otro nombre además del que le hemos dado con la anterior, es decir en este caso estaremos como si fueramos 2 máquinas de la red distintas. Ovbiamente, esto no es obligatorio.
server string = Mi computador con Linux
Como lo dice su nombre, esta opción le dará una breve descripción a nuestra Máquina al presentarse dentro de la Red.
interfaces = eth0
La interfaz mediante la cual nos conectamos a la red, puede ser eth0 eth1, eth2... ppp0, etc.
encrypt passwords = No
Esta opción define si las contraseñas que envian las máquinas con Windows, para autentificarse en nuestro servidor Linux, deben ser encriptadas con los métodos de encriptación de Linux. Es recomendable dejar esta opción como no, si las máquinas están con Windows, pues la manera que tiene Windows, de encriptar las claves de los usuarios, no es la misma que la de Linux.
hosts allow = 192.168.0.0
nos permite definir a la red que tendrá acceso a nuestros directorios compartidos.En este caso definimos para

que los usuarios que provengan de cualquier dirección que empiece con 192.168.0, tenga acceso.

host deny = 192.168.0.33
Al cotrario de la opción anterior, ésta permite definir usuarios que quedan fuera de nuestro sistema compartido.
domain logons = Yes
Esta opción permite, en conjunto con las siguientes, a ser servidor de Dominio dentro de la red, es decir, los usuarios se identificarán en la máquina de nosotros y no en la máquina de cada uno. Si esta opción esta habilitada, entonces la opción domain masters, se activara por defecto.
log file = /var/log/samba.%m
Ubicación donde quedarán los logs, en este caso la extensión sera acompañada de la máquina desde la cual se hizo la conección.
max log size = 50
Tamaño máximo para los archivos de logs.

Existen muchas otras opciones, que no son relevantes dentro de la configuración a primer nivel, pero si son importantes para las configuraciones mas específicas y dedicadas.

La segunda sección consta de los directorios compartidos. Al igual que la etiqueta global, cada recurso compartido, debe estar encerrado por corchetes. pongamos un ejemplo básico y simple:

[homes]
   comment = Directorios de Usuarios
   read only = No
   browseable = No

Este recurso compartido, que es muy recomendable, crea el recurso del direcotio home del usuario que se esta conectando. Es decir, cuando el cliente se conecte (Supongamos usuario: "Invitado"), este verá el recurso compartido "Invitado" y no "Home".

Las opciones read-only = No hacen que el directorio tenga acceso de tanto escritura como de lectura para el usuario dueño del Recurso. La opción Browseable = No, hace imposible que el usuario tenga acceso o visión a los recursos compartidos del resto de los usuarios. La linea comment, hará de Información acerca del recurso compartido.

Este último recurso compartido, es específico sobre los directorios de usuario, Nosotros podemos incluir una variedad de recursos, asignados a la ruta que nosotros queramos.

Tip: no darle acceso a nadie a /proc y /dev. Creo que esta de más explicarlo.

Creemos otro recuros:

[Cdrom]
  comment = Unidad de Cdrom
  path = /mnt/cdrom
  users = JoTe Invitado Scrub Daniela
  writeable = yes    hide dot files = yes

La línea Path especifica la ruta donde se encuentra el recurso a compartir.

Por otra parte, la línea users, le permitirá el acceso a los usuarios mencionados en la misma.

La línea writeable, le da la opción de que los usuarios puedan escribir dentro de ese recurso.

La opción hide dot files, es muy recomendable para los usuarios inexpertos, o que desconocen el sistema de archivos de linux, pues en Linux los archivos "ocultos" comienzan con un punto al incio.

La opción guest ok nos permite que usuarios no reconocidos en nuestro sistema, tengan acceso al recurso compartido. Es decir, no le solicitará una clave para aceder al recurso.

Estas son algunas de las opciones que permiten el acceso a nuestros recursos compartidos. La tercera sección es igual de simple que la anterior, y corresponde a la impresora [Printers], puede tener las mismas opciones pero además debe tener la opción: printeable = yes y la opción Browseable = no. La ruta por defecto de esta es path = /var/spool/samba.

Si quieres conocer todas las opciones que tiene samba, puedes ver la página man de ella (man smbd.conf).

Ahora que tienes creada la configuración de samba, debes ver si estan acivados en /etc/inetd:

netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

La última opción es la creación de los usuarios. El usuario debe existir en la máquina como tal, despues de verificado, generamos el usuario para samba con el comando smbpasswd -a user.

La opcion -a crea al usuario dentro de los usuarios de samba, asi que se usa solo la primera vez.

Tip: crea usuarios solo en minúsculas, los usuarios con mayúsculas suelen tener problemas, pues Windows no distingue entre ambas.

Para montar un recurso compartido desde el Linux, podemos hacerlo con

mount -t smbfs \\host\recurso /path/to/recurso

Es recomendable agregar la máquina al /etc/hosts y llamar a la misma por su nombre y no por la ip, muchas veces se marean con los nombres mal asignados.

Para ver que recursos compartidos tiene una máquina, puedes usar el comando smbclient -L host Nos mostrara algo asi como lo siguiente:

Domain=[Mi-Grupo] OS=[Unix] Server=[Samba 2.2.0a]

       Sharename      Type      Comment
       ---------      ----      -------
       Mp3            Disk      Mp3 en Server
       MySQL          Disk      MySQL
       Cdrom          Disk      Unidad de Cdrom
       Program        Disk      Programas
       IPC$           IPC       IPC Service (Servidor Linux)
       ADMIN$         Disk      IPC Service (Servidor Linux)
       lp             Printer

       Server               Comment
       ---------            -------
       Mi-Linux            Servidor Linux
       Mi-Linux-2          Servidor Linux

       Workgroup            Master
       ---------            -------
       Mi-Grupo            Mi-Linux

Compartiendo Una Unidad Linux Con Máquinas Windows

Como se muestra en el fichero smb.conf anterior, compartir una unidad Linux con usuarios Windows es fácil. De todas maneras, como todo lo demás con Samba, puedes tener las cosas MUY controladas. Aquí tienes unos pocos ejemplos:

Para compartir un directorio con todo el mundo, crea una copia de la sección [tmp] añadiendo algo como esto al smb.conf:

[public]
  comment = Cosas publicas
  path = /home/public
  public = yes
  writable = yes
  printable = yes


Para que este directorio lo pueda leer todo el mundo, pero que sólo lo puedan cambiar gente del grupo 'laborales', modifica la entrada de esta manera:

[public]
  comment = Cosas publicas
  path = /home/public
  public = yes
  writable = yes
  printable = no
  write list = @laborales


Para aprender otros truquillos con que jugar con las unidades compartidas, mira la documentación de Samba o las páginas del man.


Compartiendo Una Unidad Windows Con Máquinas Linux

Se incluye un programa cliente de SMB para máquinas UNIX con la distribución de Samba. Provee un interfaz estilo ftp para la línea de comandos. Puedes usar esta utilidad para transferir ficheros entre un 'servidor' Windows y un cliente unix.

Para ver qué recursos están disponibles en un host dado, ejecuta:

   /usr/sbin/smbclient -L host

donde 'host' es el nombre de la máquina que quieres 'ver'. Esto devolverá un lista de nombres de 'servicios' --esto es, nombres de unidades o impresoras que puede compartir contigo--. A menos que el servidor SMB no tenga la seguridad configurada, te preguntará por una clave. Dale la clave de la cuenta de 'invitados' o de tu cuenta personal en esa máquina.

Por ejemplo:

   smbclient -L zimmerman

La salida de este comando debería ser algo parecido a esto:

Server time is Sat Aug 10 15:58:27 1996
Timezone is UTC+10.0
Password: 
Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]
Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[]
       Sharename      Type      Comment
       ---------      ----      -------
       ADMIN$         Disk      Remote Admin
       public         Disk      Public 
       C$             Disk      Default share
       IPC$           IPC       Remote IPC
       OReilly        Printer   OReilly
       print$         Disk      Printer Drivers


This machine has a browse list:
       Server               Comment
       ---------            -------
       HOPPER               Samba 1.9.15p8
       KERNIGAN             Samba 1.9.15p8
       LOVELACE             Samba 1.9.15p8
       RITCHIE              Samba 1.9.15p8
       ZIMMERMAN            

La lista muestra otros servidores SMB con recursos para compartir con la red.

Para usar el cliente, ejecuta:

   /usr/sbin/smbclient servicio <password>

donde 'servicio' es una máquina y un servicio. Por ejemplo, si estás intentando entrar en un directorio que ha sido compartido como 'public' en una máquina llamada zimmerman, el servicio debería llamarse \\zimmerman\public. De todas maneras, debido a restricciones del shell, necesitarás poner las barras invertidas con secuencias de escape, por lo que al final saldrá algo parecido a esto:

   /usr/sbin/smbclient \\\\zimmerman\\public miclave

donde 'miclave' es una cadena literal con tu password.

Entonces te aparecerá el 'prompt' del smbclient:

Server time is Sat Aug 10 15:58:44 1996
Timezone is UTC+10.0
Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]
smb: \> 
Escribe 'h' para obtener una ayuda de como usar el cliente:
smb: \> h
ls             dir            lcd            cd             pwd            
get            mget           put            mput           rename         
more           mask           del            rm             mkdir          
md             rmdir          rd             prompt         recurse        
translate      lowercase      print          printmode      queue          
cancel         stat           quit           q              exit           
newer          archive        tar            blocksize      tarmode        
setmode        help           ?              !              
smb: \> 

Si sabes usar el ftp, no deberías necesitar las páginas del man del smbclient.

Compartiendo Una Impresora Linux Con Máquinas Windows

Para compartir una impresora Linux con máquinas Windows, necesitas asegurarte de que la impresora está preparada para trabajar bajo Linux. Si puedes imprimir desde Linux, preparar una 'compartición' SMB de la impresora es automático.

Mírate el COMO Imprimir (Printing HOWTO) para poner a punto la impresora con Linux.

Como el autor usa una impresora conectada a una máquina Windows NT, esta sección no debería ser vista como algo definitivo, sino como mera sugerencia. Cualquiera que tenga detalles que compartir con el autor, por favor, que los mande a dwood@plugged.net.au para que esta sección pueda ser completada.

Añade la configuración de la impresora a tu smb.conf:

[global]
  printing = bsd
  printcap name = /etc/printcap
  load printers = yes
  log file = /var/log/samba-log.%m
  lock directory = /var/lock/samba
[printers]
  comment = Todas las impresoras
  security = server
  path = /var/spool/lpd/lp
  browseable = no
  printable = yes
  public = yes
  writable = no
  create mode = 0700
[ljet]
  security = server
  path = /var/spool/lpd/lp
  printer name = lp
  writable = yes
  public = yes
  printable = yes
  print command = lpr -r -h -P %p %s


¡Asegúrate de que el 'path' de la impresora (en este caso bajo [ljet]) se corresponde al directorio de 'spool' en /etc/printcap!

NOTA: Hay algunos problemas compartiendo impresoras conectadas a UNIX con máquinas Windows NT usando Samba. Un problema es que NT 'vea' la impresora compartida correctamente. Para conseguirlo, mírate las notas en la distribución de Samba en el fichero docs/WinNT.txt. El otro va con problemas con las claves. Mírate los comentarios en ese mismo fichero para conseguir una molesta ganancia de conocimientos y fallos (jejeje) para arreglar el problema.

Compartiendo Una Impresora Windows Con Máquinas Linux

Para compartir una impresora en una máquina Windows, debes hacer lo siguiente:

a) Debes tener las entradas adecuadas en /etc/printcap y deben corresponderse a la estructura de directorios local (el directorio de spool, etc)

b) Debes tener el script /usr/bin/smbprint. Viene con las fuentes de Samba, pero no con la distribución de ejecutables del Samba. Más abajo comentamos una copia ligeramente modificada.

c) Si quieres convertir ficheros ASCII a PostScript, debes tener el 'nenscript' o su equivalente. nenscript es un conversor de PostScript y habitualmente está instalado en /usr/bin.

d) Puedes desear que las impresiones de Samba sean más sencillas teniendo un front end fácil de usar. Más abajo tienes un sencillo script en perl para manejar ASCII, PostScript o PostScript generado.

La entrada para /etc/printcap que tenemos debajo es para una impresora HP 5MP en un host Windows NT. Las entradas son las siguientes:


       cm - comentario
       lp - nombre del dispositivo a abrir para salida
       sd - el directorio de spool de la impresora (en la máquina local)
       af - el fichero de cuentas
       mx - el tamano maximo del fichero (cero es ilimitado)
       if - nombre del fichero de entrada (script)


Para más información, lee el COMO Imprimir (Printing HOWTO) o la página del man de printcap.

# /etc/printcap
#
# //zimmerman/oreilly via smbprint
#
lp:\
       :cm=HP 5MP PostScript OReilly en zimmerman:\
       :lp=/dev/lp1:\
       :sd=/var/spool/lpd/lp:\
       :af=/var/spool/lpd/lp/acct:\
       :mx#0:\
       :if=/usr/bin/smbprint:


Asegúrate de que los directorios de spool y cuentas existe y se puede escribir en ellos. Asegura también que la línea 'if' tiene el path adecuado para el script smbprint (que damos debajo) y que apunta al dispositivo adecuado. (el fichero /dev especial).

Lo siguiente es el propio script smbprint. Normalmente está en /usr/bin y es atribuible a Andrew Tridgell, la persona que creó el Samba (que yo sepa). Viene con la distribución de las fuentes del Samba, pero está ausente de algunas distribuciones de ejecutables, por lo que lo he recreado aquí.

Te podría interesar mirarlo con cuidado. Hay algunas pequeñas alteraciones que han demostrado ser útiles.

comandos útiles

Para ver volúmenes compartidos de una máquina en concreto:

smbclient -I ip.de.la.maquina -L nombre_netbios

Para montar un volumen compatido:

smbmount //maquina/volumen /dir_montaje -I ip_máquina -U usuario -P contraseña -c nombre_linux_sin_dominio


NFS : Network File System

NFS, acrónimo de Network File System, es un popular protocolo utilizado para compartir volúmenes (unidades o particiones de disco) entre máquinas, dentro de una red, de manera transparente. Más comúnmente utilizado entre sistemas basados sobre UNIX®. Es útil y fácil de utilizar, sin embargo, no en vano, también es apodado cariñosamente como "No File Security".

NFS no utiliza un sistema de contraseñas como el que tiene SAMBA, solo una lista de control de acceso determinada por direcciones IP o nombres. Es por esto que es importante que el administrador de la red local entienda que un servidor NFS puede ser un verdadero e inmenso agujero de seguridad, si este no es configurado apropiadamente e implementado detrás de un contrafuegos.

Solo es recomendable utilizar NFS dentro de una red local detrás de un contrafuegos que permita el accesos solo a las máquinas que integren la red local, nunca para compartir sistemas de archivos a través de Internet. Al no contar con un sistema de autenticación por contraseñas, es un servicio susceptible del ataque de algún cracker. SAMBA es un mucho mejor y más seguro como protocolo para compartir sistemas de archivos.

Procedimientos.

Teniendo en cuenta los aspectos de seguridad mencionados, es importante que siga los procedimientos descritos a continuación al pie de la letra. Y que posteriormente se comprometa también a consultar al detalle la documentación incluida en el paquete nfs-utils, ya que éste le proporcionará información adicional y completa sobre aspectos avanzados de configuración y utilización.

Configurando el servidor NFS.

Se requiere tener instalados nfs-utils y portmap.

En caso de que falte alguno de estos paquetes, inserte el CD de instalación en la unidad correspondiente, o utilice la instalacion de paquetes correspondiente a su distribucion

Cabe mencionar que lo mejor será siempre utilizar la versiones de nfs-utils y portmap más actuales, ya que estas tendrán corregidos los bugs conocidos hasta el momento.

Configurando la seguridad.

Lo siguiente será configurar un nivel de seguridad para portmap. Esto se consigue editando los archivos /etc/hosts.allow y /etc/hosts.deny.

Debemos especificar que direcciones IP o rango de direcciones IP que pueden acceder a los servicios de portmap y quienes no pueden hacerlo. Podemos entonces determinar en /etc/hosts.allow como rango de direcciones IP permitidas los siguiente:

portmap:192.168.1.0/255.255.255.0

Esto corresponde a la dirección IP de la red completa y la máscara de la sub-red. Adicionalmente podemos especificar direcciones IP individuales sin necesidad de establecer una máscara. Esto es de utilidad cuando se desea compartir volúmenes con otras máquinas en otras redes a través de Internet. Ejemplo:

portmap:192.168.1.0/255.255.255.0
portmap:192.168.20.25
portmap:192.168.30.2
portmap:216.200.152.96
portmap:148.240.28.171

Una vez determinado que direcciones IP pueden acceder a portmap, solo resta determinar quienes no pueden hacerlo. Evidentemente nos referimos al resto del mundo, y esto se hace agregando la siguiente línea del archivo /etc/hosts.deny:

portmap:ALL

Es importante destacar que la línea anterior es INDISPENSABLE y NECESARIA si quiere tener un nivel de seguridad decente. De manera predeterminada las versiones más recientes de nfs-utils no permitirán iniciar el servicio si esta línea no se encuentra presente en /etc/hosts.deny.

Una vez configurado portmap, debe reiniciarse el servicio:

/sbin/service portmap restart

Si tiene un DNS, hay que dar de alta las direcciones IP asociadas a un nombre o bien edite /etc/hosts y agregue las direcciones IP asociadas con un nombre. Esto nos servirá como listas de control de accesos. Ejemplo del archivo /etc/hosts:

127.0.0.1       localhost.localdomain   localhost
192.168.1.254   servidor.mi-red-local.org servidor
192.168.1.2     algun_nombre.mi-red-local.org    algun_nombre
192.168.1.3     otro_nombre.mi-red-local.org     otro_nombre
192.168.1.4     otro_nombre_mas.mi-red-local.org otro_nombre_mas
192.168.1.5     como_se_llame.mi-red-local.org    como_se_llame
192.168.1.6     como_sea.mi-red-local.org como_sea
192.168.1.7     lo_que_sea.mi-red-local.org       lo_que_sea 

Compartir un volumen NFS.

Procederemos a determinar que directorio se va a compartir. Puede crear también uno nuevo:

mkdir -p /var/nfs/publico

Una vez hecho esto, necesitaremos establecer que directorios en el sistema serán compartidos con el resto de las máquinas de la red, o bien a que máquinas, de acuerdo al DNS o /etc/hosts se permitirá el accesos. Esto deberemos agregarlo en /etc/exports determinando con que máquinas y en que modo lo haremos.

Se puede especificar una dirección IP o bien nombre de alguna máquina, o bien un patrón común con comodín para definir que máquinas pueden acceder. De tal modo podemos utilizar el siguiente ejemplo (la separación de espacios se hace con un tabulador):

/var/nfs/publico	*.mi-red-local.org(ro,sync)

En el ejemplo anterior se esta definiendo que se compartirá /var/nfs/publico/ a todas las máquinas cuyo nombre, de acuerdo al DNS o /etc/hosts, tiene como patrón común mi-red-local.org, en modo de lectura.

Se utilizó un asterisco (*) como comodín, seguido de un punto y el nombre del dominio. Esto permitirá que como_se_llame.mi-red-local.org, como_sea.mi-red-local.org, lo_que_sea.mi-red-local.org, etc., podrán acceder al volumen /var/nfs/publico/ en modo solo lectura. Si queremos que el accesos a este directorio sea en modo de lectura y escritura, cambiamos ro por rw:

/var/nfs/publico	*.mi-red-local.org(rw,sync)

Ya que se definieron los volúmenes a compartir, solo resta iniciar o reiniciar el servicio nfs. Utilice cualquiera (pero solo una) de las dos líneas dependiendo el caso:

/sbin/service nfs start
/sbin/service nfs restart

A fin de asegurarnos de que el servicio de nfs esté habilitado la siguiente vez que se encienda el equipo, debemos ejecutar lo siguiente:

/sbin/chkconfig --level 345 nfs on

El comando anterior hace que se habilite nfs en los niveles 3, 4 y 5.

Como medida de seguridad adicional, si tiene un contrafuegos implementado, cierre, para todo aquello que no sea parte de su red local, los puertos tcp y udp 2049, ya que estos son utilizados por NFS para escuchar peticiones.

Configurando las máquinas clientes

Para probar la configuración, es necesario que las máquinas clientes se encuentren definidas en el DNS o en el archivo /etc/hosts del servidor. Si no hay un DNS configurado en la red, deberán definirse los nombres y direcciones IP correspondientes en ése archivo de todas las máquinas que integran la red local.

Como root, en el equipo cliente, ejecute el siguiente comando para consultar los volúmenes exportados (-e) a través de NFS y a un servidor (IP) en particular:

showmount -e 192.168.1.254

Lo anterior mostrará una lista con los nombres y rutas exactas a utilizar. Ejemplo:

Export list for 192.168.1.254:/var/nfs/publico          192.168.1.0/24

A continuación creamos, como root, desde cualquier otra máquina de la red local un punto de montaje:

mkdir /mnt/servidornfs

Y para proceder a montar el volumen remoto, utilizaremos la siguiente línea de comando :

mount servidor.mi-red-local.org:/var/nfs/publico /mnt/servidornfs

Si por alguna razón en el DNS de la red local, o el fichero /etc/hosts de la máquina cliente, decidió no asociar el nombre de la máquina que usará como servidor NFS a su correspondiente dirección IP, puede especificar ésta en lugar del nombre. Ejemplo:

mount -t nfs 192.168.1.254:/var/nfs/publico /mnt/servidornfs

Podremos acceder desde ese momento a dicho volumen remoto, con solo cambiar al directorio local definido como punto de montaje, del mismo modo que se haría con cualquier otro directorio:

cd /mnt/servidornfs

Si queremos poder montar este volumen NFS con una simple línea de comando o bien haciendo doble clic en un icono sobre el escritorio, será necesario agregar la correspondiente línea en /etc/fstab. Ejemplo:

servidor.mi-red-local.org:/var/nfs/publico /mnt/servidornfs nfs
user,exec,dev,nosuid,rw 0 0

La línea anterior especifica que el directorio /var/nfs/publico/ de la máquina servidor.mi-red-local.org será montado en en directorio local /mnt/servidor/nfs, permitiéndole a los usuarios el poder montarlo, en modo de lectura y escritura.

Asumimos que el servidor siempre estará encendido porque si no lo está al momento de arrancar la máquina cliente, este se quedará esperando durante algunos minutos.

Icono para volumen NFS

Sea cual sea el administrador de archivos gráfico o de consola que utilice el cliente, a partir de este momento, podrá acceder a los archivos compartidos de forma transparente.

Instalación de GNU/Linux a través de un servidor NFS.

Este es quizás el uso más común para un volumen NFS. Permite compartir un volumen que contenga una copia del CD de instalación de alguna distribución y realizar inclusive instalaciones simultáneas en varios equipos. Tiene como ventaja el que la instalación puede resultar más rápida que si se hiciese con un CDROM, siendo que la tasa de trasferencia de archivos será determinada por el ancho de banda de la red local, y nos permitirá instalar GNU/Linux en máquinas que no tengas unidad de CDROM.

Una vez creado y configurado un volumen a compartir copiaremos todo el contenido del CD de instalación en éste:

cp -r /mnt/cdrom/* /var/nfs/publico/

En el directorio images del CD encontraremos varias imágenes para crear disquetes de arranque. Utilizaremos bootnet.img para crear el número de disquetes necesarios para cada máquina en la que realizaremos una instalación, y que nos permitirán acceder a la red. Inserte un disquete y ejecute lo siguiente:

cd /var/nfs/publico/images/
dd if=bootnet.img of=/dev/fd0 bs=1440k

Añada en /etc/hosts, o bien de de alta en el DNS, las direcciones IP, que serán utilizadas por las nuevas máquinas, asociadas a un nombre con el dominio que específico como regla de control de acceso en /etc/exports -es decir *.mi-red-local.org-. Para /etc/hosts, puede quedar algo así:

127.0.0.1       localhost.localdomain     localhost
192.168.1.254   servidor.mi-red-local.org     servidor
192.168.1.2     algun_nombre.mi-red-local.org    algun_nombre
192.168.1.3     otro_nombre.mi-red-local.org     otro_nombre
192.168.1.4     otro_nombre_mas.mi-red-local.org    otro_nombre_mas
192.168.1.5     como_se_llame.mi-red-local.org    como_se_llame
192.168.1.6     como_sea.mi-red-local.org      como_sea
192.168.1.7     lo_que_sea.mi-red-local.org       lo_que_sea
192.168.1.8	nueva_maquina.mi-red-local.org       nueva_maquina
192.168.1.9	otra_nueva_maquina.mi-red-local.org     otra_nueva_maquina

Utilice estos disquetes para arrancar en los equipos, ingrese una dirección IP y demás parámetros para esta máquina y cuando se le pregunte ingrese la dirección IP del servidor NFS y el directorio en éste donde se encuentra la copia del CD de instalación. El resto continuará como cualquier otra instalación.



Tips practicos

SAMBA

los siguientes ejemplos, son basados en la distribucion UBUNTU. puede que otras distribuciones tengan igual o similar los comandos..

  • para instalar los paquetes necesarios de samba:
# apt-get install samba smbfs


  • añadir/editar/eliminar usuarios de red
# smbpasswd -a usuario_del_sistema
# gedit /etc/samba/smbusers

Inserta la siguiente linea en el nuevo archivo:

usuario_del_sistema = "usuario de red"
  • ¿Cómo editar usuarios de red?
# smbpasswd -a usuario_del_sistema
  • ¿Cómo eliminar usuarios de red?
# smbpasswd -x usuario_del_sistema
  • convertir los usuarios del sistema en usuarios de red
cat /etc/passwd | /usr/sbin/mksmbpasswd > /etc/samba/smbpasswd

Esto solo crea los usuarios. Tendremos ahora que asignarles una contraseña con smbpasswd

  • Cómo compartir la carpeta home con solo permisos de lectura (Autenticación=Si)

Busca y activa la siguiente linea

security = user

Busca esta sección y Añade la siguiente linea debajo

 username map = /etc/samba/smbusers

Guarde el archivo editado y ejecute el siguiente comando:

# testparm
# /etc/init.d/samba restart
  • Cómo compartir la carpeta home con permisos de escritura/lectura (Autenticación=Si)

Busca esta sección

...
# By default, the home directories are exported read-only. Change next
# parameter to 'yes' if you want to be able to write to them.
writable = no
...

Substituya por las líneas siguientes

# By default, the home directories are exported read-only. Change next
# parameter to 'yes' if you want to be able to write to them.
writable = yes

Guarda el archivo editado.


  • Cómo compartir la carpeta de grupo con solo permisos de lectura (Autenticación=Si)
# mkdir /home/group
# chmod 777 /home/group/
# chmod +t /home/group/
# gedit /etc/samba/smb.conf
Busca esta sección
...
# This boolean controls whether PAM will be used for password changes
# when requested by an SMB client instead of the program listed in
# 'passwd program'. The default is 'no'.
;   pam password change = no
...

Añade la siguiente linea debajo

username map = /etc/samba/smbusers

Añade las siguientes líneas al final del archivo

[Group]
   comment = Group Folder
   path = /home/group
   public = yes
   writable = no
   valid users = your_system_username1 your_system_username2
   create mask = 0700
   directory mask = 0700
   force user = nobody
   force group = nogroup

Guarda el archivo editado.

  • Cómo compartir la carpeta de grupo con permisos de escritura/lectura (Autenticación=Si)
# sudo mkdir /home/group
# sudo chmod 777 /home/group/
# sudo chmod +t /home/group/
# sudo gedit /etc/samba/smb.conf

Añade la siguiente linea debajo

username map = /etc/samba/smbusers

Añade las siguientes líneas al final del fichero

[Group]
   comment = Group Folder
   path = /home/group
   public = yes
   writable = yes
   valid users = your_system_username1 your_system_username2
   create mask = 0700
   directory mask = 0700
   force user = nobody
   force group = nogroup

Guarda el archivo editado.

  • Cómo compartir una carpeta publica con solo permisos de lectura (Autenticación=Si)
# sudo mkdir /home/public
# sudo chmod 777 /home/public/
# sudo chmod +t /home/public/
# sudo gedit /etc/samba/smb.conf

Añade las siguientes líneas al final del archivo

[public]
   comment = Public Folder
   path = /home/public
   public = yes
   writable = no
   create mask = 0777
   directory mask = 0777
   force user = nobody
   force group = nogroup

Guarda el archivo editado.

  • Cómo compartir una carpeta publica con permisos de escritura/lectura (Autenticación=Si)?


Añade las siguientes líneas al final del fichero

[public]
   comment = Public Folder
   path = /home/public
   public = yes
   writable = yes
   create mask = 0777
   directory mask = 0777
   force user = nobody
   force group = nogroup

Guarda el archivo editado.

  • Cómo compartir una carpeta publica con solo permisos de lectura (Autenticación=No)
# mkdir /home/public
# chmod 777 /home/public/
# chmod +t /home/public/
# gedit /etc/samba/smb.conf

Busca esta linea

...
;   security = user
...

Sustituyela con la siguiente linea

security = share

Añade las siguientes líneas al final del fichero

[public]
   comment = Public Folder
   path = /home/public
   public = yes
   writable = no
   create mask = 0777
   directory mask = 0777
   force user = nobody
   force group = nogroup

Guarda el archivo editado.

  • Cómo compartir una carpeta publica con permisos de escritura/lectura (Autenticación=No)
Añade las siguientes líneas al final del fichero
[public]
   comment = Public Folder
   path = /home/public
   public = yes
   writable = yes
   create mask = 0777
   directory mask = 0777
   force user = nobody
   force group = nogroup

Guarda el archivo editado.

obtenido de: http://www.guia-ubuntu.org/breezy/doku.php?id=servidor:samba

NFS

Instalar nfs-common, nfs-kernel-server

Se asume la siguiente situación:
El directorio que se desea exportar es: 
**/publico/datos** en modo  lectura/escritura|

El directorio remoto exportado se desa montar en el equipo local 
**/home/usuario/datos**

  • Edita el archivo /etc/hosts.deny y Añade el las siguientes líneas.
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL


Guarda el archivo editado.

  • Edita el fichero /etc/hosts.allowy Añade el las siguientes líneas.
portmap: 192.168.X.
lockd: 192.168.X.
rquotad: 192.168.X.
mountd: 192.168.X.
statd: 192.168.X.

Sustituye X por lo que corresponda en tu red y guarda el archivo.

  • Edita el archivo /etc/default/portmap y Sustituye la línea
ARGS="-i 127.0.0.1"

por esta otra

#ARGS="-i 127.0.0.1"

Guarda el archivo editado.

  • Edita el archivo /etc/exports y Añade la siguiente línea.
/publico/datos   *(rw,async)

Guarda el archivo editado y Reinicia todos los demonios:

/etc/init.d/nfs-common restart
/etc/init.d/nfs-kernel-server restart
/etc/init.d/portmap restart


Con esto tenemos preparado el servidor vamos a la parte del cliente. Monta el archivo remoto exportado en tu sistema local.

    • El directorio local tiene que existir**
mount equipo_remoto:/publico/datos /home/usuario/datos


  • Si quieres que el sistema lo monte automáticamente al arrancar
gedit /etc/fstab
  • Añade la siguiente línea al final del archivo

equipo_remoto:/publico/datos /home/usuario/datos nfs defaults,auto

Bibliografía

http://www.guia-ubuntu.org/breezy/doku.php?id=trabajo_en_red

http://www.linuxchile.cl/docs.php?op=verVersion&doc=20&id=1

http://www.insflug.org/COMOs/Samba-Como/Samba-Como.html

http://www.linuxparatodos.net/linux/12-como-nfs.php

Herramientas personales