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.





Muy completa explicación, creo que me voy a guardar este apunte para futuras consultas, ya que no suelo recordar los comandos, solo los más basicos y que uso con mayor frecuencia.
Saludos.
La mayorÃa de las cosas que escribo aquÃ, es con ese fin, para poder recordarlas en un futuro. Es como un pequeño block de notas
Saludos!!