Permisos en GNU/Linux

Para evitar que otros usuarios accedan a nuestros ficheros GNU/Linux al igual que otros sistemas UNIX utiliza permisos y cada usuario puede acceder unica y exclusivamente a aquellos ficheros para los cuales tiene concedido acceso.

Dado que en los sistemas UNIX todo son ficheros es importante el conocer bien el mecanismo que otorga privilegios para el acceso a los ficheros.

Los permisos de los ficheros se almacenan utilizando un entero de doce bits y se dividen en ternas:

Podemos utilizar ls -l para ver los permisos de un fichero:

[pcm@sal]$ ls -l admlinux.xml
-rw-r--r-- 1 jose users 1,8K 2007-04-08 18:38 admlinux.xml
[pcm@sal]$ 

La primera columna nos da los permisos. El primer carácter nos indica el tipo de fichero que es:

Los siguientes tres carácteres indican los permisos que tiene el propietario del fichero.

Los siguientes tres carácteres indican los permisos que tiene el grupo del propietario del fichero.

Los siguientes tres carácteres indican los permisos que tienen el resto de usuarios.

Tipos de permisos

Los permisos típicos que nos podemos encontrar son:

  • Lectura denotado como "r".

    • Fichero: Podemos leer el contenido del fichero.

    • Directorio: Podemos leer el contenido del directorio (mediante ls por ejemplo).

  • Escritura denotado como "w".

    • Fichero: Podemos modificar el contenido del fichero.

    • Directorio: Podemos modificar el contenido del directorio. Podemos crear y borrar ficheros dentro del directorio.

  • Ejecución denotado como "x".

    • Fichero: Podemos ejecutar el fichero.

    • Directorio: Podemos entrar al directorio (mediante cd por ejemplo).

Cambio de permisos

Sólo el root y el propietario del fichero podrán cambiar los permisos de los ficheros.

Para hacerlo se utiliza el comando chmod.

Sugerencia

chmod sólo actua sobre ficheros. Si queremos que actue de forma recursiva sobre todos los directorios tendremos que utilizar el flag -R.

Cambiar permisos de forma intuitiva

Para cambiar permisos de forma intuitiva utilizaremos "u" para hacer referencia a los permisos del usuario, "g" para hacer referencia a los permisos del grupo y "o" para hacer referencia a los permisos del resto de usuarios.

Además utilizaremos "=" para establecer unos permisos en concreto, "+" para añadir permisos a los ya existentes y "-" para quitar permisos:

[jose@sal]$ ls -l evms.xml
-rw-r--r-x 1 jose jose 70992 2007-04-09 00:21 evms.xml
[jose@sal]$ chmod u=rwx,g+w,o-x evms.xml
[jose@sal]$ ls -l evms.xml
-rwxrw-r-- 1 jose jose 70992 2007-04-09 00:21 evms.xml
[jose@sal]$ 

Sugerencia

Si utilizamos el flag -v nos informa del resultado.

Cambiar permisos en octal

El método anterior es muy intuitivo, pero engorroso. Es posible utilizar notación octal para establecer los permisos. Al principio cuesta acostumbrarse, pero al poco tiempo es más intuitivo que el método anterior.

Se utiliza notación octal porque con tres digitos en binario se pueden representar ocho números diferentes.

Para poner los permisos en octal se pone a uno el permiso a establecer y a cero el que no se quiere conceder:

Tabla 8.1. Permisos en octal

 PropietarioGrupoResto
Permisosrwxrwxrwx
Binario111101100
Octal754

Para establecer estos permisos en octal:

[root@sal]# chmod 754 admlinux.xml
[root@sal]# 

Permisos por defecto

Cuando creamos un fichero se crea con unos permisos por defecto. Estos permisos están especificados por el umask:

[root@sal]# umask
0022
[root@sal]# umask -S
u=rwx,g=rx,o=rx
[root@sal]# 

Para determinar la máscara a utilizar se hace al contrario que con los permisos, es decir se pone a uno los permisos que se quieren quitar:

Tabla 8.2. Máscara en octal

 PropietarioGrupoResto
Permisosrwxrwxrwx
Binario000010110
Octal026

Para establecer la máscara:

[root@sal]# umask 026
[root@sal]# umask -S
0026
[root@sal]#