Compartiendo con SAMBA, segunda parte, permisos ACL
Generalmente en la mayoría de artículos, tutoriales y guías que encontramos por Internet, se quedan en la mera compartición pública de los recursos con SAMBA. Hoy hablaremos de los permisos ACL y de como usarlos en SAMBA. Con ellos podremos otorgar permisos de escritura y denegarlos, incluidos los de lectura y los de ejecución. Y al final veremos como ocultar carpetas sin tener que usar la ocultación con dot o punto.
Las listas de control de acceso o ACL, para quien nos las conozca, se usan en la seguridad informática para modificar los provilegios de usuarios y grupos sobre un elemento, ya sea fichero o carpeta. Más información aquí.
Usaremos la misma máquina, carpetas y usuarios que utilizamos en el artículo anterior.
Instalaremos las ACL en Debian con el siguiente comando:
apt-get -y install acl
Que nos daría un resultado similar al siguiente:
En Red Hat y derivados vienen por defecto con el sistema.
He añadido más carpetas, para así poder jugar con los permisos ACL:
Para mostrar el arbol de carpetas he usado el comando tree, que no viene por defecto pero lo podéis instalar con apt-get o yum.
Si accedemos con el user1, desde un ordenador con Windows 7 veremos la siguientes carpetas en Contabilidad:
Comencemos. Primero de toda. Otorgaremos todos los derechos a nuestros usuarios y a nuestro grupo, y el resto los denegaremos, para las carpetas Contabilidad y Personal. Usaremos los comandos:
- getfacl, que nos dará información de permisos ACL de ficheros y carpetas
- setfacl, que los usararemos para modificar dichos permisos.
Si usamos getfacl con ambas carpetas:
La sintaxis es, primera columna para el tipo de objecto (user, group, other), segunda columna para el objeto, si está vacía es para todos, y la última columna para los permisos, «r» lectura, «w» escritura y «x» ejecución.
Daremos todos los permisos a nuestro usuarios y grupo:
setfacl -Rm u::---,u:user1:rwx,u:user2:rwx,u:user3:rwx /mnt/Contabilidad
serfacl -Rm g::---,g:userbits:rwx /mnt/Contabilidad
setfacl -Rm u::---,u:user1:rwx,u:user2:rwx,u:user3:rwx /mnt/Personal
setfacl -Rm g::---,g:userbits:rwx /mnt/Recursos
Explicamos un poco, primero los parámetros:
- -R , decimos que los permisos son recursivos, es decir, se aplicarán a todos los ficheros y directorios que haya por debajo de la carpeta.
- -m, sirve para indicar que vamos a modificar permisos.
Más adelante decimos que los usuarios por defecto no tienen ningún permiso (u::—) y añadimos los permisos a nuestros usuarios (u:user1:rwx…..) Lo mismo con los grupos.
Ahora viene lo divertido. A los usuarios user2 y user3 les denegaremos acceso a las subcarpetas dentro de Contabilidad, CRM, Facturas y Proveedores
setfacl -Rm u:user2:---,u:user3:--- /mnt/Contabilidad/CRM
setfacl -Rm u:user2:---,u:user3:--- /mnt/Contabilidad/Facturas
setfacl -Rm u:user2:---,u:user3:--- /mnt/Contabilidad/Proveedores
Cada vez que hagamos un cambio recordad reiniciar SAMBA.
Si intentan entrar les dará el siguiente error:
Es verdad, resulta un poco chocante a veces que no puedas acceder a ciertos recursos que sabes que existen. Eso tiene fácil arreglo, vamos hacer que los usuarios no vean los recursos que no pueden leer o escribir o ambas cosas.
Usaremos la configuración de SAMBA en el archivo smb.conf. Añadiendo los parámetros en [Contabilidad] :
- hide unreadable = Yes # Todo lo que no sea leíble por el usuario se oculta.
- hide unwriteable files = Yes # Todo lo que no se puede escribir por el usuario se oculta.
- access based share enum = Yes
Una vez añadido reiniciamos el servicio SAMBA.
Si todo ha ido bien los usarios ya no verán las carpetas:
Espero que os haya sido igual de interesante que a mi.
Como sé que es un asunto algo denso no dudéis en preguntar.
You wellcome! Hasta la próxima!
oohh muy buen tip sobre como manejar las ACLs, felicidades y gracias por compartir.
Hola Antonio,
Antes de nada gracias por visitar la página.
Cómo respuesta a tu pregunta, imaginemos que tenemos un grupo de usuarios, digamos de toda nuestra empresa, que son unos 60 trabajadores, por poner un ejemplo. Tenemos una carpeta que se llama EMPRESA, y allí dentro tendremos las carpetas que queremos compartir por departamento. El grupo de usuario es «empresa», con un administrador que llamaremos «adminempresa»
Bien, primero de todo, en la consola o shell, asignaremos los permisos de propietario al usuario y al grupo con:
chown adminempresa:empresa CARPETAEMPRESA -R
Lo siguiente es asignar los permisos:
chmod 775 CARPETAEMPRESA -R
En smb.conf, en dicho recurso la configuración tendría que ser parecida a esta:
[CARPETAEMPRESA]
comment = Carpeta de la Empresa
path = /mnt/CARPETAEMPRESA
valid users = @empresa
write list = @empresa
admin users = adminempresa
hide unreadable = Yes
hide unwriteable files = Yes
access based share enum = Yes
Creo que no me he dejado, nada, ahora sólo reiniciamos samba.
Pues bien, una vez hecho esto, que se hace sólo una vez. Ya puedes empezar a jugar con las listas ACL, y no tener que tocar más el archivo smb.conf, a no ser que necesites compartir otras carpetas.
Espero que te haya sido de ayuda.
Hola David,
Mira primero agradecerte por tan amable blog y el tiempo que le dedicas me parece excelente 😀
tengo una consulta veo que se configuro samba como controlador de dominio, dime que mas se podria hacer con dicho DC. por lo que veo tendria que unirme al dominio, quedo atento a tus comentarios.
Hola Raúl. El servidor lo tengo configurado como controlador de dominio con muy pocas funciones. Las básicas para que funcione el servidor SAMBA. Quizás en un artículo posterior ampliaremos conocimientos al respecto de LDAP y SAMBA. Para utilizar el servidor SAMBA sólo tienes que tener un usuario y su contraseña.
Te felicito
todo bien excepto que no aparece en w7 la ventan del usuatio y contraseña
saludos
Juanito
Hola Juanito,
Gracias por visitar la web, si te ha parecido interesante podrías pinchar en alguno de los anuncios de la web, de ésta manera me ayudarías a sufragar su coste.
Respecto al tema del usuario y la contraseña revisa los pasos del tutorial. Yo lo probé con un cliente Windows 7 y me funcionó correctamente.
Saludos
Duisculpa no haya reconocido mi error , todo por falta de tiempo, tu tienes razón
Me parece que «tiempo» es lo que nos falta a todos. Gracias por pasarte!
Hola,
Un buen blog post, Gracias.
No e podido que la carpeta sea invisible.
Mi configuracion es la siguiente:
smb.conf:
[OBX-Backup]
path = /home/Backup
hide unreadable = yes
hide unwriteable files = yes
access based share enum = yes
getfacl SIPC:
# file: SIPC
# owner: DLeno
# group: users
user::rwx
user:John.Doe:—
group::rwx
mask::rwx
other::rwx
permisos de la carpeta:
drwxrwxrwx+ 2 DLeno users 4096 Jul 22 13:21 SIPC
Le doy restart a samba, monto el network drive como usuario John.Doe pero todavia me aparece «Access Denied» y no invisible, que estoy haciendo mal? Gracias..
Hola Jorge,
La parte de valid users, write list, etc, la has añadido el fichero smb.conf?
Saludos!
hola amigo necesito ayuda cree una carpeta comprtida para windows ESTUDIANTES y DOCENTES dentro de estudiantes esta juan y pedro bn y de docentes alejando y sebastian bn los de docentes no pueden ver lo de estudiantes y estudiantes no pueden ver lo de docentes hasta hay bn.
mi problema es que dentro de ESTUDIANTES la carpeta que crea juan y sus archivos personales pedro los puede ver y manipulas como pudeo hacer que entre su mismo grupo no se vean sus carpetas personales
Hola, al estar en el mismo grupo, de hecho la idea del grupo, es que tengan los mismo permisos.
Tendrías que modificar de manera manual los permisos ACL de ambas subcarpetas.
Saludos