Cómo Utilizar el Comando chmod en Linux: Guía Completa de Permisos y Ejemplos Prácticos

Artículos Guías Manuales Sistemas Linux Windows Binario 0

El comando chmod en sistemas Unix y Linux se utiliza para cambiar los permisos de los archivos y directorios. Los permisos controlan quién puede leer, escribir o ejecutar un archivo o directorio. A continuación te ofrezco una guía completa sobre el uso de chmod, sus opciones y ejemplos.

Conceptos básicos

Cada archivo o directorio en Linux tiene permisos asociados a tres tipos de usuarios:

  1. Propietario (u - user)
  2. Grupo (g - group)
  3. Otros (o - others)

Existen tres tipos de permisos para cada uno de estos usuarios:

  • Lectura (r - read): Permite leer el contenido del archivo o listar los contenidos de un directorio.
  • Escritura (w - write): Permite modificar el contenido de un archivo o añadir/eliminar archivos en un directorio.
  • Ejecución (x - execute): Permite ejecutar un archivo o acceder a un directorio.

Estructura de permisos

Los permisos se visualizan mediante un formato de 10 caracteres, donde el primero indica si es un archivo o directorio (- para archivo, d para directorio), y los siguientes nueve indican los permisos para el propietario, grupo y otros, en ese orden.

Ejemplo de permisos:

-rwxr-xr--
  • El propietario tiene permisos de lectura, escritura y ejecución (rwx).
  • El grupo tiene permisos de lectura y ejecución (r-x).
  • Otros solo tienen permisos de lectura (r--).

Modos de uso de chmod

Existen dos formas principales de utilizar chmod:

  1. Modo simbólico: Se usan letras y operadores para modificar permisos.
  2. Modo numérico (octal): Se usan números para representar los permisos.

Modo simbólico

En este modo se usan las letras u (usuario), g (grupo), o (otros) y a (todos) junto con operadores para añadir (+), quitar (-) o establecer (=) permisos.

Sintaxis:

chmod [opciones] permisos archivo_o_directorio

Ejemplos:

  • Añadir permisos de ejecución al propietario:

    chmod u+x archivo.txt
  • Quitar permisos de lectura al grupo:

    chmod g-r archivo.txt
  • Asignar permisos de lectura y ejecución para todos (propietario, grupo y otros):

    chmod a=rx archivo.txt
  • Quitar permisos de escritura para otros:

    chmod o-w archivo.txt
  • Añadir permisos de escritura y ejecución para el grupo y otros:

    chmod go+wx archivo.txt

Modo numérico (octal)

Los permisos pueden representarse en un número de 3 dígitos, donde cada dígito es la suma de valores para cada permiso:

  • Lectura (r) = 4
  • Escritura (w) = 2
  • Ejecución (x) = 1

El valor se calcula sumando los números correspondientes para cada conjunto de permisos (usuario, grupo, otros).

Ejemplos:

  • Permisos de lectura, escritura y ejecución para el propietario, lectura y ejecución para el grupo, y solo lectura para otros:

    chmod 754 archivo.txt

    Esto asigna los permisos:
    • Propietario: rwx (4+2+1=7)
    • Grupo: r-x (4+1=5)
    • Otros: r-- (4=4)
  • Permisos de lectura y escritura para el propietario, sin permisos para el grupo ni otros:

    chmod 600 archivo.txt
  • Permisos de solo lectura para todos:

    chmod 444 archivo.txt

Opciones adicionales

  • -R o --recursive: Aplica los cambios de forma recursiva a todos los archivos y directorios dentro de un directorio.
    Ejemplo:

    chmod -R 755 mi_directorio/
  • -v o --verbose: Muestra una salida detallada de los archivos cuyos permisos han sido modificados.
    Ejemplo:

    chmod -v 755 archivo.txt
  • -c o --changes: Similar a --verbose, pero solo muestra los cambios que realmente se han realizado (si el archivo ya tenía los permisos no muestra nada).
    Ejemplo:

    chmod -c 644 archivo.txt
  • --reference=archivo: Cambia los permisos de un archivo o directorio basándose en otro archivo.
    Ejemplo:

    chmod --reference=referencia.txt archivo.txt

Permisos especiales

Existen algunos permisos especiales que pueden aplicarse a archivos y directorios:

  • SUID (Set User ID - s para el propietario): Permite que un archivo se ejecute con los privilegios del propietario.
    Ejemplo para activar SUID:

    chmod u+s archivo.txt
  • SGID (Set Group ID - s para el grupo): Permite que un archivo o directorio se ejecute con los privilegios del grupo.
    Ejemplo para activar SGID:

    chmod g+s archivo.txt
  • Sticky bit (t): Se usa comúnmente en directorios públicos para asegurar que solo el propietario de un archivo pueda eliminar o modificar sus archivos.
    Ejemplo para activar el sticky bit:

    chmod +t /directorio_publico

Ejemplos prácticos

  1. Dar permisos completos al propietario y solo lectura para grupo y otros:

    chmod 744 script.sh
  2. Permitir que todos los usuarios puedan leer, escribir y ejecutar un archivo:

    chmod 777 archivo.txt
  3. Dar permisos de lectura, escritura y ejecución al propietario, sin permisos para los demás, de manera recursiva en un directorio:

    chmod -R 700 mi_directorio/
  4. Añadir permisos de ejecución para el propietario y el grupo, pero quitar permisos de escritura para otros:

    chmod u+x,g+x,o-w archivo.txt
  5. Aplicar permisos a un archivo basándose en los permisos de otro archivo:

    chmod --reference=archivo_base.txt archivo_objetivo.txt

Resumen de modos octales

PermisoBinarioOctal
Sin permiso0000
Ejecución0011
Escritura0102
Escritura y ejecución0113
Lectura1004
Lectura y ejecución1015
Lectura y escritura1106
Lectura, escritura y ejecución1117

Conclusión

El comando chmod es una herramienta poderosa para gestionar los permisos de archivos y directorios en sistemas Linux y Unix. Al dominar tanto los modos simbólicos como los numéricos, puedes administrar eficientemente el acceso y control sobre los archivos de tu sistema.