Página siguiente Página anterior Índice general

8. Permisos de archivos

Al ser Unix un sistema multiusuario, los archivos de cada usuario deben ser protegidos del resto de los usuarios. Lo mismo ocurre con los archivos del sistema (programas, configuraciones, etc.). Esto tiene que ver no sólo con la confidencialidad de la información, sino también con la protección de errores involuntarios por parte de los usuarios. Para ello se utiliza un sistema de “permisos de archivos”. Este mecanismo permite que archivos y directorios “pertenezcan” a un usuario en particular. Por ejemplo, como diego creó archivos en su directorio “home”, diego es el propietario de esos archivos y tiene acceso total a ellos.

Unix también permite que los archivos sean compartidos entre usuarios y grupos de usuarios. Si diego lo desea, podría restringir el acceso a sus archivos de forma que ningún otro usuario pueda acceder a ellos.

8.1 Tipos de permisos

Cada archivo pertenece a un usuario y a un grupo en particular. Un grupo es un conjunto de usuarios definido (cada usuario pertenece al menos a un grupo, pero puede pertenecer a varios).

Los grupos usualmente son definidos por el tipo de usuarios que acceden al sistema. Por ejemplo, en un sistema Unix de una universidad, los usuarios pueden ser divididos en los grupos estudiantes, dirección, profesores e invitados. Hay también unos pocos grupos definidos por el sistema (como bin y daemon) que son usados por el propio sistema para controlar el acceso a los recursos. Normalmente los usuarios comunes no pertenecen a estos grupos.

Los permisos están divididos en tres tipos: lectura, escritura y ejecución. Estos permisos pueden ser fijados para tres clases de usuarios: el propietario del archivo o directorio, los integrantes del grupo al que pertenece y todos los demás usuarios.

El permiso de lectura permite a un usuario leer el contenido del archivo o en el caso de un directorio, listar el contenido del mismo (usando ls).

El permiso de escritura permite a un usuario escribir y modificar el archivo (inclusive, eliminarlo). Para directorios, el permiso de escritura permite crear nuevos archivos o borrar archivos ya existentes en el mismo.

Por último, el permiso de ejecución permite a un usuario ejecutar el archivo si es un programa. Para directorios, el permiso de ejecución permite al usuario ingresar al mismo (por ejemplo, con el comando cd).

8.2 Interpretando los permisos de archivos

Veamos un ejemplo del uso de permisos de archivos. Usando el comando ls con la opción “-l” se mostrara un listado “largo” de los archivos, el cual incluye los permisos.

/home/diego/nuevo$ ls -l cosas

-rw-r--r-- 1 diego users 505 Mar 13 19:05 paco

/home/diego/nuevo$

El primer campo representa los permisos del archivo. El tercer campo es el propietario del mismo (diego), el cuarto es el grupo al cual pertenece el archivo (users) y el último campo es el nombre del archivo (paco).

La cadena “-rw-r--r-” nos informa, por orden, los permisos para el propietario, los usuarios del grupo y el resto de los usuarios.

El primer carácter de la cadena de permisos (“-”) representa el tipo de archivo. El “-” significa que es un archivo regular, “d” indicaría que se trata de un directorio. Los siguientes tres caracteres (“rw-”) representan los permisos para el propietario del archivo, diego. Éste tiene permisos para leer (r) y escribir (w) en el archivo paco.

Como ya mencionamos, además de los permisos de lectura y escritura existe el permiso de ejecución, representado por una “x”. Como hay un “-” en lugar de la “x”, significa que diego no tiene permiso para ejecutar ese archivo. Esto es correcto, puesto que paco no es un programa. Por supuesto, como el archivo es de diego, él puede cambiar los permisos, dándose a sí mismo permiso de ejecución, como veremos más adelante.

Los siguientes tres caracteres, “r--”, representan los permisos para los miembros del grupo al que pertenece el archivo (en este caso, users). Como sólo aparece una “r” cualquier usuario que pertenezca al grupo users puede leer este archivo, pero no modificarlo ni ejecutarlo.

