Integración de FreeNAS nun dominio Samba4 e compartición de recursos por CIFS
Ir a la navegación
Ir a la búsqueda
- Nesta sección imos ver como integrar unha máquina con FreeNAS nun dominio con Samba4, para usala como sistema de almacenamento das carpetas persoais e comúns dos usuarios separado do controlador do dominio.
- Antes de comezar, restauraremos as seguintes máquinas as instantáneas indicadas (recórdese facer unha instantánea do estado actual antes de revertir as instantáneas):
- Máquina FreeNAS: Revertimos a instantánea Recén instalada.
- Máquinas dserver00, uclient01 e wclient01: Revertímolas á instantánea Escenario 5.A ou Escenario 5.B, en función do escenario que escolléramos na parte IV.
Integrar o equipo FreeNAS no dominio
- O primeiro será seguir os pasos necesarios para integrar o equipo FreeNAS dentro do dominio, para que poidamos acceder a el cos usuarios do mesmo.
Cambiar o nome da máquina
- Cambiar o nome da máquina
-
Na lapela de Información do apartado de Sistema da ferramenta de administración de FreeNAS, veremos que por defecto ten como nome freenas. Este nome non ten ningún inconveniente, pero nós seguindo o noso esquema queremos que o nome do equipo sexa nas00.iescalquera.local. Picamos no botón de Edit para cambiar o nome.
-
Introducimos o novo nome (nas00.iescalquera.local) e picamos en Ok.
Sincronizar a hora por NTP
- Como en todos os equipos que integramos no dominio Samba4, para que o proceso de autenticación con Kerberos funcione precisamos que a hora dos equipos do dominio estea sincronizada, por iso imos configurar no equipo FreeNAS os mesmos servidores de hora que xa configuramos tanto en dserver como nos clientes.
- Configurar NTP
-
Imos á lapela Xeral para picar no botón de Servidores NTP
-
Vemos que o equipo xa ven configurado con unha serie de servidores NTP. Estes servidores poderían valernos, pero para ser coherentes na instalación e asegurarnos que non hai desfases na hora imos configurar os mesmos que utilizamos nas outras máquinas. Así ademais vemos como personalizar os servidores NTP que utilizamos, porque tamén poderíamos ter un servidor de NTP propio na nosa rede local sincronizar a hora de todos os equipos con ese, en lugar de utilizar servidores NTP externos. Así que seleccionamos un dos servidores NTP e picamos en Delete para quitalo...
-
e facemos o mesmo cos outros dous. Agora imos engadir o que nós queremos que use o equipo, picando en Add Servidor NTP 1.
-
Introducimos o nome do servidor (no momento actual sería 0.europe.pool.ntp.org) e picamos en Ok.
-
E facemos así cos outros servidores NTP que usamos nos outros equipos.
-
Para que a hora do equipo sexa correcta é importante ter ben configurada a zona horaria. Na pestana Xeral tamén atopamos a opción de Zona Horaria. Seleccionaremos a zona de Madrid se non estivese xa seleccionada e picamos en Guardar.
-
Comprobamos na pestana de Información que a hora está correcta, e coincide cos outros equipos do dominio.
Crear pool zfs e configuralo como pool do sistema
- Aínda que xa temos creado un volume, ímolo borrar para crear un volume novo e configuralo como conxunto de datos do sistema, xa que aí garda FreeNAS certa información de configuración. Esta información é necesaria para poder iniciar algúns servizos como CIFS (SMB).
- Crear volume ZFS e configuralo como volume do sistema
-
Seleccionamos o volume que tivésemos creado e eliminámolo.
-
Abrimos o xestor de volumes para crear un volume co nome datos. Podemos facer un volume en RAID con varios discos, pero tendo en conta que traballamos con unha máquina virtual na que os discos residen en realidade en ficheiros dun mesmo disco duro físico non imos conseguir un mellor rendemento senón ao revés. Por tanto, imos coller un único disco para o volume, e picamos en Add Volume.
-
Unha vez creado o volume (en realidade, o pool) ZFS, imos á lapela de Conxunto de datos do sistema do apartado Sistema e comprobamos que ese volume xa está seleccionado na opción de System dataset pool.
Integrar o equipo no dominio

