Introducción
Antes de empezar a aprender los distintos comandos de Linux para asignar y modificar permisos, tenemos que saber que Linux divide los permisos de dos formas diferentes:
- Por el tipo de permiso. En Linux existen los permisos de lectura, escritura y ejecución.
- Lectura: Permite visualizar el contenido de un archivo. Se representa con la letra r (read).
- Escritura: Permite modificar el contenido de un archivo. Se representa con la letra w (write).
- Ejecución: Permite ejecutar un archivo. Se representa con la letra x (execute).
- Por los usuarios a los que afecta. Los permisos se pueden asignar al usuario, a su grupo, o a otros.
- Usuario: El usuario poseedor del archivo. Por defecto es el creador del archivo, aunque es posible cambiar el poseedor de un archivo con el comando chown.
- Grupo: El grupo al que pertenece el usuario poseedor del archivo.
- Otros: El resto de usuarios del sistema.
Visualizar permisos
Para visualizar los permisos de archivos o directorios podemos emplear el comando ls -l.

Vamos a analizar la salida del comando. Lo primero que vemos es que hay 3 elementos: carpeta1, fichero1.txt y fichero2.txt.
Lo siguiente es analizar qué tipo de elementos son. En Linux, los directorios estarán siempre marcados con una d delante (de directory), y los ficheros con un guion –. Por tanto, carpeta1 es un directorio, y fichero1.txt y fichero2.txt son ficheros.
Después de eso tenemos una serie de letras o guiones intercalados. Para carpeta1, por ejemplo, tenemos lo siguiente: rwxrwxr-x.
Vamos a dividir esta cadena en 3 bloques de 3 caracteres cada uno. De manera que nos quedaría:
- rwx
- rwx
- r-x
¿Alguna idea de lo que puede ser? Si tienes la mente avispada, quizás ya te hayas dado cuenta de que está relacionado con lo que hemos comentado en la introducción: los tipos de permisos y los usuarios sobre los que se aplican. vamos a desgranar lo que significa cada bloque:
- rwx: El usuario tiene permisos de lectura, escritura y ejecución.
- rwx: El grupo tiene permisos de lectura, escritura y ejecución.
- r-x: El resto de usuarios tienen permisos de lectura y ejecución
Es decir, cada bloque de 3 caracteres indica los permisos con los que cuenta el usuario, su grupo y el resto de usuarios. Si la letra que corresponde al permiso aparece, quiere decir que se tiene el permiso, y si aparece un guion, no se tiene un permiso.
Por ejemplo, tres guiones — significarían que no se tiene ningún permiso, y r– significaría que solo se tiene permiso de lectura. Es importante notar que los permisos van en orden: primero lectura, luego escritura y por último ejecución.
Asignar permisos
Para asignar permisos a un archivo utilizamos el comando chmod (change mode, o cambiar modo en español). Este comando va acompañado de manera obligatoria de dos parámetros: los permisos que vamos a asignar y el fichero o directorio al que se los vamos a asignar.
Llegados a este punto tenemos que introducir una nueva forma de representar los permisos: en formato binario. ¿El motivo? Pues que a la hora de sobrescribir los permisos, podemos usar el formato de caracteres que ya hemos visto (rwx) o el formato binario (ceros y unos).
| Número octal | Número binario | Lectura | Escritura | Ejecución |
| 0 | 000 | 0 | 0 | 0 |
| 1 | 001 | 0 | 0 | 1 |
| 2 | 010 | 0 | 1 | 0 |
| 3 | 011 | 0 | 1 | 1 |
| 4 | 100 | 1 | 0 | 0 |
| 5 | 101 | 1 | 0 | 1 |
| 6 | 110 | 1 | 1 | 0 |
| 7 | 111 | 0 | 0 | 0 |
Sobrescribir permisos
Vamos a ver ahora dos formas diferentes de asignar todos los permisos (lectura, escritura y ejecución) a todo el mundo (al usuario, a su grupo y al resto).
chmod 777 fichero1.txt
chmod u,g,o=rwx fichero1.txt
Estos dos comandos son equivalentes, aunque el primero es visiblemente más sencillo si se maneja el formato octal con soltura.
Añadir permisos
chmod +rwx fichero1.txt
Quitar permisos
chmod -rwx fichero1.txt
