miércoles, 26 de septiembre de 2012

Primeros pasos con Samba File Server. Entendiendo la Jerarquía de permisos.

He decidido adelantar este pequeña entrada ya que un seguidor me ha pedido apoyo en ésta a veces "complicada" tarea de configurar Samba con los parámetros mínimos de autenticación y que funcione como uno quiere.
Como ya expliqué en una de mis primeras entradas sobre tema de permisos en Linux, linux y en general UNIX siguen jerarquías al momento de tomar decisiones que involucran la seguridad de un directorio ya sea que esté compartido o de acceso local en nuestro servidor.
Para explicarlo mejor pondré un ejemplo:
Creo un usuario sistemas y por default me crea su home:
root@pruebas:~# adduser sistemas
root@pruebas:~# ls -l /home
drwxr-xr-x 3 sistemas sistemas 3096 sep 26 11:30 sistemas

Como vemos se ha creado el home de sistemas con propietario y grupo sistemas y con permisos 755. Esto y muchos parámetros más se pueden cambiar modificando el archivo de configuración /etc/adduser.conf
Nota: En centos al crear un usuario el home por defecto tiene permisos 700 (Centos 5.8). Yo lo que hago es que cambiarle permisos y ponerle 770 para que solo el propietario y los miembros del grupo puedan realizar todas las tareas en esa carpeta en sus carpetas creadas.

Ahora si tenemos más usuarios en el sistema y queremos que alguno de ellos pertenezcan al grupo sistemas. Por ejemplo tenemos user1 user2 user3 creados y queremos que user1 user2 pertencezcan al grupo sistemas:
root@pruebas:~# adduser user1 sistemas && adduser user2 sistemas


Entonces user1 y user2 podrán crear carpetas dentro del home sistemas y cada carpeta tendrá los permisos respectivos de cada usuario (755)
root@pruebas:/home/sistemas# ls -l
drwxr-xr-x 2 user1 user1 4096 sep 26 11:30 dir_creado_por_user1
drwxr-xr-x 2 user2 user2 5096 sep 26 11:31 dir_creado_por_user2

Hasta aquí todo normal y entendible.
Pero que pasa si user3 quisiera leer el contenido del directorio creado por user1 dentro del directorio sistemas?
Deacuerdo a la tabla de permisos asignados a dicho directorio, cualquier usuario tiene al menos permisos de lectura sobre él. En teoría, el user3 podría leer el contenido; pero si lo intentamos nos saldrá permiso denegado.
Pero que pasó?  Recuerden que yo cambié los permisos a la carpeta sistemas de 755 a 770, osea que, a menos que el user3 sea el propietario o pertenezca al grupo sistemas, no podrá ni siquiera leer el contenido del interior de sistemas.
Y esto es explicable por la jerarquía de permisos. La teoría dice que UNIX realiza un bucle recursivo sobre los permisos de los directorios y aplica el permiso más restrictivo. Esto porque linux y en general UNIX realiza la operación booleana OR (multiplicación) sobre el equivalente en bits de los permisos.
Para nuestro caso, esto sería:
SISTEMA OCTAL      SISTEMA BINARIO
        770                          111 111 000   ------------------> permisos de sistemas
        755                          111 101 101   ------------------> permisos dentro de sistemas   ------------------------------------------------------------------
        750                          111 101 000 (aplicamos OR = multiplicación)

Entonces nos resultaría que cualquier usuario que no sea el propietario ni pertezca al grupo no podrá ejecutar alguna acción sobre los directorios creados dentro de la carpeta sistemas.

#!/bin/bash
echo "Fin primera parte. Pulse enter para continuar"
if [enter=!0]
echo "presionó tecla equivocada"
fi
echo "end"

3 comentarios:

  1. Bien men ...!!! pero pasame el smb.conf :p

    ResponderEliminar
  2. osea en pocas palabras un usuario que no sea ni del grupo ni el propietario del directorio no podra abrir el directorio?? >_<

    ResponderEliminar