Los permisos de archivos en Linux determinan quién puede leer, escribir y ejecutar archivos, y el comando chmod te da un control total sobre ellos. En esta guía aprenderás paso a paso cómo funciona chmod, incluidos los ajustes numéricos y simbólicos, los errores más frecuentes y consejos de seguridad.


1. ¿Qué son los permisos de archivos en Linux?

En Linux y Unix, cada archivo y cada carpeta tiene determinados permisos, que establecen quién tiene acceso y qué puede hacer con ellos. Estos permisos se dividen en tres categorías:

  • Propietario (user - u): el usuario que ha creado el archivo.
  • Grupo (group - g): otros usuarios que forman parte del mismo grupo.
  • Otros (others - o): cualquier persona que no sea el propietario ni esté en el grupo.

Cada archivo tiene tres permisos:

  • r (read): leer un archivo o ver el contenido de una carpeta.
  • w (write): modificar o eliminar un archivo.
  • x (execute): ejecutar un archivo (por ejemplo, un script o un programa).

Puedes ver los permisos de un archivo con:

ls -l bestand.txt 

Esto muestra, por ejemplo:

-rw-r--r-- 1 gebruiker groep 1234 mrt 17 10:00 bestand.txt 

Aquí ves:

  • rw- (lectura y escritura para el propietario)
  • r-- (solo lectura para el grupo)
  • r-- (solo lectura para los demás)

2. Uso básico de chmod

La sintaxis general de chmod es:

chmod [opties] rechten bestand 

Ejemplos:

  • chmod 755 script.sh → hace que un script sea ejecutable para todos.
  • chmod 644 document.txt → solo el propietario puede escribir, los demás pueden leer.

3. Modo numérico: chmod con números

Puedes establecer los permisos con una notación octal (números). Cada permiso tiene un valor numérico:

  • r = 4 (read)
  • w = 2 (write)
  • x = 1 (execute)

Combinaciones:

  • 7 (rwx) → lectura, escritura y ejecución.
  • 6 (rw-) → lectura y escritura.
  • 5 (r-x) → lectura y ejecución.
  • 4 (r--) → solo lectura.

Ejemplo:

chmod 755 script.sh 

Con esto, el propietario obtiene todos los permisos (rwx = 7), mientras que el grupo y los demás solo obtienen permisos de lectura y ejecución (r-x = 5).


4. Modo simbólico: chmod con letras

En lugar de números, también puedes cambiar los permisos con símbolos:

  • u (user: propietario)
  • g (group: grupo)
  • o (others: otros usuarios)
  • a (all: todos)

Y con operadores:

  • + (añadir permisos)
  • - (quitar permisos)
  • = (establecer los permisos exactos)

Ejemplos:

chmod u+x script.sh # Geeft de eigenaar uitvoerrechten chmod g-w bestand.txt # Verwijdert schrijfrechten van de groep chmod o= bestand.txt # Verwijdert alle rechten van anderen 

5. Ajustes de chmod más habituales

Estos son algunos ajustes estándar y cuándo se usan:

Código chmod Descripción Aplicación
755 El propietario tiene todos los permisos; los demás, solo lectura y ejecución Scripts y programas
644 El propietario puede escribir; los demás pueden leer Archivos de configuración, páginas web
700 Solo el propietario tiene acceso Archivos privados, claves SSH
600 Solo el propietario puede leer y escribir Archivos sensibles, como contraseñas
777 Todos tienen todos los permisos (¡peligroso!) Solo en casos excepcionales

6. Opciones avanzadas

a) Usar chmod de forma recursiva (-R)

¿Quieres aplicar chmod a una carpeta entera, incluidas sus subcarpetas y archivos? Usa la opción -R:

chmod -R 755 mijnmap/ 

Así, todos los archivos y subcarpetas dentro de mijnmap/ obtienen los mismos permisos.

b) SUID, SGID y el sticky bit

Además de los permisos estándar, existen tres bits especiales:

  • SUID (Set User ID - 4xxx): hace que un archivo se ejecute siempre como su propietario.
  • SGID (Set Group ID - 2xxx): los archivos nuevos de una carpeta reciben automáticamente los permisos de grupo.
  • Sticky bit (1xxx): impide que otros eliminen archivos en una carpeta de uso compartido.

Ejemplo:

chmod 4755 script.sh # SUID instellen chmod 2755 mijnmap/ # SGID instellen chmod 1777 /tmp # Sticky bit instellen (gebruikelijk voor de /tmp map) 

7. Aplicaciones prácticas

a) Hacer que un script sea ejecutable

¿Tienes un script que quieres ejecutar? Dale permisos de ejecución:

chmod +x mijnscript.sh ./mijnscript.sh 

b) Proteger archivos contra cambios

¿Quieres proteger un archivo contra cambios no deseados?

chmod 444 belangrijk.txt # Alleen-lezen voor iedereen 

c) Permisos correctos para las claves SSH

Las claves SSH requieren permisos específicos:

chmod 600 ~/.ssh/id_rsa # Privésleutel (alleen eigenaar mag lezen/schrijven) chmod 644 ~/.ssh/id_rsa.pub # Publieke sleutel (iedereen mag lezen) 

8. Errores frecuentes y riesgos de seguridad

a) Por qué chmod 777 suele ser una mala idea

Dar todos los permisos (chmod 777) a un archivo o una carpeta significa que todos pueden hacer de todo. Es un gran riesgo de seguridad, sobre todo en servidores web:

chmod 777 /var/www/html/index.php # Fout! Iedereen kan dit bestand aanpassen. 

Mejor:

chmod 644 /var/www/html/index.php # Alleen de eigenaar kan schrijven. 

b) Errores habituales

  • Olvidar dar permisos de ejecución a un script:
    Solución: chmod +x script.sh
  • Permisos incorrectos en las claves SSH:
    Solución: chmod 600 ~/.ssh/id_rsa

9. Herramientas adicionales para gestionar permisos

Además de chmod, hay otros comandos útiles:

  • chown: cambia el propietario de un archivo.
    chown gebruiker:groep bestand.txt 
  • chgrp: cambia solo el grupo de un archivo.
    chgrp groepnaam bestand.txt 
  • umask: determina los permisos predeterminados al crear archivos nuevos.
    umask 022 # Nieuwe bestanden krijgen standaard 644, mappen 755 

10. Conclusión: buenas prácticas

  • Ten cuidado con chmod 777: úsalo solo cuando sea realmente necesario.
  • Usa la notación numérica o la simbólica según la situación.
  • Haz que los scripts sean ejecutables con chmod +x.
  • Protege los archivos sensibles, como las claves SSH, con chmod 600.
  • Usa chmod -R solo si sabes con seguridad lo que haces.

Con estos conocimientos puedes gestionar los permisos de archivos en Linux de forma segura y eficaz.

¿Buscas servidores dedicados? Consulta nuestra oferta.