Compartiendo con SAMBA, segunda parte, permisos ACL

linux-logo-new-tux-crystalizedGeneralmente 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:

  1. apt-get -y install acl

Que nos daría un resultado similar al siguiente:

acl-en-samba-1En Red Hat y derivados vienen por defecto con el sistema.

He añadido más carpetas, para así poder jugar con los permisos ACL:

acl-en-samba-2Para 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:

acl-en-samba-3Comencemos. 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:

acl-en-samba-4La 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:

  1. setfacl -Rm u::---,u:user1:rwx,u:user2:rwx,u:user3:rwx /mnt/Contabilidad
  2. serfacl -Rm g::---,g:userbits:rwx /mnt/Contabilidad
  3. setfacl -Rm u::---,u:user1:rwx,u:user2:rwx,u:user3:rwx /mnt/Personal
  4. 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

  1. setfacl -Rm u:user2:---,u:user3:--- /mnt/Contabilidad/CRM
  2. setfacl -Rm u:user2:---,u:user3:--- /mnt/Contabilidad/Facturas
  3. 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:

acl-en-samba-5Es 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:

acl-en-samba-6Espero 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!