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:
- Directorios compartidos por grupos
- 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- Creamos el recurso compartido en samba (/etc/samba/smb.conf):
chmod 770 /home/TEST/grupoA
chmod g+s /home/TEST/grupoA
[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:
- Las puedes configurar facilmente desde Windows, utilizando las propiedades del archivo, aunque es un poco lioso.
- No tienes que ir creando grupos y subgrupos y subgrupos
UUID=88... / ext4 acl, user_xattr, defauls,...- Creamos / Modificamos el recurso compartido de samba:
[grupoA]- Modificamos el sistema de archivos:
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
#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:
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