Para que esa administracin sea posible, samba dispone de su propia base de datos de 'usuarios samba' pero como los usuarios utilizan otros recursos del servidor como carpetas e impresoras, es necesario que estn creados en el sistema Unix. Resumiendo, podemos decir que para poder ser usuario de samba, es necesario disponer de una cuenta de usuario en Unix y de una cuenta de usuario en samba.
Todo lo relativo a la creacin y administracin de usuarios y grupos en Unix se puede consultar en el apartado Usuarios del sistema Unix.
En los Sistemas Unix, la gestin de los permisos que los usuarios y los grupos de usuarios tienen sobre los archivos se realiza mediante un sencillo esquema de tres tipos de permisos (lectura, escritura y ejecucin) aplicables a tres tipos de usuarios (propietario, grupo propietario y resto). Este sencillo esquema se desarroll en los aos 70 y an hoy resulta adecuado para la gran mayora de los sistemas en red que podamos encontrar en cualquier tipo de organizacin, desde pequeas redes a las ms grandes. Es cierto que tiene algunas limitaciones pero la ventaja de ser sencillo hace que su administracin sea fcil y su rendimiento muy elevado.
En los Sistemas Microsoft Windows, la gestin de los permisos que los usuarios y los grupos de usuarios tienen sobre los archivos, se realiza mediante un complejo esquema de listas de control de acceso (ACLs = Access Control Lists) para cada carpeta y cada archivo. El sistema de ACLs tiene la ventaja de ser mucho ms flexible que el sistema Unix ya que se pueden establecer ms tipos de permisos, establecer permisos solo a algunos usuarios y algunos grupos, denegar permisos, etc..., pero como hemos comentado anteriormente, en la mayora de los casos, con las prestaciones del Sistema Unix es suficiente. En el lado contrario, el sistema de ACLs es ms complejo de administrar y ms lento ya que antes de acceder a las carpetas o archivos, el sistema debe comprobar listas mientras que en Unix hace una operacin lgica de los bits que especifican los permisos lo cual es muchsimo ms rpido.
Samba tiene tambin implementado el sistema de ACLs y se gestiona utilizando el comando smbcacls, no obstante, la recomendacin es utilizar el sistema de gestin de permisos de Unix. Aunque existan carpetas compartidas con samba, en ltima estancia imperan los permisos de Unix. Por ejemplo, si tenemos compartida una carpeta llamada 'profesores' con permisos de escritura para el grupo profesores, todos los usuarios que pertenezcan al grupo profesores podrn 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 profesores, ningn profesor podr ver su contenido aunque est dentro de una carpeta compartida.
Para realizar una gestin eficaz de usuarios, grupos y permisos, se recomienda utilizar los permisos de Unix que permiten asignar permisos de lectura, escritura y ejecucin al usuario propietario del archivo, al grupo propietario del archivo y al resto de usuarios del sistema.
Puede ocurrir que exista contradiccin entre los permisos del sistema Unix y los permisos del recurso compartido en samba, por ejemplo, podemos tener una carpeta compartida llamada almacen-software con permisos Unix de lectura, escritura y ejecucin para todos, en cambio si en el archivo de configuracin de samba, dicho recurso tiene el parmetro read only = yes, no ser posible realizar cambios ya que est compartido con permiso de 'solo lectura'. Cuando los permisos Unix se contradicen con los permisos samba, el permiso efectivo es el ms restrictivo de los dos.
Para simplificar la administracin de los permisos, se recomienda no ser restrictivos en los permisos de recurso compartido con samba y aplicar los permisos en el Sistema Unix, de esta forma, adems de ser efectivos cuando accedemos a travs de samba, tambin lo seguirn siendo si accedemos de otra forma como por ssh, ftp, o nos sentamos en la consola del servidor.
Es posible que al principio de curso haya que crear varios usuarios, uno para cada alumno y uno para cada profesor. Cuando se trata de crear un gran nmero de usuarios, lo mejor es automatizarlo con un script que coja los nombres de usuario de un archivo. Previamente tenemos que exportar los nombres y apellidos de los alumnos. Otra opcin es crear el script con una hoja de clculo. Podemos programar frmulas para crear un login de usuario en funcin de su nombre real.
Creamos un usuario en la maquina, y despus creamos ese usuario local como usuario de Samba, para poder tener acceso a los recursos compartidos por Samba:
Crear usuario local en la maquina Linux:
Para poder gestionar correctamente los permisos de los usuarios de Samba, hemos de crear dichos usuarios como usuarios locales en el servidor, para as poder gestionar los permisos de acceso de dichos usuarios a los directorios que conformarn los recursos compartidos.
Creamos el grupo administracin y el grupo jefes:
Es importante resear que si no otorgamos los permisos del directorio en Linux, al intentar acceder al recurso compartido, aunque hayamos especificado qu grupos de usuarios de samba pueden leer o escribir en dichos directorios (especificado en el archivo smb.conf), Linux aplicar los permisos ms restrictivos.
Por tanto, aplicamos permiso recursivo 775 al directorio (al ser recursivo se aplicar a los subdirectorios y ficheros que se creen despus dentro de ese directorio), y cambiamos el propietario de los recursos al grupo que deseamos que tenga permisos de escritura; y despus en Samba definimos los grupos que pueden leer y/o escribir.
As que sobre el directorio administracion, en el cual queremos aplicar una configuracin de lectura y escritura basada en grupos (solo podr escribir el grupo administracion), ejecutamos:
Samba utiliza una base de datos de usuario propia dnde se registran usuarios del sistema y sus contraseas SMB. Solo los usuarios que tengan esta informacin en la base de datos de usuarios de samba podrn utilizar samba con credenciales de usuario.
Una contrasea SMB asociada a una cuenta de usuario permite a dicho usuario autentificarse a travs de Samba para acceder a recursos compartidos con credenciales de dicho usuario en el sistema. Esto nos permitir compartir recursos a travs de SMB/CIFS con samba accesibles con ACLs propias de acceso por usuarios, grupos, operaciones, etc.
Para que un usuario del sistema se autentifique a travs de samba y pueda acceder como usuario autentificado a los recursos compartidos, tiene que tener una entrada creada con una contraseas SMB en el fichero de cuentas de usuario de samba.
De esta forma impedimos que un usuario concreto pueda acceder a recursos compartidos a travs de samba. Recuerda, si tenemos recursos compartidos con acceso de invitado o annimo, este usuario podr acceder a dichos recursos como invitado.
Esta seccin tiene una serie de parmetros de configuracin ya establecidos. De estos parmetros conocemos el parmetro comment y el read only. El primero, porque es obvio, aade un comentario al recurso compartido. El segundo read only, aparte de su significa lgico, ya lo hemos visto en otra entrada de este caso prctico.
Vamos a ver rpidamente qu hace cada uno de estos parmetros de configuracin para ir aprendiendo poco a poco los parmetros que tenemos disponibles para configurar las secciones de recursos compartidos que crearemos ms adelante. Esta informacin la tenis en la seccin dedicada a Samba, en concreto en el apartado Anlisis de parmetros de configuracin.
Cuando creamos un fichero en linux, por ejemplo un fichero de texto plano, el sistema operativo tiene que asignarle un propietario, un grupo y unos permisos para propietario, grupos y resto de usuarios. Esto lo hace el sistema operativo en base a la configuracin por defecto del propio sistema.
Sin embargo, cuando creamos un directorio o un fichero a travs de samba, Qu permisos se le aplican?. Gracias a estos dos parmetros podemos establecer qu permisos se asignarn a un fichero o directorio al crearlo a travs de samba (cuando copiamos un fichero o creamos /copiamos un directorio)
El detalle est en el cero dentro de esta mscara. Todos los permisos que pongamos a cero en esta mscara estarn a cero en el sistema de ficheros destino. Si establecemos un bit a uno, el resultado final depender de los permisos que se utilicen por defecto en el sistema de ficheros destino.
Vamos a habilitar la cuenta de ramonam y vamos a probar a acceder de nuevo. Para habilitar la cuenta de usuario en samba de ramonam vamos a usar smbpasswd con la opcin -e seguida del nombre del usuario como root.
Samba no nos deja acceder a un directorio personal de un usuario que sea distinto del usuario cuyas credenciales estamos utilizando. Si nos fijamos, segn los permisos de acceso en el sistema de ficheros local del servidor si podramos acceder a ese directorio como ramonam.
Para ello utilizaremos el parmetro de configuracin valid users. Como no sabemos como utilizar estge parmetro podemos consultar la pgina de manual de smb.conf o consultar el apartado Anlisis de parmetros de configuracin dentro de la entrada dedicada a Samba.
en esta primera configuracin lo que hemos hecho es que solo vamos a permitir el acceso a marinapg y a los miembros del grupo educatica. Adems, nos cercioramos de que nunca podr acceder a su directorio personal el usuario ramonam, aunque pertenezca a educatica.
Hemos utilizado una arroba para determinar que educatica es un grupo y no una cuenta de usuario. Al usar arroba, Samba buscar este grupo como grupo NIS y si no est, lo buscar como grupo local del sistema. Si tenemos claro que educatica es un grupo local del sistema, deberamos utilizar un caracter + en lugar de la @
Al ejecutarlo nos damos cuenta de que si no existe el grupo nos da un pequeo error. No pasa nada, porque queramos un script rpido para salir del paso. Si no existe el grupo, lo creo a mano. Y lo volvemos a ejecutar.
d3342ee215