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!