Los últimos tres caracteres, “r--”, representan los permisos para cualquier otro usuario del sistema (que no sea diego ni pertenezca al grupo users). Nuevamente, como sólo está presente la “r”, los demás usuarios pueden leer el archivo, pero no escribir en él o ejecutarlo.

Aquí tenemos otros ejemplos de permisos de grupo.

-rwxr-xr-x

El propietario del archivo puede leer, escribir y ejecutar el archivo. Los usuarios pertenecientes al grupo del archivo y todos los demás usuarios pueden leer y ejecutar el archivo.

-rw-------

El propietario del archivo puede leer y escribir. Nadie más puede acceder al archivo.

-rwxrwxrwx

Todos los usuarios pueden leer, escribir y ejecutar el archivo.

drwxr-xr-x

El propietario del directorio puede leer, escribir y entrar al mismo. Los usuarios pertenecientes al grupo del directorio y todos los demás usuarios pueden leer e ingresar al directorio.

8.3 Dependencias

Es importante remarcar que los permisos de un archivo también dependen de los permisos del directorio en el que reside. Por ejemplo, aunque un archivo tenga los permisos “-rwxrwxrwx”, otros usuarios no podrán acceder a él a menos que también tengan permiso de lectura y ejecución para el directorio en el cual se encuentra el archivo. Si diego quiere restringir el acceso a todos sus archivos, podría simplemente poner los permisos de su directorio “home”, /home/diego, como “drwx------”. De esta forma ningún usuario podrá acceder a su directorio y, por lo tanto, tampoco a ninguno de sus archivos o subdirectorios. Así diego no necesita preocuparse de los permisos individuales de cada uno de sus archivos.

En otras palabras un usuario, para acceder a un archivo, debe de tener permiso de ejecución de todos los directorios a lo largo del camino de acceso al archivo, además de permiso de lectura del archivo en particular.

La mayoría de los archivos usualmente tienen permisos “-rw-r--r--”, lo que permite a todos los usuarios leer los archivos, pero solamente a su propietario modificarlos. Los directorios usualmente tienen los permisos “drwxr-xr-x”, lo que permite a todos lo susuarios moverse y ver los directorios, pero solo permiten a su propietario poder crear o borrar archivos en ellos.

Si un usuario desea limitar el acceso de otros a un archivo en particular, puede asignarle los permisos “-rw-------. De la misma manera, poniendo los permisos de un directorio como “drwx------” no se permitirá el acceso a los demás usuarios.

8.4 Cambiando permisos

El comando chmod se usa para establecer los permisos de un archivo. Sólo el propietario puede cambiar los permisos del archivo (además, claro está, del administrador del sistema, el usuario root). La sintaxis de chmod es:

chmod [a,u,g,o][+,-][r,w,x] <archivos>

El primer parámetro indica a qué usuarios afecta: all, user, group u other (todos, el propietario, el grupo u otros usuarios; respectivamente). Luego se especifica si se están añadiendo permisos (+) o quitándolos (-). El tercer parámetro especifica qué tipo de permiso estamos añadiendo o quitando: read, write o execute. Finalmente, se indican los nombres de los archivos a afectar. Algunos ejemplos de la utilización de chmod son:

chmod a+r paco

Da a todos los usuarios acceso de lectura al archivo paco.

chmod +r paco

Igual al anterior. Si no se indica a, u, g u o por defecto se toma a.

chmod og-x paco

Quita permisos de ejecución de paco a todos los usuarios excepto al propietario.

chmod u+rwx paco

Permite al propietario leer, escribir y ejecutar el archivo paco.

chmod o-rwx paco

Quita permisos de lectura, escritura y ejecución del archivo paco a todos los usuarios menos al propietario y a los usuarios del grupo.

chmod og-r paco luis

Quita permisos de lectura de los archivos paco y luis a todos los usuarios excepto al propietario.


Página siguiente Página anterior Índice general