Instalación do servidor NFS en Ubuntu Server
Instalación do servidor NFS
Simplemente teremos que instalar o paquete correspondente co servidor NFS:
sudo apt-get install nfs-kernel-server
Compartir carpetas por NFS utilizando o webmin
Webmin ofrécenos unha forma moi sinxela de editar as carpetas compartidas polo servidor NFS, utilizando o módulo de Exportacións de NFS que atopamos dentro da categoría de Rede (Teremos que refrescar os módulos do webmin despois de instalar o servidor NFS para que apareza o módulo).
Na páxina inicial deste módulo nos mostra as comparticións definidas no servidor NFS, incluso aquelas que están comentadas no ficheiro de configuración do servidor NFS, que aparecen como inactivas (vemos que por defecto aparecen compartidas unhas carpetas de exemplo, pero todas están inactivas):
Podemos crear unha nova compartición picando no enlace de Añadir una nueva exportación. Na seguinte imaxe podemos ver como compartir as carpetas persoais dos usuarios (carpeta /home) para lectura e escritura dende calquera máquina cliente da nosa rede local (Picaremos no botón de Crear para crear a compartición, e logo Aplicar cambios na páxina inicial do módulo):
A continuación imos ver algunhas das opcións máis importantes que podemos establecer cando compartimos unha carpeta por NFS.
- Versión de NFS: Podemos indicar que versión do protocolo NFS queremos utilizar para esta compartición. Seleccionaremos a versión 3 salvo cando utilicemos o servizo de kerberos para aumentar a seguridade na autenticación dos usuarios que acceden á compartición, que teremos que usar a versión 4.
- NFSv4 pseudofilesystem: Esta opción é propia de NFSv4 e só a poderemos activar cando seleccionemos a versión 4 do protocolo. Permite indicar un directorio no servidor que será para os clientes o directorio raíz para acceder ás carpetas compartidas, e independentemente de onde residan no servidor veranse dende os clientes englobadas dentro dunha compartición global.
- Directorio a exportar: Indicaremos a rota da carpeta do servidor que queremos exportar (compartir).
- Exportar a...: Nesta opción podemos indicar que máquinas poderán acceder a esta compartición, para o que teremos varias posibilidades:
- Todo el mundo: Pódese acceder á carpeta dende calquera máquina, incluso de fóra da nosa rede. Por cuestións de seguridade, non é recomendable usar esta opción.
- Máquina(s): Nesta opción pode indicarse o nome dunha ou varias máquinas, usando comodín como o * e o ?. Por exemplo, *.iescalquera.local autorizaría o acceso a calquera máquina que tivese un nome dentro dese dominio DNS.
- Red IPv4: A opción máis recomendable, na que podemos indicar a dirección IP e máscara dunha rede ou subrede para restrinxir o acceso á carpeta só aos equipos dese rede. O habitual será que esa rede sexa a nosa rede local.
- Solo lectura: Permítenos indicar se os usuarios poderán escribir ou non sobre a carpeta compartida, idependentemente dos permisos que teñan sobre a mesma.
- Deshabilitar subtree checking: A opción de subtree_cheking, que está habilitada por defecto, fai que o servidor NFS cando recibe unha petición comprobe que esa petición realmente accede á area que está compartida. Para conseguilo, obtén información sobre o directorio no que reside o ficheiro, e así se o ficheiro é movido de directorio, denegará o acceso ao mesmo. Isto pode ser útil cando compartimos por NFS un subdirectorio dun sistema de ficheiros, pero queremos evitar accesos ao que está fora deste subdirectorio.
Pero esta opción ten o inconveniente de que ralentiza moito o acceso á carpeta compartida, nas versións actuais de NFS está deshabilitada por defecto. En concreto, non se recomenda utilizar esta opción cando compartimos os directorios persoais dos usuarios, debido ao degradamento que provoca no rendemento. Nós imos deshabilitar sempre esta opción, e para evitar problemas de seguridade e accesos a directorios non autorizados, recoméndase compartir por NFS sistemas de ficheiros completos, como é no noso caso o directorio /home, que reside nunha partición aparte.
- Confiar en usuarios remotos: Esta opción está relacionada co mapeo de UIDs que realiza o servidor NFS cando se accede á carpeta compartida dende un cliente. Os valores que podemos seleccionar son:
- Confiar en todo el mundo: Desta forma o servidor NFS mapeará o UID do usuario do equipo cliente con un usuario do servidor, sexa que sexa este usuario. Esta opción pode conlevar problemas de seguridade importantes xa que se se accede dende un cliente como usuario root se poderá ter acceso a toda a información da carpeta.
- Confiar en todo el mundo excepto root: Desta forma o servidor NFS mapeará o UID do usuario do equipo cliente con un usuario do servidor excepto se se trata do usuario root, que será mapeado como usuario anónimo.
- No confiar en nadie: Desta forma o servidor NFS mapea calquera usuario do equipo cliente como usuario anónimo.
O ficheiro de configuración do servidor NFS
O ficheiro /etc/exports é o que recolle a definición das distintas carpetas compartidas polo servidor nfs e os parámetros dos recursos compartidos.
Cada liña deste ficheiro define en primeiro lugar a carpeta do sistema de ficheiros que se comparte por NFS, e a continuación unha lista separada por espazos en branco de todos os clientes que están autorizados a acceder a esa carpeta. A cada cliente da lista se lle poden indicar unha serie de opcións de acceso entre parénteses, separadas por comas. No ficheiro que se inclúe por defecto no paquete de Ubuntu Server podemos ver algunhas entradas de exemplo (nótese que están comentadas, xa que comezan polo símbolo #), como a seguinte:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
Esta compartición, comentada, exporta a carpeta /srv/homes ás máquinas hostname1 e hostname2, indicando unha serie de opcións que comparte a carpeta con permisos de lectura e escritura para a primeira máquina, pero só de lectura para a segunda.
Podemos incluír unha liña neste ficheiro para cada carpeta que queiramos compartir por NFS no servidor. Remitimos ao lector ao manual do ficheiro exports para consulta das distintas opcións posibles na compartición.
Unha vez modificado o ficheiro /etc/exports, aplicaremos os cambios mediante o comando exportfs -ra
man exports ofrece axuda sobre os distintos parámetros e cales son por defecto.
Exportar o /home
A exportación realizada anteriormente con webmin introduciu a entrada no ficheiro /etc/exports:
/home 10.0.0.0/255.0.0.0(no_subtree_check,rw)
O parámetro no_subtree_check non faría falla indicalo, pois dende a versión 1.0.x de nfs-utils o parámetro no_subtree_chek está activado po defecto, de feito próbese a eliminalo de /etc/exports, quedando
/home 10.0.0.0/255.0.0.0(rw)
Execútese sudo exportfs -ra e obsérvese a saída ó respecto do que indica para no_subtree_check:
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "10.0.0.0/255.0.0.0:/home". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x