Comando chmod

Comando chmod

chmod

El comando chmod permite modificar los permisos de acceso de archivos y directorios en sistemas Linux y Unix. Permite indicar quién puede leer, escribir o ejecutar un archivo mediante una representación numérica u otra basada en letras.

Categoría Administración de sistemas y seguridad
Disponible en Sistemas operativos tipo Unix (Linux, macOS, BSD)
Equivalente en Windows Propiedades de archivos / Pestaña Seguridad / Comando icacls o attrib
Sustituye a No sustituye a ningún comando anterior; es el estándar absoluto en POSIX para la gestión de permisos de lectura, escritura y ejecución.
¿Requiere permisos de administrador? Depende: un usuario normal puede modificar los permisos de sus propios archivos, pero requiere privilegios de superusuario (sudo) para cambiar los permisos de archivos de propiedad ajena o del sistema.

¿Qué significa su nombre?

El nombre chmod proviene del inglés change mode, que significa cambiar el modo. En Linux, el "modo" de un archivo hace referencia principalmente a sus permisos de acceso.

¿Para qué sirve?

Permite controlar qué usuarios pueden realizar determinadas acciones sobre un archivo o directorio:

  • Leer el contenido del archivo.
  • Modificar o escribir información.
  • Ejecutar un programa o script.

Es un comando fundamental en la administración de sistemas Linux, especialmente para configurar permisos de scripts, páginas web, servidores y archivos compartidos.

Sintaxis

chmod [opciones] permisos archivo

Permisos básicos

Permiso Letra Valor numérico Descripción
Lectura r 4 Permite consultar el contenido del archivo.
Escritura w 2 Permite modificar el contenido.
Ejecución x 1 Permite ejecutar el archivo.

Usuarios a los que se aplican los permisos

Identificador Significado
u Usuario propietario del archivo.
g Grupo propietario.
o Otros usuarios.
a Todos los usuarios.

Representación numérica

Los permisos también pueden indicarse mediante números. Cada permiso tiene un valor:

r = 4
w = 2
x = 1

Los valores se suman para cada grupo de usuarios:

7 = lectura + escritura + ejecución
6 = lectura + escritura
5 = lectura + ejecución
4 = lectura
0 = ningún permiso

Opciones más utilizadas

Opción Descripción
-R Aplica los cambios de forma recursiva a todos los archivos y directorios.
-v Muestra información sobre los cambios realizados.

Consultas más habituales

Dar permiso de ejecución a un script

chmod +x script.sh

Asignar permisos completos al propietario y solo lectura al resto

chmod 744 archivo.txt

Permitir lectura y escritura al propietario y lectura al grupo

chmod 640 documento.txt

Modificar permisos de un directorio completo

chmod -R 755 carpeta/

Ejemplo de salida

$ ls -l script.sh

-rw-r--r-- 1 usuario usuarios 1200 jul 16 10:30 script.sh

Después de ejecutar:

chmod +x script.sh

Los permisos cambian:

-rwxr-xr-x 1 usuario usuarios 1200 jul 16 10:30 script.sh

¿Cómo interpretar los permisos?

  • El primer carácter indica el tipo de elemento (- archivo, d directorio).
  • Los tres siguientes caracteres corresponden al propietario.
  • Los tres siguientes corresponden al grupo.
  • Los tres últimos corresponden al resto de usuarios.

Ejemplo:

-rwxr-xr--
  • Propietario: lectura, escritura y ejecución.
  • Grupo: lectura y ejecución.
  • Otros usuarios: solo lectura.

Errores habituales

  • Asignar permisos demasiado amplios como 777 sin necesidad.
  • Modificar permisos de archivos del sistema sin conocer sus consecuencias.
  • Olvidar que los permisos de un directorio afectan también al acceso a su contenido.
  • Confundir permisos del archivo con permisos del usuario que ejecuta el comando.

Conceptos relacionados

  • Usuario propietario
  • Grupo Linux
  • ls -l
  • Permisos Unix
  • chown
  • chgrp

Comandos relacionados

  • ls
  • chown
  • chgrp
  • umask
  • sudo

Curiosidades

El sistema de permisos de Linux está basado en el modelo Unix original. La representación numérica de permisos, como 755 o 644, se ha convertido en una forma habitual de configurar servidores web, scripts y aplicaciones.


Prácticas propuestas

  1. Crea un archivo llamado prueba.txt y consulta sus permisos con ls -l.
  2. Modifica sus permisos para que solo el propietario pueda escribir.
  3. Crea un script sencillo y hazlo ejecutable utilizando chmod +x.
  4. Prueba la diferencia entre los permisos 644, 755 y 777.
  5. Utiliza chmod -R sobre un directorio de pruebas y observa el resultado.

Consejo: Antes de modificar permisos en un sistema real, comprueba siempre qué usuarios necesitan acceso y aplica únicamente los permisos necesarios.