Permisos de archivos en Linux
Sin profundizar demasiado en el tema, voy a explicar como maneja Linux los permisos de archivos, para entender como funciona, y poder configurarlo fácilmente.
Si lo que queréis es la versión extendida, aquí os dejo un par de enlaces, en los que se explica de una manera más completa:
http://www.ant.org.ar/cursos/curso_intro/x1439.html
Voy a empezar, explicándolo de una manera gráfica, que seguro que es algo más intuitiva. Cuando abrimos las propiedades con el botón derecho del ratón, en cualquier archivo o directorio, veremos una pantalla como esta:
En nautilus: (a mi parecer, un poco complicada su forma de visualización)
En pcmanfm: (más sencillo imposible)
Bien, ahora vamos a ver que significa cada parte:
Hay tres secciones, el propietario, el grupo, y los otros usuarios que no pertenecen al grupo marcado. Cada uno de estos colectivos, tiene tres clases de permisos. Lectura (poder leer el archivo), escritura (editar, y borrar el archivo), y ejecución (el archivo podrá ser ejecutado). Estas opciones pueden aplicarse a un archivo, o a un directorio.
En las imágenes mostradas arriba, podemos ver un directorio que se encuentra en mi partición de datos, que alberga música. El propietario soy yo, con permisos de lectura, escritura, y ejecución, mientras que los demás usuarios, pueden escuchar esa música, pero no borrarla o editarla, de manera que podemos estar tranquilos.
Solo podremos cambiar los permisos, de los archivos y directorios que seamos dueños (a no ser que los editemos como root), lógico no? Bien, ahora que ya hemos entendido como funcionan los permisos, vamos a profundizar un poco, y ver como gestionarlos desde la terminal (puede sernos muy útil).
Con el comando, ls -la (ls para listar, -l para mostrar los permisos, y -a para mostrar archivos ocultos), veremos una lista como esta en cualquier directorio (cojo los ejemplos de ant.org):
[shrek@pantano:~]$ ls -la total 13 drwxr-sr-x 2 shrek user 1024 May 2 09:04 . drwxrwsr-x 4 root staff 1024 Apr 17 21:08 .. -rw------- 1 shrek user 2541 May 2 22:04 .bash_history -rw-r--r-- 1 shrek user 164 Apr 23 14:57 .bash_profile -rw-r--r-- 1 shrek user 55 Apr 23 14:44 .bashrc -rwxrwxr-x 1 shrek user 0 Apr 14 19:29 a.out -rwxrwxr-x 1 shrek user 40 Apr 30 12:14 hello.pl -r-------- 1 shrek user 64 Apr 29 14:04 hola -rwxrw-r-- 1 shrek user 337 Apr 29 13:57 lista -rw-rw-r-- 1 shrek user 40 Apr 30 12:31 listador -rw-rw-r-- 1 shrek user 0 May 2 09:04 null -rwxrwxr-x 1 shrek user 175 Apr 30 12:30 prue.pl -rwxrwxr-x 1 shrek user 56 Apr 23 15:08 que.sh
Vemos, que se listan 10 caracteres, que nos dan la información que necesitamos, vamos a verlo uno por uno, una vez entendido, es muy fácil de interpretar. El primero, nos dice que tipo de archivo o directorio es:
| Contenido | Significado |
|---|---|
| - | Archivo común |
| d | Directorio |
| c | Dispositivo de caracteres (tty o impresora) |
| b | Dispositivo de Bloque (usualmente disco rígido o CD-ROM) |
| l | Enlace simbólico |
| s | Socket |
| p | Pipe |
Ahora vamos, a ver que significan los siguientes caracteres, que son los que nos importan:

Como veis, es lo mismo que nos mostraba la interface gráfica, 3 subgrupos, de 3 caracteres, el primero es permiso de lectura (r de read), el segundo escritura (w de write), y el tercero de ejecución (x execute).
Para cambiar los permisos, usaremos el comando chmod en una terminal. Agregaremos permisos con el símbolo mas “+” y los quitaremos con el símbolo “-”. También tenemos que especificar a que grupo se los estamos aplicando, al propietario:
a: aplicar a todos
u: aplicar al propietario
g: aplicar al grupo
o: aplicar a terceros
Pongo un par de ejemplos, para que se entienda mejor:
chmod a+x archivo
Le estaremos agregando permisos de ejecución (x), para todos.
chmod go-w archivo
Ahora en cambio, le estamos quitando los permisos de escritura (w), a los miembros del grupo, y a terceros
De todas, maneras, hay una manera más sencilla, de hacer estos cambios, y es usando el sistema octal. Para los que sepáis un poco de matemáticas, o tengáis curiosidad, os explico de donde salen los números que vamos a ver a continuación. Con este sistema, a cada privilegio, se le aplica un número, siguiendo el sistema octal: el bit x es 20 = 1, el bit w es 21 = 2, el bit r es 22 = 4.
Resumiendo:
r = 4
w = 2
x = 1
Ahora haciendo simples sumas, podemos nombrar cualquier permisos mediante números de 3 dígitos (el primero para el propietario, el segundo para el grupo, y el tercero para terceros).
| Valor | Descripción |
| 700 | El propietario tiene permisos de lectura, escritura y ejecución; los demás no pueden ni acceder (ejemplo, la home) |
| 744 | El propietario lectura, escritura y ejecución, el grupo y otros solo ejecución lectura |
| 755 | El propietario lectura, escritura y ejecución, el grupo y otros pueden leer y ejecutar el archivo. |
| 777 | El archivo puede ser leído, escrito y ejecutado por quien sea. |
| 640 | El usuario propietario puede leer y escribir, el grupo puede leer el archivo y otros no pueden hacer nada. |
Solo tenemos que sumar los ingredientes que queramos, para saber el número que debemos aplicar, es bastante sencillo y fácil de recordar. Luego aplicamos el valor, con el comando chmod:
chmod 755 archivo
Ahora, por últimos, vamos a ver como cambiar el propietario o el grupo al que pertenece un archivo. Lo haremos con el comando chown. Indicaremos el nombre del propietario nuevo, y también podemos agregar seguido de un punto, el nombre del grupo, si queremos cambiarlo.
chown pepito archivo.txt
Nombra a pepito propietario del archivo
chown pepito.amigos archivo.txt
Nombra a pepito propietario del archivo y además cambia el grupo a “amigos”.
chown .amigos archivo.txt
Cambia el grupo a “amigos”, pero mantiene el mismo propietario de archivo.
Eso es todo. Esto nos servirá para entender mejor como maneja linux los permisos, y poder solucionar pequeños errores que nos encontremos, o administrar mejor nuestro sistema, sobretodo si hay más de un usuario en el mismo, y no queremos llevarnos sorpresas.





Últimos comentarios