Carpeta compartida en Linux
El funcionamiento de las autorizaciones sobre archivos y carpetas en un sistema operativo Linux está basado en tres tipos de acceso (lectura, escritura y ejecución) y en la pertenencia del archivo o carpeta a un usuario y grupo. De esta manera se indica para cada archivo o carpeta los permisos que tiene el propietario del archivo, los que tienen los usuarios que pertenezcan al grupo propietario, y los permisos que tienen el resto de usuarios. Un problema con el que es habitual encontrarse al usar este modelo, es cuando necesitamos crear grupos de usuarios y proporcionar acceso compartido sobre archivos a algunos de estos grupos. Esto suele ser algo relativamente sencillo de realizar con otros sistemas como los basados en listas de control de acceso (ACL), habitual en otros sistemas operativos como Windows, que permiten controlar las autorizaciones con mayor granularidad, sin embargo también es muy sencillo hacerlo en Linux con los permisos básicos, sin tener que montar ACL.
Supongamos que tenemos un equipo que utiliza toda la familia y que hay una serie de archivos a los cuales queremos restringir el acceso únicamente a los padres. El primer paso, una vez creados los usuarios para cada miembro de la familia, es crear un conjunto de grupos que nos agrupe de manera lógica a los usuarios. De esta manera podríamos tener un grupo “padres”, un grupo “hijos” y un grupo “familia” con todos los miembros.
Los permisos básicos sobre archivos y carpetas permiten configurar las autorizaciones sobre cada elemento, por lo que podríamos crear una carpeta que tuviera como propietario a “papa” y perteneciera al grupo “padres”, y asignarle permisos de lectura, escritura y ejecución únicamente al propietario y al grupo.
$ mkdir /home/datos/solopadres $ chgrp padres /home/datos/solopadres $ chmod 770 /home/datos/solopadres $ ls –l /home/datos drwxrwx--- patxi padres 1674 Ago 14 2013 solopadres |
Esta suele ser la solución primera que se nos ocurriría, sin embargo esta solución es incompleta y al poco de usarla nos daremos cuenta de que tiene una serie de limitaciones y comprobaremos que ambos padres pueden escribir y leer en la carpeta, pero que únicamente pueden modificar sus propios archivos y no los del otro usuario.
Por ejemplo, si creamos un archivo “prueba” con el usuario “patxi”, comprobaremos que se crea con “patxi” como usuario y grupo propietario y que los permisos únicamente permiten la modificación al usuario propietario “patxi”.
$ touch /home/datos/solopadres/prueba $ ls –l /home/datos/solopadres/prueba drwxr-xr-x patxi patxi 0 Ago 14 2013 prueba |
Para permitir un acceso global en lectura y modificación a los usuarios pertenecientes al grupo “padres”, es necesario cambiar un par de cosas. Lo primero es configurar el bit de “setgid” en la carpeta inicial. Este bit indica al sistema operativo que todos los archivos y carpetas que se creen dentro de la carpeta hereden como grupo propietario el grupo de la carpeta.
$ chmod g+s /home/datos/solopadres $ ls –l /home/datos drwxrws--- patxi padres 1674 Ago 15 2013 solopadres |
El carácter “s” en vez de la “x” de ejecución de grupo, indica que todos los archivos y carpetas que se creen dentro de la carpeta “solopadres” pertenecerán al grupo “padres”.
Los permisos por defecto con los que se crean archivos y carpetas es una configuración por defecto del sistema operativo que no es posible determinar por carpetas. Para saber qué configuración tiene un determinado usuario se utiliza el comando umask
. Este comando indica la máscara con la que se asignan los permisos a los nuevos archivos y carpetas. Lo más habitual suele ser tener una máscara 022, que asigna permisos 755 a carpetas y 644 a archivos.
$ umask
022 |
Para que los archivos se generen con permisos por defecto de escritura para el grupo es necesario modificar esta máscara, para lo cual habría que indicar la máscara 002 en el archivo /etc/profile. Hay que tener en cuenta que esta máscara afecta a todos los usuarios y a todos los archivos y carpetas que se creen.
Una vez realizados estos cambios, comprobaremos que cuando se cree un archivo en la carpeta se creará con el grupo y permisos apropiados para que cualquier usuario del grupo tengo acceso total a él.
$ touch /home/datos/solopadres/prueba2 $ ls –l /home/datos/solopadres/prueba2 drwxrwxr-x patxi padres 0 Ago 15 2013 prueba2 |
Más información
Los comentarios están cerrados.