TL; DR
Una guía mucho más corta está disponible en la Guía de Ubuntu Server si necesita más información, lea a continuación.
Introducción
NFS (Network File System) le permite ‘compartir’ un directorio ubicado en una computadora en red con otras computadoras / dispositivos en esa red. El equipo donde se encuentra el directorio se llama servidor y los equipos o dispositivos que se conectan a ese servidor se llaman clientes. Los clientes usualmente ‘montan’ el directorio compartido para hacerlo parte de su propia estructura de directorios.,
NFS es perfecto para crear NAS (almacenamiento conectado en red) en entornos Linux/Unix. Es un protocolo nativo de Linux/Unix a diferencia de Samba que utiliza el protocolo SMB desarrollado por Microsoft. El sistema operativo Apple tiene un buen soporte para NFS. Windows 7 tiene cierto soporte para NFS.
NFS es quizás mejor para directorios montados en red más ‘permanentes’, como los directorios /home o los recursos compartidos a los que se accede regularmente. Si desea un recurso compartido de red al que los usuarios invitados puedan conectarse fácilmente, Samba es más adecuado., Esto se debe a que las herramientas existen más fácilmente en los sistemas operativos antiguos y propietarios para montar y separar temporalmente de los recursos compartidos de Samba.
Ubuntu antes de implementar NFS, debe estar familiarizado con:
- Permisos de archivos y directorios de Linux
- montaje y Desmontaje (Desmontaje) de sistemas de archivos
Este Cómo hace que Ubuntu server NFSv4 esté listo.
inicio rápido de NFS
siempre que entienda lo que está haciendo, use este breve recorrido para configurar un servidor NFSv4 en Ubuntu (sin seguridad de autenticación). Luego monte el recurso compartido en un cliente Ubuntu., Ha sido probado en Ubuntu 14.04.
servidor NFS
para comprobar que el servidor NFS no está instalado, puede hacerlo…
-
$ dpkg -l | grep nfs-kernel-server
Instalar los paquetes necesarios…
-
# apt-get install nfs-kernel-server
para facilitar el mantenimiento aislaremos todas las exportaciones NFS en un solo directorio, donde se montarán los directorios reales con la opción bind bind.
-
digamos que queremos exportar los directorios personales de nuestros usuarios en/home / users., Primero creamos el sistema de archivos de exportación:
# mkdir -p /export/users
es importante que / export y/export / users tengan 777 permisos ya que accederemos al recurso compartido NFS desde el cliente sin autenticación LDAP/NIS. Esto no se aplicará si se usa autenticación (ver más abajo)., Ahora Monte El Directorio de usuarios reales con:
# mount --bind /home/users /export/users
para salvarnos de volver a escribir esto después de cada reinicio agregamos la siguiente línea
A /etc/fstab
/home/users /export/users none bind 0 0
-
La única opción importante en /etc/default/NFS-kernel-Server por ahora es need_svcgssd. Está configurado en» no » de forma predeterminada, lo cual está bien, porque esta vez no estamos activando la seguridad NFSv4.
para que los nombres de ID se asignen automáticamente, tanto el cliente como el servidor requieren el /etc/idmapd.,archivo conf para tener el mismo contenido con los nombres de dominio correctos. Además, este archivo debe tener las siguientes líneas en la sección de asignación:
-
Nobody-User = nobodyNobody-Group = nogroup
Sin embargo, el cliente puede tener diferentes requisitos para el Nobody-User y Nobody-Group. Por ejemplo, en las variantes de RedHat, es nfsnobody para ambos. cat / etc /passwd y cat/etc / group deben mostrar las cuentas «nadie».
de esta manera, el servidor y el cliente no necesitan que los usuarios compartan el mismo UID/GUID.,
para aquellos que usan autenticación basada en LDAP, agregue las siguientes líneas al idmapd de su cliente.conf:
Method = nsswitch
Esto hará que idmapd saber mirar nsswitch.conf para determinar dónde debe buscar información de credenciales (y si ya tiene la autenticación LDAP funcionando, nsswitch no debería requerir más explicaciones).
para exportar nuestros directorios a una red local 192.168.1.0 /24 agregamos las siguientes dos líneas a/etc/exports
Portmap Lockdown
opcional
agregue la siguiente línea a/etc / hosts.,deny:
rpcbind mountd nfsd statd lockd rquotad : ALL
bloqueando primero todos los clientes, solo los clientes en/etc / hosts.permitir a continuación se le permitirá acceder al servidor.
Ahora agregue la siguiente línea a/etc / hosts.allow:
rpcbind mountd nfsd statd lockd rquotad : list of IP addresses
donde está la cadena «lista de direcciones IP», debe hacer una lista de direcciones IP que consiste en el servidor y todos los clientes. Estas tienen que ser direcciones IP debido a una limitación en portmap (no le gustan los nombres de host). Tenga en cuenta que si tiene NIS configurado, simplemente agregue estos a la misma línea.,
Nota: Asegúrese de que la lista de direcciones IP autorizadas incluya la dirección localhost (127.0.0.1) ya que los scripts de inicio en versiones recientes de Ubuntu usan el comando rpcinfo para descubrir el soporte de NFSv3, y esto se deshabilitará si localhost no puede conectarse.,unt el árbol de exportación completo con un comando:
También podemos montar un subárbol exportado con:
-
# mount -t nfs -o proto=tcp,port=2049 <nfs-server-IP>:/users /home/users
para salvarnos de volver a escribir esto después de cada reinicio agregamos la siguiente línea a /etc/fstab:
-
<nfs-server-IP>:/ /mnt nfs auto 0 0
Si después del montaje, la entrada en /proc/mounts aparece como <NFS-server-IP>:// (con dos barras las barras en /etc/fstab, o de lo contrario umount podría quejarse de que no puede encontrar el montaje.,
la opción auto se monta al iniciar. Sin embargo, esto no funcionará si su cliente utiliza una conexión wifi administrada a nivel de usuario (después del inicio de sesión), porque la red no estará disponible en el momento del arranque. En Ubuntu 12.04 LTS y posteriores, las conexiones wifi se administran a nivel del sistema de forma predeterminada, por lo que el montaje automático de los recursos compartidos NFS en el momento del arranque debería funcionar bien.
Ubuntu Server no viene con ningún init.D / netfs u otros scripts para hacer esto por usted.
bloqueo de Portmap
opcional
agregue la siguiente línea a/etc / hosts.,deny:
rpcbind : ALL
bloqueando primero todos los clientes, solo los clientes en/etc / hosts.permitir a continuación se le permitirá acceder al servidor.
Ahora agregue la siguiente línea a/etc / hosts.permitir:
rpcbind : NFS server IP address
donde «dirección IP del servidor NFS» es la dirección IP del servidor. ¡Esto debe ser numérico! Así es como funciona portmap.
servidor NFS
configuración de preinstalación
ninguno de los siguientes pasos de preinstalación son estrictamente necesarios.
Permisos de usuario
los permisos de usuario de NFS se basan en el ID de usuario (UID)., Los UID de cualquier usuario en el cliente deben coincidir con los del servidor para que los usuarios tengan acceso. Las formas típicas de hacer esto son:
- sincronización manual de archivos de contraseña
-
uso de LDAP
-
Uso de NIS
también es importante tener en cuenta que debe tener cuidado en los sistemas donde el usuario principal tiene acceso de root: ese usuario puede cambiar los UID en el sistema para permitir el acceso a los archivos de cualquier persona. Esta página asume que el equipo administrativo es el único grupo con acceso root y que todos ellos son de confianza., Cualquier otra cosa representa una configuración más avanzada, y no se abordará aquí.
Permisos de grupo
con NFS, el acceso de un usuario a los archivos está determinado por su pertenencia a grupos en el cliente, no en el servidor. Sin embargo, hay una limitación importante: un máximo de 16 grupos se pasan del cliente al servidor, y, si un usuario es miembro de más de 16 grupos en el cliente, algunos archivos o directorios pueden ser inesperadamente inaccesibles.
nombres de Host
opcional si se utiliza DNS
agregue cualquier nombre de cliente y direcciones IP a /etc/hosts. Lo real (no 127.,0.0.1) la dirección IP del servidor ya debería estar aquí. Esto garantiza que NFS seguirá funcionando incluso si el DNS cae. Puede confiar en DNS si lo desea, depende de usted.
nis
opcional: realice pasos solo si usa NIS
Nota: Esto solo funciona si usa NIS. De lo contrario, no puede usar netgroups, y debe especificar IP o nombres de host individuales en /etc/exports. Lea la sección de errores en man netgroup.
edite /etc / netgroup y añada una línea para clasificar a sus clientes. (Este paso no es necesario, pero es por conveniencia).,
myclients (client1,,) (client2,,)
obviamente, se pueden agregar más clientes. myclients puede ser lo que quieras; este es un nombre de netgroup.
ejecute este comando para reconstruir la base de datos de YP:
sudo make -C /var/yp
bloqueo de Portmap
opcional
agregue la siguiente línea a/etc / hosts.deny:
rpcbind mountd nfsd statd lockd rquotad : ALL
bloqueando primero todos los clientes, solo los clientes en/etc / hosts.permitir a continuación se le permitirá acceder al servidor.
Ahora agregue la siguiente línea a/etc / hosts.,allow:
rpcbind mountd nfsd statd lockd rquotad : list of IP addresses
donde está la cadena «lista de direcciones IP», debe hacer una lista de direcciones IP que consiste en el servidor y todos los clientes. Estas tienen que ser direcciones IP debido a una limitación en portmap (no le gustan los nombres de host). Tenga en cuenta que si tiene NIS configurado, simplemente agregue estos a la misma línea.,
instalación y configuración
instalar el servidor NFS
sudo apt-get install rpcbind nfs-kernel-server
acciones
edite /etc/exports y agregue las acciones:
/home @myclients(rw,sync,no_subtree_check)/usr/local @myclients(rw,sync,no_subtree_check)
las acciones anteriores /home y /usr/local a todos los clientes en el myclients netgroup.
lo anterior comparte /home y / usr / local a dos clientes con direcciones ip fijas. Se usa mejor solo con máquinas que tienen direcciones ip estáticas.
/home 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)/usr/local 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)
lo anterior comparte /home y/usr / local a todos los clientes en la red privada que caen dentro del rango de direcciones ip designado.,
rw hace que el recurso compartido lea/escriba, y sync requiere que el servidor solo responda a las solicitudes una vez que los cambios se hayan vaciado en el disco. Esta es la opción más segura (async es más rápido, pero peligroso. Se recomienda encarecidamente que lea exportaciones de hombre.
después de configurar /etc / exports, exporte los recursos compartidos:
sudo exportfs -ra
querrá hacer este comando cada vez que se modifique /etc/exports.,
Restart Services
Si se cambió /etc/default/portmap, portmap deberá reiniciarse:
sudo service portmap restart
el servidor del núcleo NFS también requerirá un reinicio:
sudo service nfs-kernel-server restart
Nota de seguridad
Además de los problemas de UID discutidos por encima, debe tenerse en cuenta que un atacante potencialmente podría hacerse pasar por una máquina que se le permite asignar el recurso compartido, lo que les permite crear UID arbitrarios para acceder a sus archivos. Una posible solución para esto es IPSec, consulte también la sección NFS e IPSec a continuación., Puede configurar todos los miembros de su dominio para que hablen solo entre sí a través de IPSec, lo que autenticará efectivamente que su cliente es quien dice que es.
IPSec funciona cifrando el tráfico al servidor con la clave del servidor, y el servidor devuelve todas las respuestas cifradas con la clave del cliente. El tráfico se descifra con las claves respectivas. Si el cliente no tiene las claves que se supone que tiene, no puede enviar ni recibir datos.
una alternativa a IPSec son las redes físicamente separadas., Esto requiere un conmutador de red separado y tarjetas ethernet separadas, y la seguridad física de esa red.
NFS Client
Installation
sudo apt-get install rpcbind nfs-common
Portmap Lockdown
opcional
agregue la siguiente línea a /etc/hosts.deny:
rpcbind : ALL
bloqueando primero todos los clientes, solo los clientes en/etc / hosts.permitir a continuación se le permitirá acceder al servidor.
Ahora agregue la siguiente línea a/etc / hosts.permitir:
rpcbind : NFS server IP address
donde «dirección IP del servidor NFS» es la dirección IP del servidor. ¡Esto debe ser numérico!, Así es como funciona portmap.
nombres de Host
opcional si se utiliza DNS
agregue el nombre del servidor a/etc / hosts. Esto garantiza que los montajes NFS seguirán funcionando incluso si el DNS se cae. Puede confiar en DNS si lo desea, depende de usted.
monta
comprueba si todo funciona
deberías intentar montarlo ahora., La plantilla básica que usará es:
sudo mount ServerIP:/folder/already/setup/to/be/shared /home/username/folder/in/your/local/computer
por ejemplo:
sudo mount 192.168.1.42:/home/music /home/poningru/music
montar al inicio
los montajes NFS se pueden montar automáticamente cuando se accede usando autofs o se pueden configurar con montajes estáticos usando entradas en /etc/fstab. Ambos se explican a continuación.
Automounter
Install autofs:
sudo apt-get install autofs
el siguiente ejemplo de configuración configura los directorios de inicio para que se monten automáticamente en un servidor NFS al iniciar sesión. También se pueden configurar otros directorios para montarlos automáticamente al acceder.,
agregue la siguiente línea al final de /etc/auto.master:
/home /etc/auto.home
ahora crea /etc / auto.inicio e inserte lo siguiente:
* solarisbox1.company.com.au,solarisbox2.company.com.au:/export/home/&
Reiniciar autofs para habilitar la configuración:
sudo service autofs start
montajes estáticos
antes de configurar los montajes, asegúrese de que los directorios que actuarán como puntos de montaje ya están creados.
en/etc/fstab, agregue líneas para acciones como:
servername:dir /mntpoint nfs rw,hard,intr 0 0
El rw lo monta de lectura / escritura., Obviamente, si el servidor lo está compartiendo de solo lectura, el cliente no podrá montarlo como algo más que eso. El hard monta el recurso compartido de tal manera que si el servidor no está disponible, el programa esperará hasta que esté disponible. La alternativa es suave. intr le permite interrumpir / matar el proceso. De lo contrario, te ignorará. La documentación para estos se puede encontrar en la sección Opciones de montaje para NFS de Man mount.
los sistemas de archivos ahora se pueden montar con mount /mountpoint, o mount-A para montar todo lo que se debe montar en el arranque.,
Notas
Minimalista NFS Configurar
Los pasos anteriores son muy completos. El número mínimo de pasos necesarios para configurar NFS se enumeran aquí:
http://www.ubuntuforums.org/showthread.php?t=249889
uso de grupos con recursos compartidos NFS
al usar grupos en recursos compartidos NFS (NFSv2 o NFSv3), tenga en cuenta que esto podría no funcionar si un usuario es miembro de más de 16 grupos. Esto se debe a limitaciones en el protocolo NFS., Puede encontrar más información en Launchpad («Permiso denegado cuando el usuario pertenece a un grupo que posee directorios con permisos de escritura de grupo o setgid montados a través de nfs») y en este artículo: «¿Qué pasa con la limitación de 16 ID de grupo en NFS?»
notas de IPSec
si está utilizando IPSec, el orden de apagado predeterminado en Breezy/Dapper hace que el cliente se cuelgue mientras se apaga porque IPSec se apaga antes que NFS., Para solucionarlo, haga lo siguiente:
sudo update-rc.d -f setkey removesudo update-rc.d setkey start 37 0 6 S .
se ha presentado un error aquí: https://launchpad.net/distros/ubuntu/+source/ipsec-tools/+bug/37536
solución de problemas
El montaje de recursos compartidos NFS en el inicio cifrado no funcionará durante el arranque
El montaje de un recurso compartido NFS dentro de descifrado. Esto significa que usar /etc / fstab para montar recursos compartidos NFS en el arranque no funcionará – porque su hogar no ha sido descifrado en el momento del montaje., Hay una manera simple de evitar esto usando enlaces simbólicos:
- Crear un directorio alternativo para montar los recursos compartidos NFS en:
$ sudo mkdir /nfs$ sudo mkdir /nfs/music
-
editar /etc/fstab para montar el recurso compartido NFS en ese directorio en su lugar:
nfsServer:music /NFS/music NFS auto 0 0
- Crear un enlace simbólico dentro de su casa, apuntando a la ubicación de montaje real (en nuestro caso eliminar el directorio ‘música’ ya existente allí primero):
$ rmdir /home/user/Music$ ln -s /nfs/music/ /home/user/Music