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:
- Compartir una unidad de Linux con máquinas Windows.
- Compartir una unidad de Windows con máquinas Linux.
- Compartir una impresora de Linux con máquinas Windows.
- 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
/procy/dev. Creo que esta de más explicarlo.
- Tip: no darle acceso a nadie a
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:
Si estamos en Red Hat o un derivado:
/sbin/chkconfig --level 345 nfs on
El comando anterior hace que se habilite nfs en los niveles 3, 4 y 5.
Si estamos en Debian o un derivado:
/usr/sbin/update-rc.d script_de_control_del_demonio defaults
O:
/usr/sbin/update-rc.d script_de_control_del_demonio start 20 2 3 stop 20 0 1 6
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
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

