Añadir SAMBA en Active Directory de Windows 2003 (II)

Una vez tenemos nuestro servidor SAMBA integrado con el Active Directory de Windows, pues solo nos queda hacer recursos compartidos para usarlo. Pondremos 2 escenarios:
  1. Directorios compartidos por grupos
  2. Uso de las ACL para especificar quien puede y quien no puede acceder a archivos/subdirectorios de un recurso compartido.
 Nombre Dominio Netbios: TEST

Compartir directorio a un grupo de usuarios

- Creamos un grupo (grupoA) en el servidor de Active Directory y le añadimos usuarios
- (a) crear directorio (b) le pongo permisos efectivos para escritura del grupo (c) le pongo el +s al directorio para que los subdirectorios creados tengan el grupo que me interesa (grupoA) y no el grupo del usuario que lo crea (p.e. usuarios del dominio)
mkdir /home/TEST/grupoAchown administrador.grupoA /home/TEST/grupoA
chmod 770 /home/TEST/grupoA
chmod g+s /home/TEST/grupoA
- Creamos el recurso compartido en samba (/etc/samba/smb.conf):
[grupoA]
   path = /home/TEST/grupoA
   read only = no
   valid users = @grupoA
   create mask = 0660
   directory mask = 0770
De esta manera solo dejamos acceder al directorio los miembros del grupo grupoA y los nuevos archivos y directorios se crean con permisos de lectura y escritura del grupo asi pueden ser modificados por otros miembros del grupo.

Diferentes permisos dentro de un grupo de trabajo

Suele ocurrir que si un grupo es un poco grande ocurra que os pidan que ciertas carpetas dentro del directorio compartido solo puedan acceder ciertas personas y no todos los miembros del grupo.

Pues aquí o creas como subgrupos y cambias los permisos de la subcarpeta con chown o utilizas las ACL.

Ventajas ACL:
  1. Las puedes configurar facilmente desde Windows, utilizando las propiedades del archivo, aunque es un poco lioso.
  2. No tienes que ir creando grupos y subgrupos y subgrupos
- Activamos el soporte de ACL del sistema de archivos del SAMBA modificando el fstab
UUID=88...     /    ext4   acluser_xattr, defauls,...
- Creamos / Modificamos el recurso compartido de samba:
[grupoA]
   path = /home/TEST/grupoA
   read only = no
   create mask = 0660
   directory mask = 770
   nt acl support = yes
   inherit acls = yes
   inherit permissions = yes
   valid users = @grupoA (o @"DOMINIO+grupo dominio")
  admin users = DOMINIO+user1, etc 
- Modificamos el sistema de archivos:
#Directorio principal del grupo (igual que antes)
mkdir /home/TEST/grupoA
chown administrador.grupoA /home/TEST/grupoA
chmod 770 /home/TEST/grupoA
chmod g+s /home/TEST/grupoA

#Subdirectorio para _solo_ un usuario del grupoA (user1)
mkdir  /home/TEST/grupoA/dir_user
chown administrador.grupoA /home/TEST/grupoA/dir_user
chmod 770 /home/TEST/grupoA/dir_user
setfacl -b /home/TEST/grupoA/dir_user
setfacl -m u:user1:rwx -m g::0 -m o::0 /home/TEST/grupoA/dir_user
setfacl -d -m u:user1:rwx -m g::0 -m o::0 /home/TEST/grupoA/dir_user

#Subdirectorio para unos usuarios en particular del grupoA (user1, user2)
mkdir  /home/TEST/grupoA/dir_user2
chown administrador.grupoA /home/TEST/grupoA/dir_user2
chmod 770 /home/TEST/grupoA/dir_user2
setfacl -b /home/TEST/grupoA/dir_user2
setfacl -m u:user1:rwx -m u:user2:rwx -m g::0 -m o::0 /home/TEST/grupoA/dir_user2
setfacl -d -m u:user1:rwx -m u:user2:rwx -m g::0 -m o::0 /home/TEST/grupoA/dir_user2

#Subdirectorio para un subgrupo del grupoA (subgrupoA - sus miembros tienen que ser tb del grupoA sino samba no les dejará entrar por el valid users). Supongo que aqui podríamos poner el grupo directamente con el chown y ya está

mkdir  /home/TEST/grupoA/dir_subgrupo
chown administrador.grupoA /home/TEST/grupoA/dir_subgrupo
chmod 770 /home/TEST/grupoA/dir_subgrupo
setfacl -b /home/TEST/grupoA/dir_subgrupo
setfacl -m g:subgrupoA:rwx -m g::0 -m o::0 /home/TEST/grupoA/dir_subgrupo
setfacl -d -m g:subgrupoA:rwx -m g::0 -m o::0 /home/TEST/grupoA/dir_subgrupo
Básicamente lo que hacemos es:
  • añadir el usuario que queremos que tenga acceso (-m u:usuario:rwx)
  • deshabilitar al resto del grupo que pueda acceder (-m g::0)
NOTA: Si existe un usuario local del servidor samba que se llama igual que en Active directory la ACL se aplicará al local, para que se aplique al usuario del dominio se debe hacer DOMINIO+usuario: ej:
setfacl -m u:TEST+user1:rwx -m g::0 -m o::0 /home/TEST/grupoA/dir_user
NOTA: el setfacl -d lo que hace es que los nuevos archivos y directorios que se creen dentro de esa ubicación también se les aplique esa ACL. Es la manera de crear las ACL por defecto.

Si se accede como administrador en el Active Directory podremos modificar los permisos de las ACL desde las propiedades del directorio (pestaña seguridad de las propiedades), pero haciendolo desde el servidor samba sale a la primera :D. Por esto, todos los directorios de grupo les pongo usuario "Administrador", además, también deberá ser un miembro del grupoA para poder acceder y toquetear las propiedades.

NOTA: otra manera de intentar manejar los permisos desde windows es:

  • crear el directorio + chgrp grupo + chmod 770 
  • poner una acl default: setfacl -d -m g:"admins del dominio":rwx directorio
  • poner los usuarios de admins del dominio dentro del grupo del directorio.
  • Cuando creamos directorios y/o archivos estos seran del usuario que los cree con el grupo heredado por el +s
  • Desde un usuario admin del dominio podemos: canviar el propietario y por tanto hará un chown
  • añadir o quitar permisos de la lista (ojo no hace falta ponerle permisos al nuevo propietario pues tendrá rwx) y esto ejecuta el setfacl para añadir las acl. Como nota decir que windows siempre mostrará una acl con el grupo del directorio pero si no tiene permisos, los de ese grupo no pueden entrar.
De esta manera tenemos el directorio del grupo tal que:
  • Todos los archivos y subdirectorios que se crean son modificables por el grupo (por los permisos de 0660 y 0770 del samba y el +s del sistema de ficheros)
  • El subdirectorio dir_user solo es accesible por el user1
  • El subdirectorio dir_user2 solo es accesible por user1 y user2
  • El subdirectorio dir_subgrupo solo es accesible por los miembros del grupo subgrupoA (un grupo mas reducido del grupoA)

Así nos resulta fácil crear via Active Directory grupos "generales" que pueden acceder a sus recursos compartidos y, con las ACL, configurar mas detalladamente que usuarios de cada grupo pueden acceder a ciertos directorios

Comentarios