> Manuales > Manual de administración de servidores Linux

Instrucciones detalladas para aprender a manejar correctamente los permisos de los archivos en sistemas Linux / Unix, con el comando chmod.

Vamos a presentar un artículo de guía de uso del comando chmod de sistemas operativos Linux, o mejor dicho sistemas similares a Unix, ya que este mismo comando está disponible en el propio Unix, Linux y otros sistemas como MacOS.

Ofreceremos diversas explicaciones generales del comando y una serie de ejemplos prácticos para que se pueda entender bien.

Qué son los permisos de archivo

Como nos podemos imaginar, los permisos de archivo son las restricciones que tiene ese archivo para realizar operaciones con él. Estas operaciones pueden ser:

Cada archivo o directorio en sistemas Linux tiene una serie de permisos que se expresan a su vez en tres tipos de usuarios distintos.

Cuando hacemos un listado de directorio, usando el comando ls -l en un sistema Linux, o MacOS por ejemplo, se muestran los permisos para cada archivo o directorio, tal como aparece en la siguiente imagen.

Listado de directorio y permisos de archivo

Cómo se expresan los permisos de archivo

En la anterior imagen la parte donde se expresan los permisos está en un recuadro amarillo. Como puedes ver, está compuesta por varios caracteres que en principio podrían resultar difíciles de interpretar, por lo que los vamos a explicar.

Cada uno de los tipos de usuario y cada uno de los permisos que tiene cada tipo de usuario se expresan en grupos. Los grupos se estructuran como se puede ver en la siguiente imagen.

Tutorial del comando chmod

Como puedes ver, son tres grupos de tipos de usuario y para cada uno de ellos hay un caracter que indica si se puede leer, escribir, o ejecutar.

En un listado de directorio aparece una "r" si se puede leer. Para las modificaciones se indica una "w" y para las ejecuciones una "x". Si no tiene permisos para alguna de estas operaciones simplemente aparece un guión "-".

Comando chmod

Para cambiar los permisos de un archivo o directorio de un servidor con sistema Linux, tienes que utilizar el comando chmod.

En general, cualquier comando de linux o unix tiene una ayuda, que puedes ver invocando al comando, seguido con el parámetro -help. Algo como esto:

chmod --help

Este comando en concreto tiene varias sintaxis permitidas. De entre ellas por ejemplo puedes utilizar:

chmod [opciones] modo-en-octal fichero

Las opciones podemos indicarlas o no, según queramos. Opciones típicas son:


El modo en octal es un número en base 8 (octal) que especifique el permiso. Los números en octal se especifican empezando el número por un 0. Por ejemplo, 0777 es indica todos los permisos posibles para todos los tipos de usuario. 0666 indica que se dan permisos de lectura y escritura, pero no de ejecución. 0766 indica que se dan permisos de lectura y escritura, pero sólo tienen permiso de ejecución para los usuarios que son dueños del archivo. 0755 indica permisos para lectura y ejecución, pero escritura sólo para el usuario que es dueño del archivo.

Por ejemplo:

chmod 0777 archivo.txt
Asigna todos los permisos al archivo archivo.txt

chmod 0666 *
Asigna permisos de lectura y escritura, no de ejecución a todos los archivos y directorios del directorio donde ejecutamos el comando.

chmod -R 0644 *
Esto da permisos a todos los archivos y directorios del directorio donde se invoca el comando y de todos los directorios que cuelgan de él. Los permisos asignados son de lectura a todos los usuarios, de escritura sólo al dueño del archivo y de ejecución a nadie.

Otro modo de trabajo con chmod

Luego también se pueden asignar permisos de otra manera, utilizando otra posible sintaxis de chmod, que tal vez resulte más útil si no queremos tratar con los valores en octal.

chmod [opciones] modo[,modo]… fichero

Para ello tenemos que tener claros los distintos grupos de usuarios:


También hay que saber la letra que abrevia cada tipo de permiso:

Ejemplos

chmod o=rwx *
Asigna permisos de lectura, escritura y ejecución para los usuarios "otros" a todos los archivos de la carpeta

chmod a=rwx fichero.txt
Asigna todos los permisos a todos los usuarios para el archivo fichero.txt

chmod go= *
Quita todos los permisos para los usuario del grupo y los usuarios otros.

chmod u=rwx,g=rw,o= *
Da todos los permisos al dueño del fichero, a los del grupo del dueño le asigna permisos de lectura y escritura y a los otros usuarios les quita todos los permisos.

Nota:un espacio después de la coma "," en los distintos modos de permisos que se indiquen hace fallar el comando.

chmod a=r *
Da permisos únicamente de lectura a todos los tipos de usuario.

De un modo parecido a lo que acabamos de ver, también se pueden añadir o quitar permisos con los operadores + y -. Para ello se indica el tipo de usuario y el permiso que se resta o añade. Algo como esto:

chmod a-wrx *
Esto quita todos los permisos a todos los tipos de usuario.

chmod a+r,gu+w *
Este comando asigna permisos de lectura a todos los usuarios y permisos de escritura al dueño del archivo y el grupo del dueño.

chmod u=w,a+r *
Este comando asigna permisos de escritura al usuario dueño y a todos los usuarios les añade permiso de lectura.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual