Compartir con SAMBA carpeta con niveles?????? BREVE EXPLICACION :D:D

Andrés Ruz Salinas andres en efusion.tv
Vie Abr 15 16:53:22 CLT 2005


Lo siento pero me demoré un poco en recolectar la info que utilicé para
concretar mi tarea. Aquí les dejo una breve explicación.

Lo que yo necesitaba conseguir era compartir un repositorio de datos en la
cual yo tenía un directorio principal "Repositorio" (Padre) y dentro de ella
habían varios subdirectorios (hijos) y dentro de algunos de los
subdirectorios (hijos) habían otros subdirectorios (nietos). La estructura
es como sigue:

PADRE			HIJOS			NIETOS
-----			-----			------

					  |--	Logistica
		  |--	Operaciones	--|--	Produccion
		  |			  |--	Publico
		  |
		  |--	Corporativo
		  |
		  |			  |--	Proyectos
		  |--	Desarrollo	--|--	Librerias
Repositorio	--|			  |--	Publico
		  |
		  |--	Finanzas
		  |
		  |			  |-- Vendedor_1
		  |--	Ventas 	--|-- Vendedor_2
					  |-- Vendedor_3

Los usuarios que podrán entrar (en resumen) son 3: 
User_1(Todos los privilegios)
User_2(Escritura sólo "Logistica" y "Publico" dentro de "Operaciones")
User_3(Escritura sólo "Produccion" y "Publico" dentro del "Operaciones")
User_4(Lectura sólo "Publico" dentro de "Operaciones")

Nota: Sólo estoy hablando del directorio hijo "Operaciones" ya que en los
demás la tarea es la misma.

Antes de explicar el monito, debo decir que hay que tener instalado un
kernel que soporte acl para montar los discos de tal forma que en el fstab
se debe montar la partición de la siguiente forma:

/dev/hda8 /opt ext3 defaults,errors=remount-ro,acl 0

Obviamente ustedes deben cambiar los datos que corresponde con los suyos
("/dev/hda8" y "/opt").

Otra cosa que deben instalar son los atributos extendidos ACL (access
control list).

Después de esto, lo que yo hice fue sólo compartir el directorio de primer
nivel ("Repositorio") y asigne permisos de escritura a todos los usuarios
que trabajarán sobre este. Si no hiciera nada mas los usuarios podría hacer
lo que quisieran dentro de este directorio pero ahora es donde entran las
ACL's.

Una vez que se haya configurado SAMBA (como explique antes) hay que
especificar los permisos necesarios con ACL sobre cada uno de los
directorios. 
Antes que nada borro todas las ACL's existentes en el directorio:

setfacl -b -k -R /opt/Repositorio_Datos 
-b = borra las ACL's
-k = borra las ACL's por defecto
-R = realiza la tarea en forma recursiva.

Ahora explico en detalle la asignación de permisos de cada usuario:

----------
"User_1", es el usuario quien tiene todos los privilegios en el
"Repositorio". La asignación d privilegios es como sigue:

setfacl -m -R u:User_1:rwx /opt/Repositorio_Datos

el usuario [u:User_1:rwx] tiene 3 partes que son u, User_1 y rwx.
Donde esta la "u" puede ser u=usuario o g=grupo.
Donde esta el "User_1" no creo que deba explicar nada :D
Donde esta "rwx" son los permisos. r=lectura, w=escritura y x=ejecución.

Con la línea anterior se hace una asignación recursiva de permisos desde el
directorio "Repositorio" hacia dentro.

----------
"User_2", sólo tiene permisos de Lectura y Escritura en los directorios
"Logistica" y "Publico" dentro de "Operaciones" y es como sigue:

setfacl -m u:User_2:rx /opt/Repositorio_Datos/Operaciones
setfacl -m u:User_2:rwx /opt/Repositorio_Datos/Operaciones/Logistica
setfacl -m u:User_2:rwx /opt/Repositorio_Datos/Operaciones/Publico

----------
"User_3", sólo tiene permisos de Lectura y Escritura en los directorios
"Produccion" y "Publico" dentro de Operaciones y es como sigue:

setfacl -m u:User_3:rx /opt/Repositorio_Datos/Operaciones
setfacl -m u:User_3:rwx /opt/Repositorio_Datos/Operaciones/Produccion
setfacl -m u:User_3:rwx /opt/Repositorio_Datos/Operaciones/Publico

----------
"User_4", sólo Lectura en el directorio "Publico" dentro de "Operaciones" y
es como sigue:

setfacl -m u:User_4:rx /opt/Repositorio_Datos/Operaciones
setfacl -m u:User_4:rx /opt/Repositorio_Datos/Operaciones/Publico

---------------------------------

Con lo anterior ya hemos asignado los permisos y queda listo para usar el
directorio compartido. Hay que dejar claro que los permisos del sistema son
más fuertes que los de SAMBA por eso aunque el "User_1" en SAMBA tenga todos
los permisos y en el sistema tenga sólo permiso de lectura, prevalece el
permiso que entrega el sistema, o sea, el usuario sólo podrá leer.

Para revisar los permisos de las carpetas se usa "getfacl directorio".

Espero que este pequeño apunte les sirva ya que al final fue obrado por
todos los que me ayudaron.

Gracias nuevamente a todos.




Más información sobre la lista de distribución Linux