10 de junio de 2011

Gestión de usuarios, grupos y permisos de samba


Samba es un servicio para la administración de usuarios y para poder gestionar los permisos de los usuarios. En función del usuario que acceda, samba se comportará de una forma u otra para que cuando accede un usuario tenga permisos limitados y cuando accede un administrador, dispondrá de todos los permisos.

Para ello, samba dispone de su propia base de datos de "usuarios" pero es necesario que estén creados en el sistema Linux.

Resumiendo, que para poder ser usuario de samba, es necesario disponer de una cuenta de usuario en Linux y de una cuenta de usuario en samba.

Creación de un usuario de samba

Para crear un usuario de samba debemos utilizar el comando smbpasswd, pero antes debemos haber creado el usuario en Linux. Por ejemplo, si queremos crear en Linux al usuario antonio, haremos lo siguiente:

aceitunero@Pc15:~$ sudo useradd antonio

Si deseamos que el usuario que hemos creado pueda acceder a los servicios samba, debemos hacer al usuario "antonio” sea usuario de samba ejecutando el siguiente comando:

aceitunero@Pc15:~$ sudo smbpasswd -a antonio

Con -a indicamos que añada al usuario, después nos pedirá la contraseña que deseamos poner al usuario.

Eliminar un usuario de samba

Para eliminar un usuario de samba debemos ejecutar smbpasswd con la opción -x, ejemplo:

aceitunero@Pc15:~$ sudo smbpasswd -x antonio

El usuario desaparecerá de la base de datos de los usuarios de samba aunque seguirá siendo un usuario de Linux.

Otras opciónes de smbpasswd:

  • -d: Deshabilitar un usuario.
  • -e: Habilitar un usuario.
  • -n: Usuario sin password, pero el parámetro passwords tiene que ser null (passwords = null) en sección "global".
  • -m: Indica que es una cuenta de máquina.

Para más información se puede consultar la página del manual de smbpasswd:

aceitunero@Pc15:~$ man smbpasswd

Gestión de grupos y permisos con samba

La gestión de grupos y permisos de usuarios y grupos es muy diferente en Sistemas Linux y en Sistemas Windows.

En los Sistemas Linux, la gestión de los permisos que los usuarios y los grupos de usuarios tienen sobre los archivos se realiza mediante tres tipos de permisos (lectura, escritura y ejecución) aplicables a tres tipos de usuarios (propietario, grupo propietario y resto).

Este sencillo esquema se desarrolló en los años 70 y aún hoy resulta adecuado para la gran mayoría de los sistemas en red, aunque tiene algunas limitaciones, las ventaja de ser sencillo hace que su administración sea fácil y su rendimiento elevado.

En los Sistemas Windows, la gestión de los permisos que los usuarios y los grupos de usuarios, se realiza mediante un complejo esquema de listas de control de acceso (ACLs, Access Control Lists o Listas de Control de Acceso) para cada carpeta y cada archivo.

El sistema de ACLs tiene la ventaja de ser mucho más flexible que el sistema Linux ya que se pueden establecer más tipos de permisos, establecer permisos solo a algunos usuarios o algunos grupos, denegar permisos, etc..., pero las prestaciones del Sistema Linux es suficiente.

El sistema de ACLs es más complejo de administrar y más lento ya que antes de acceder a las carpetas o archivos, el sistema debe comprobar listas mientras que en Linux hace una operación lógica de los bits que especifican los permisos por lo cual es más rápido.

Samba también tiene implementado el sistema de ACLs y se gestiona utilizando el comando smbcacls, pero la recomendación es utilizar el sistema de gestión de permisos de Linux.

Aunque existan carpetas compartidas con samba, en siempre imperan los permisos de Linux. Por ejemplo, si tenemos compartida una carpeta llamada "contabilidad" con permisos de escritura para el grupo contables, todos los usuarios que pertenezcan al grupo contables podrán realizar cambios en la carpeta, pero si dentro de dicha carpeta existe otra llamada "confidencial" sobre la cual no tiene permiso para entrar el grupo contables, ningún contable podrá ver su contenido aunque esté dentro de una carpeta compartida.

Para realizar una gestión eficaz de usuarios, grupos y permisos, se recomienda utilizar los permisos de Linux que permiten asignar permisos de lectura, escritura y ejecución al usuario propietario del archivo, al grupo propietario del archivo y al resto de usuarios del sistema.

Sobrecarga de permisos

Puede ocurrir que exista contradicción entre los permisos del sistema Linux y los permisos del recurso compartido en samba, por ejemplo, podemos tener una carpeta compartida llamada "almacén" con permisos Linux de lectura, escritura y ejecución para todos, en cambio si en el archivo de configuración de samba, dicho recurso tiene el parámetro read only = yes, no será posible realizar cambios ya que está compartida con permiso de "solo lectura". 
 
Cuando los permisos Linux se contradicen con los permisos samba, tendrá efecto el permiso más restrictivo de los dos.

Para simplificar la administración de los permisos, se recomienda no ser restrictivos en los permisos de los recursos compartidos con samba y aplicar los permisos en el Sistema Linux, de ésta forma, además de ser efectivos cuando accedemos a través de samba, también lo seguirán siendo si accedemos de otra forma como por SSH, FTP o en la consola del servidor.

Espero que os sea de ayuda a todos un saludo:

Antonio

4 comentarios:

pulchrum dijo...

Gracias por el post. Es muy util.
Saludos!!

Aceitunero dijo...

A vosotros por vuestro interés y participación. Un saludo.

Anónimo dijo...

He leido exactamente lo mismo en la pagina del intef

Aceitunero dijo...

No lo sé, pero es posible, y gracias por tu comentario y darnos otros fuente de información

Publicar un comentario

No olvides dejar tu comentario.