Para que o equipo FreeNAS se poida integrar no dominio e logo os clientes accedan correctamente aos recursos compartidos, é moi importante que todos os equipos (clientes, máquina FreeNAS e dserver) teñan a hora sincronizada. Aínda que temos os sistemas configurados para sincronizar a hora por NTP, temos detectado que en ocasións ao gardar o estado e restaurar as máquinas virtuais o sistema tarda uns minutos en tomar a hora correcta. En caso necesario, pódese usar o comando date para comprobar e modificar a hora se é necesario tanto na máquina FreeNAS como en dserver.
- Chega xa o momento de integrar o equipo FreeNAS no dominio Samba4
- Integrar equipo FreeNAS no dominio
-
Imos ao apartado Directorio e dentro del á pestana AD (Active Directory). Introducimos os datos do dominio:
*Nome do dominio: iescalquera.local
*Nome de conta no dominio: administrator (é a conta dun usuario administrador do dominio)
*Contrasinal da conta no dominio: abc123. (é o contrasinal dese usuario)
*Activamos a opción de Habilitado para activar este servizo de directorio no sistema.
En lugar de aceptar, imos picar en Modo Avanzado para cambiar un par de parámetros. -
Activamos as opcións de Extensións de Unix (xa que é un dominio con Samba4) e Usar el dominio predeterminado para non ter que poñer o nome do dominio antes do nome do usuario para os usuarios do dominio, e que sexan así como usuarios locais. Por outro lado, establecemos o valor de AD timeout a 60 (na última versión de FreeNAS ese xa é o valor por defecto), porque nas probas realizadas sobre as máquinas virtuais no momento en que se integra o equipo no dominio o retardo pode ser maior de 10 segundos, e entón daría un erro ao intentar integrar o equipo no dominio. Aceptamos picando en Guardar.
-
Vemos que iniciou automaticamente tamén o servizo SMB, xa que é necesario para a autenticación de usuarios do directorio activo.
-
Conectámonos á máquina FreeNAS por ssh e utilizamos o comando wbinfo -u para ver os usuarios do dominio (tamén podemos velos co comando getent passwd)...
-
e wbinfo -g para ver os grupos (tamén podemos velos co comando getent group).
Configurar e compartir as carpetas por CIFS
- Agora que xa temos dispoñibles na máquina FreeNAS os usuarios e grupos do dominio, podemos crear a estrutura de carpetas, establecer os permisos necesarios e compartir as carpetas por CIFS para que sexan utilizadas polos equipos cliente.
Crear o esqueleto de carpetas
- Comezaremos creando o esqueleto de carpetas, que será moi similar ao que tiñamos en dserver00 para Samba4, así que poderemos reutilizar os mesmos scripts cambiando as carpetas base.
- Definiremos en FreeNAS dous conxuntos de datos (datasets) dentro do volume ZFS datos; para as carpetas dos usuarios e a carpeta común respectivamente. Desta forma podemos usar configuracións independentes para cada un deles, como cotas de disco, nivel de compresión, etc.
- Crear o esqueleto de carpetas
-
Na lapela de Volumes dentro do apartado de Almacenamento, seleccionamos o conxunto de datos datos e picamos no botón para Crear un conxunto de datos.
-
Poñemos como nome usuarios e deixamos o resto de opcións por defecto (poderíamos asignar se quixéramos un tamaño máximo para este conxunto de datos usando o Modo Avanzado), picando en Añadir un conjunto de datos.
-
Vemos o conxunto de datos creado. Picamos sobre o conxunto de datos datos e creamos outro...
-
coas mesmas opcións, pero co nome de comun.
- Na máquina FreeNAS, creamos no volume ZFS unha carpeta para crear os scripts para a creación do esqueleto de carpetas:
cd /mnt/datos
mkdir scripts_samba4
cd scripts_samba4
- Seguindo a mesma filosofía das partes anteriores, creamos un ficheiro de texto para almacenar todos os cursos que temos.
- FICHEIRO DE CURSOS: f00_cursos.txt
dam1 dam2
- O seguinte script establece o valor das variables que almacenan as rutas ás carpetas base do esqueleto, que neste caso cambian con respecto á parte VII:
- SCRIPT DE VARIABLES GLOBAIS: 00_variables.sh
#!/bin/bash
# Define variable globais que van usar os demais scripts
#Variables
DIR_USUARIOS=/mnt/datos/usuarios
DIR_COMUN=/mnt/datos/comun
# Exportar variables
# Nos scripts que se van usar a continuación non faría falla que se exportansen as variables.
# Pero quedan exportadas por se a posteriori calquera dos scripts que vai importar
# o contido deste ficheiro precisase chamar a outros scripts que precisasen usar estas variables
export DIR_USUARIOS
export DIR_COMUN
- E por último, o seguinte script é exactamente o mesmo que o da parte VII. O que fai é crear todas as carpetas do esqueleto.
- SCRIPT: 01_crear_esqueleto.sh
#!/bin/bash
#Chamar ao script de variables, temos varias opcións:
. ./00_variables.sh # Tamén podería ser: source ./00_variables.sh
#Crear esqueleto profes
#Por se executamos o script varias veces, comprobamos se xa existe o directorio
test -d $DIR_USUARIOS/persoais/profes || mkdir -p $DIR_USUARIOS/persoais/profes
#Crear esqueleto para os perfis de Windows
test -d $DIR_USUARIOS/perfisWindows || mkdir -p $DIR_USUARIOS/perfisWindows
#Crear esqueleto para os perfis de Linux
test -d $DIR_USUARIOS/perfisLinux || mkdir -p $DIR_USUARIOS/perfisLinux
#Crear esqueleto alumnos e comun
#Lemos o ficheiro cursos e procesamos cada curso
for CURSO in $(cat f00_cursos.txt)
do
test -d $DIR_USUARIOS/persoais/alumnos/$CURSO || mkdir -p $DIR_USUARIOS/persoais/alumnos/$CURSO
test -d $DIR_COMUN/$CURSO || mkdir -p $DIR_COMUN/$CURSO
done
#Crear en comun a carpeta para os departamentos
test -d $DIR_COMUN/departamentos || mkdir -p $DIR_COMUN/departamentos
- Executamos o script para crear o esqueleto de carpetas:
sh 01_crear_esqueleto.sh
- Comprobamos a súa execución, visualizando co comando ls -R o contido de /mnt/datos/usuarios e /mnt/datos/comun.
Configurar os permisos
- Neste apartado hai que destacar unha cuestión importante. FreeNAS permite o uso de ACLs para establecer os permisos das carpetas e ficheiros, pero non son o mesmo tipo de ACLs que vimos na Parte VII (ACLs POSIX). FreeNAS utiliza NFSv4ACLs, que son unha variante que permiten aínda máis opcións que as ACLs POSIX (xa que por exemplo, inclúen máis permisos que r,w e x), e que se achegan máis as ACLs que utilizan os sistemas Windows.
- Non imos afondar moito na configuración das ACLs NFSv4, o que faremos é tan só destacar as diferenzas máis importantes con respecto á configuración das ACLs POSIX. No seguinte enlace móstranse exemplos da configuración da ACL NFSv4 sobre un ficheiro cos comandos getfacl e setfacl:
- Na páxina pódense ver como diferenzas máis importantes as seguintes:
- A sintaxe para indicar o propietario do ficheiro (owner@) o grupo propietario (group@) e todos os usuarios (everyone@).
- O maior número de permisos que se admiten (escribir, engadir, escribir atributos, escribir a acl, etc.).
- A posibilidade de indicar e cada elemento da ACL a acción de permitir (allow) ou denegar (deny).
- Teremos polo tanto que adaptar o script que fixemos na parte IV para axustas os permisos á sintaxe do comando setfacl para ACLs NFSv4, que será da forma:
setfacl -m etiqueta:calificador:permisos:herdanza:tipo
- Onde os campos introducidos serán:
- etiqueta: u para usuario, g para grupo, owner@ para o usuario propietario, group@ para o grupo propietario e everyone@ para todos os usuarios.
- calificador: O usuario ou grupo á que afecta a ACL, que só usaremos se na etiqueta introducimos u ou g respectivamente.
- permisos: Agora temos moitos máis posibles permisos para establecer, xa que ademais de lectura (r), escritura (w) e execución (x), aparecen entre outros: engadir datos (p), borrar fillos (D), borrar (d), ler atributos (a), escribir atributos (A), ler a ACL (c) e escribir a ACL (C). Para facilitar a sintaxe, tamén dispoñemos de conxuntos de permisos, que son:
- full_set: Todos os permisos (control total).
- modify_set: Todos os permisos salvo modificar a ACL e usuario propietario (permiso de lectura e escritura).
- read_set: Permisos de lectura.
- write_set: Permisos de escritura.
- herdanza: Podemos utilizar varios valores neste campo para indicar se queremos que a ACL se herde aos ficheiros e carpetas que se creen dentro da carpeta (agora non podemos usar a opción -d):
- f: Herdable para os ficheiros que se creen dentro da carpeta.
- d: Herdable para as subcarpetas.
- i: Só herdable, pero non aplicable á propia carpeta.
- tipo: allow (permitir) ou deny (denegar).
- O script de axuste dos permisos podería quedar como segue:
SCRIPT: 02_axustar_acls_esqueleto.sh
#!/bin/bash
#Chamar ao script de variables
. ./00_variables.sh # Tamén podería ser: source ./00_variables.sh
#Establecemos de forma recursiva os permisos de Linux
chown -R root:wheel $DIR_USUARIOS
chmod -R 700 $DIR_USUARIOS
chown -R root:wheel $DIR_COMUN
chmod -R 700 $DIR_COMUN
#Cartafol de usuarios e subcartafoles
setfacl -m g:g-usuarios:rxpaRc::allow $DIR_USUARIOS
setfacl -m g:"Domain Admins":rxpaRc::allow $DIR_USUARIOS
setfacl -m g:g-usuarios:rxpaRc::allow $DIR_USUARIOS/persoais
setfacl -m g:"Domain Admins":rxpaRc:fd:allow $DIR_USUARIOS/persoais
setfacl -m g:g-usuarios:modify_set::allow $DIR_USUARIOS/perfisWindows
setfacl -m g:g-usuarios:modify_set::allow $DIR_USUARIOS/perfisLinux
#Cartafol profes
setfacl -m g:g-profes:rxpaRc::allow $DIR_USUARIOS/persoais/profes
setfacl -m g:"Domain Admins":modify_set:fd:allow $DIR_USUARIOS/persoais/profes
setfacl -m group@::fd:allow $DIR_USUARIOS/persoais/profes
#Cartafol alumnos
setfacl -m g:g-profes:rxpaRc::allow $DIR_USUARIOS/persoais/alumnos
setfacl -m g:g-alum:rxpaRc::allow $DIR_USUARIOS/persoais/alumnos
setfacl -m g:"Domain Admins":rxpaRc:fd:allow $DIR_USUARIOS/persoais/alumnos
#Cartafoles cursos
for CURSO in $(cat f00_cursos.txt)
do
setfacl -m g:g-$CURSO-alum:rxpaRc::allow $DIR_USUARIOS/persoais/alumnos/$CURSO
setfacl -m g:g-$CURSO-profes:rxpaRc:fd:allow $DIR_USUARIOS/persoais/alumnos/$CURSO
setfacl -m group@::fd:allow $DIR_USUARIOS/persoais/alumnos/$CURSO
setfacl -m g:"Domain Admins":modify_set:fd:allow $DIR_USUARIOS/persoais/alumnos/$CURSO
done
#Cartafol comun
setfacl -m g:g-profes:rxpaRc::allow $DIR_COMUN
setfacl -m g:g-alum:rxpaRc::allow $DIR_COMUN
#Subcartafol departamentos
setfacl -m g:g-profes:modify_set:fd:allow $DIR_COMUN/departamentos
#Subcartafoles cursos
# O participante no curso á vista do esquema de permisos
# do exemplo de arriba debe ser quen de axustar
# os permisos de comun/cursos
- Executamos o script:
sh 02_axustar_acls_esqueleto.sh
- Unha vez executado o script, recoméndase comprobar con getfacl -v que cada carpeta ten a ACL que lle corresponde.
Compartir as carpetas por CIFS
- O único que nos resta por facer na máquina FreeNAS é compartir por CIFS os dous conxuntos de datos que conteñen toda o esqueleto das carpetas dos usuarios e común.
- Compartir carpetas por CIFS en FreeNAS
-
Picamos no botón de Compartido.
-
Aparece a pestana de Sharing, e picamos sobre botón de SAMBA (CIFS) (ou Windows (SMB))
-
Vemos que polo momento non hai carpetas compartidas. Picamos sobre Add Compartidos de Windows (CIFS) SAMBA.
-
Introducimos os datos da carpeta compartida, sendo os máis importantes o nome da carpeta compartida (neste caso, usuarios) e a ruta da carpeta que imos compartir (/mnt/datos/usuarios). Aceptamos picando en Ok.
-
Vemos a carpeta compartida creada, e imos crear outra para comun.
-
Introducimos agora os datos para crear a carpeta compartida , pero neste caso en lugar de picar en Ok directamente, imos picar no botón de Modo Avanzado para cambiar un parámetro que pode mellorar o uso da carpeta para os usuarios do dominio.
-
Engadimos nos parámetros auxiliares a liña:
hide unreadable = yes
Desta forma a carpetas e ficheiros para os que un usuario non teña permiso de lectura xa non se lle van a mostrar. Agora aceptamos -
Xa temos as dúas carpetas compartidas creadas. Picamos en Servizos para editar a configuración do servizo SMB.
-
Editamos a configuración do servizo SMB picando na chave.
-
Introducimos o nome de NetBIOS do equipo (nas00) e o grupo de traballo (o mesmo nome que o dominio, IESCALQUERA). Ao estar nun dominio con Samba4, desmarcaremos as opcións de Maestro local e Servidor de Hora para el Dominio se estivesen marcadas.
-
Aceptamos.
Configurar os usuarios e equipos do dominio para acceder ás carpetas almacenadas en FreeNAS
- Agora que xa temos na NAS os recursos compartidos necesarios para poder almacenar as carpetas dos usuarios e comúns, imos facer a configuración necesaria para que tanto os equipos Windows como Linux utilicen esas carpetas en lugar das compartidas no controlador de dominio.
Configuración para os equipos Windows
- Para cambiar a configuración dos equipos Windows, non haberá que facer nada nos clientes. Os cambios farémolo na configuración dos usuarios e no script de inicio de sesión.
- Almacenamento en NAS: Configuración equipos Windows
-
Imos facer o cambio para o usuario sol. Usando as RSAT, imos ás propiedades do usuario e na lapela de Perfil cambiamos tanto na ruta de acceso ao perfil como na da carpeta particular dserver00 por nas00. Aceptamos
-
Podemos comprobar na máquina FreeNAS que agora xa se creou a carpeta persoal do usuario sol.
-
Iniciamos sesión en wclient01 con sol.
-
Se abrimos o explorador de ficheiros e nos fixamos na unidade Z:, agora está conectada á carpeta compartida na NAS. Entramos...
-
e comprobamos que podemos escribir dentro da carpeta.
-
Agora que noa iniciou sesión nun cliente Windows do dominio, tamén podemos comprobar que se creou na máquina FreeNAS a carpeta co seu perfil móbil.
-
Editamos en dserver00 o script de inicio de sesión inicio.bat, e nos comandos net use que conectan as carpetas comun e alumnos (para os profes), cambiamos dserver00 por nas00 (recórdese que no ficheiro de configuración de samba se pode consultar onde está a carpeta que contén os scripts de inicio de sesión, que é a que está compartida como netlogon).
-
En wclient01, pechamos a sesión de sol e iniciámola de novo...
-
para comprobar que agora xa todas as unidades de rede se conectan ás carpetas compartidas de nas00.
Configuración para os equipos Linux
- Cambiamos no ficheiro /etc/security/pam_mount.conf.xml dserver00 por nas00
- Engadimos o parámetro noperm xa que o cliente non recoñece as ACLs NFSv4.
...
<volume sgrp="g-profes" fstype="cifs" server="nas00.iescalquera.local" path="usuarios/persoais/profes/%(USER)" mountpoint="/media/%(USER)/Persoal" options="workgroup=iescalquera,iocharset=utf8,uid=%(USER),noperm" />
<volume sgrp="g-dam1-alum" fstype="cifs" server="nas00.iescalquera.local" path="usuarios/persoais/alumnos/dam1/%(USER)" mountpoint="/media/%(USER)/Persoal" options="workgroup=iescalquera,iocharset=utf8,uid=%(USER),gid=g-dam1-profes,noperm" />
<volume sgrp="g-dam2-alum" fstype="cifs" server="nas00.iescalquera.local" path="usuarios/persoais/alumnos/dam2/%(USER)" mountpoint="/media/%(USER)/Persoal" options="workgroup=iescalquera,iocharset=utf8,uid=%(USER),gid=g-dam2-profes,noperm" />
<volume sgrp="g-usuarios" fstype="cifs" server="nas00.iescalquera.local" path="comun" mountpoint="/media/%(USER)/Comun" options="workgroup=iescalquera,iocharset=utf8,noperm" />
<volume sgrp="g-profes" fstype="cifs" server="nas00.iescalquera.local" path="usuarios/persoais/alumnos" mountpoint="/media/%(USER)/Alumnos" options="workgroup=iescalquera,iocharset=utf8,noperm" />
<volume sgrp="g-usuarios" fstype="cifs" server="nas00.iescalquera.local" path="usuarios/perfisLinux" mountpoint="/home/local/IESCALQUERA" options="workgroup=iescalquera,iocharset=utf8,uid=%(USER),noperm" />
</pam_mount>
- Configuración para os equipos Linux
-
Iniciamos sesión en uclient01 co usuario sol.
-
Comprobamos en nas00 que se creou a carpeta do perfil do usuario ao iniciar a sesión.
-
sol pode acceder á súa carpeta persoal, á carpeta común e as carpetas persoais dos alumnos dos grupos nos que da clase. Nin sequera notamos ningún cambio con respecto á configuración anterior...
-
pero executando o comando mount -t cifs podemos ver que todas as carpetas están montadas sobre as carpetas compartidas en nas00.
