Comando Linux · 5 min read · Sep 14, 2025

Tutorial del comando chmod de Linux para principiantes

El comando chmod de Linux se utiliza para cambiar los permisos de archivos y directorios en un sistema operativo basado en Linux. Permite a los usuarios definir quién puede leer, escribir o ejecutar un archivo modificando la configuración de permisos. Los permisos se asignan típicamente a tres categorías: el propietario del archivo, el grupo al que pertenece el archivo y otros (todo el mundo). El comando chmod se puede usar con notación simbólica (por ejemplo, chmod u+x nombre_del_archivo para agregar permiso de ejecución para el usuario) o notación numérica (por ejemplo, chmod 755 nombre_del_archivo para establecer permisos específicos de lectura, escritura y ejecución para cada categoría). Este comando es esencial para gestionar el control de acceso en un sistema, asegurando que los archivos y directorios tengan la configuración de seguridad adecuada.

Por favor, ten en cuenta que todos los ejemplos e instrucciones mencionados en este tutorial han sido probados en Ubuntu 24.04, y la versión de chmod que hemos utilizado es 8.25.

Conceptos básicos de Chmod

Considera el siguiente ejemplo del comando ls:

La primera columna en la salida es de nuestro interés. Deja de lado el inicial ‘-‘ (que significa el tipo de archivo). Los campos restantes en la columna se pueden desglosar más como: rw-, rw- y r–. Estos son los permisos que tiene el propietario del archivo, el grupo al que pertenece el archivo y otros en relación con este archivo.

Esto significa que el propietario tiene permisos de lectura (r) y escritura (w), al igual que el grupo. Sin embargo, otros solo tienen permisos de lectura para el archivo. Por favor, ten en cuenta que estamos asumiendo que el usuario actual es el propietario del archivo.

Ahora, supongamos que el requisito es dar a todos el derecho a ejecutar este archivo. Aquí está cómo se puede hacer:

chmod +x script.sh

Aquí están los permisos ahora:

La ‘x’ extra en los permisos para el propietario, el grupo y otros significa que ahora todos tienen acceso de ejecución para este archivo.

Sin embargo, es más probable que no quieras que todos tengan acceso de ejecución para un archivo. ¿Qué pasa si el requisito es otorgar solo al propietario/usuario actual acceso de ejecución a script.sh?

Bueno, para esto, el primer paso ahora sería quitar el acceso de ejecución de todos, algo que puedes hacer usando el siguiente comando:

chmod -x script.sh

Y luego otorgarlo explícitamente al propietario:

chmod u+x script.sh

Como habrías adivinado, ‘u+x’ dice otorgar (+) al propietario/usuario actual (u) acceso de ejecución (x) al archivo. De manera similar, para el grupo, puedes usar ‘g’ y para otros puedes usar ‘o’.

Por favor, ten en cuenta que siempre que quieras otorgar/revocar un conjunto común de permisos a/de todos, puedes usar ‘a’ en lugar de ‘ugo’. Lo que quiero decir es, esto:

chmod ugo-x script.sh

puede ser reemplazado por esto:

chmod a-x script.sh

Además, recuerda que si ninguno de estos (‘u’, ‘g’, ‘o’ y ‘a’) se especifica explícitamente, entonces también se asume que el predeterminado es ‘a’.

Avanzando, si lo deseas, también puedes simplemente copiar los permisos otorgados a, digamos, el propietario/usuario actual y tenerlos para el grupo u otros. Para esto usa el signo ‘=’.

Por ejemplo, para copiar los permisos del propietario/usuario al grupo, usa el siguiente comando:

chmod g=u script.sh

Otro escenario podría ser copiar permisos para un archivo particular y tenerlos para tu archivo. Para esto, usa la opción de línea de comandos –reference. Aquí está la plantilla general para usar esta opción de línea de comandos:

chmod --reference=[archivo-fuente] [archivo-destino]

En el comando anterior, archivo-fuente es el archivo cuyos bits de permiso deseas copiar, y archivo-destino es el archivo cuyos bits de permiso deseas cambiar.

Avanzando más, también hay una notación numérica (también conocida como representación octal) con la que puedes decirle a chmod que cambie los permisos. Hay tres números con los que juegas en este modo: 4, 2 y 1. Mientras que 4 es para lectura, los otros dos son para escritura y ejecución, respectivamente.

Por ejemplo, considera el siguiente ejemplo:

Ahora, supongamos que la tarea es agregar permiso de ejecución para el propietario/usuario, eliminar el permiso de escritura pero agregar permiso de ejecución al grupo, y eliminar todos los permisos de otros. Esto se puede hacer de la siguiente manera:

chmod 750 script.sh

En el comando anterior, ‘7’ es para el usuario, que es el resultado de 4+2+1 ya que el requisito para el usuario es tener todos los permisos. De manera similar, ‘5’ es para el grupo, que es el resultado de 4+0+1 ya que el requisito es dar solo permisos de lectura y ejecución al grupo. Finalmente, ‘0’ es para otros, que es el resultado de 0+0+0, ya que el requisito es revocar todos los permisos de otros.

Para aquellos que tratan con enlaces simbólicos, aquí hay algo que vale la pena saber:

chmod nunca cambia los permisos de los enlaces simbólicos; la llamada al sistema chmod no puede cambiar sus permisos. Esto no es un problema ya que los permisos de los enlaces simbólicos nunca se utilizan. Sin embargo, para cada enlace simbólico listado en la línea de comandos, chmod cambia los permisos del archivo apuntado. En contraste, chmod ignora los enlaces simbólicos encontrados durante los recorridos recursivos de directorios.

Referencia de línea de comandos

El comando chmod en Linux tiene varias opciones de línea de comandos que modifican su comportamiento. Aquí hay una lista de las opciones más comúnmente utilizadas:

  • -R, –recursive: Esta opción aplica los cambios de permisos recursivamente a todos los archivos y directorios dentro del directorio especificado. Es útil cuando deseas cambiar los permisos de un directorio y todo su contenido de una vez.

Ejemplo: chmod -R 755 /ruta/al/directorio

  • -c, –changes: Esta opción informa solo cuando se realiza un cambio. Si los permisos se modifican con éxito, muestra un mensaje indicando el cambio.

Ejemplo: chmod -c 644 nombre_del_archivo

  • -v, –verbose: Esta opción proporciona información detallada sobre cada archivo procesado, ya sea que los permisos se hayan cambiado o no.

Ejemplo: chmod -v 755 nombre_del_archivo

  • -reference=RFILE: En lugar de especificar permisos directamente, esta opción te permite establecer los permisos de un archivo o directorio para que coincidan con otro archivo o directorio (RFILE).

Ejemplo: chmod –reference=archivo1 archivo2

  • -f, –silent, –quiet: Esta opción suprime la mayoría de los mensajes de error, haciendo que el comando se ejecute sin mostrar salida para errores.

Ejemplo: chmod -f 755 nombre_del_archivo

Estas opciones permiten que chmod se use de manera flexible en varios escenarios, desde ajustes de archivos individuales hasta cambios de permisos de directorios a gran escala.

Conclusión

Aquí, en este tutorial, hemos discutido la mayoría de los conceptos básicos relacionados con esta herramienta, y los ejemplos que hemos discutido están destinados a aclarar esos conceptos básicos.

Por favor, ten en cuenta que nuestra discusión se centró principalmente en archivos. Debes tener en cuenta algunos detalles al usar chmod con directorios. Para toda esa información (así como más detalles sobre chmod), dirígete a la página del manual de la herramienta.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.