Contenido del curso

Permisos de archivos en Linux con chmod

Resumen

Si trabajas con Linux o macOS, entender los permisos de archivos es clave para proteger tu sistema y ejecutar scripts sin errores. Aquí aprenderás cómo leerlos, modificarlos con chmod y aplicar las configuraciones más seguras desde la terminal.

¿Qué son los permisos en Linux y cómo se leen?

Los permisos en Linux indican qué puede hacer cada usuario, grupo o recurso con un archivo o directorio. Para verlos, ejecuta ls -la en la terminal y observa la cadena de letras al inicio de cada línea.

Esa cadena se divide en cuatro bloques. El primer carácter indica si es un archivo (-) o un directorio (d). Luego vienen tres grupos de tres caracteres cada uno:

  • Los primeros tres definen los permisos del usuario propietario, por ejemplo codebars.
  • Los siguientes tres corresponden al grupo de usuarios.
  • Los últimos tres aplican a others o world, normalmente procesos y servicios externos como un sistema de bases de datos.

¿Qué significan las letras r, w y x en los permisos? La r es read (lectura), la w es write (escritura) y la x es execute (ejecución). Cada una se asigna por separado a usuario, grupo y otros.

¿Cómo cambio los permisos de un archivo con chmod?

La mejor forma de practicar es creando un script de shell. Por ejemplo, guarda un archivo llamado script.sh con un simple comando. La extensión .sh indica que es un script de bash shell.

Al listarlo verás que solo tiene permisos de lectura y escritura para tu usuario. Si intentas ejecutarlo con ./script.sh, la terminal responderá permission denied. Esto pasa porque cualquier archivo recién creado nunca tiene permisos de ejecución por defecto.

Para solucionarlo, usa:

bash chmod +x script.sh

El modificador +x añade el permiso de ejecución a usuario, grupo y otros al mismo tiempo. Cuando un script ya es ejecutable y tu terminal usa colores, normalmente lo verás resaltado en verde al hacer ls -la.

¿Es seguro usar chmod +x para todos?

No siempre. Aplicar +x de forma global puede ser peligroso si solo quieres que tu usuario ejecute el script. Por eso conviene usar la notación numérica, que da control fino sobre cada nivel de permiso.

¿Cómo funcionan los permisos numéricos en chmod?

La notación numérica de chmod se basa en valores binarios asignados a cada letra:

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

Estos números vienen de potencias de 2: 2², 2¹ y 2⁰. La suma máxima por bloque es 7, que equivale a rwx completo. Si quieres negar todo, usa 0.

La configuración se escribe con tres dígitos, uno por cada bloque (usuario, grupo, otros). Por ejemplo:

  • 700: el usuario tiene todos los permisos, grupo y otros no tienen ninguno.
  • 777: todos pueden leer, escribir y ejecutar. Es la combinación más peligrosa y rara vez se recomienda, aunque a veces se ve en producción.
  • 755: el usuario hace todo, grupo y otros solo leen y ejecutan. Es una de las configuraciones más comunes para scripts compartidos.
  • 744: similar a 755, pero grupo y otros solo pueden leer.

¿Cuál es la configuración de permisos más recomendada para scripts? Usa 755 cuando necesites que otros usuarios puedan leer y ejecutar el script, pero solo tú puedas modificarlo. Es el estándar para scripts compartidos en sistemas Linux.

Para aplicarla, simplemente ejecuta:

bash chmod 755 script.sh

¿Por qué chmod recursivo puede dar error en Linux?

La opción -R de chmod aplica cambios de forma recursiva a una carpeta y todo su contenido. Suena útil, pero los sistemas Linux modernos suelen bloquearla por seguridad.

Si intentas algo como chmod -R 777 textos, es probable que veas el mensaje operation not permitted. Esto ocurre porque modificar permisos en cascada puede romper scripts, archivos de configuración o exponer datos sensibles.

¿Qué hacer en su lugar? Tienes varias alternativas más seguras:

  1. Cambiar permisos archivo por archivo de forma manual.
  2. Usar find con un patrón de búsqueda y aplicar chmod solo a los resultados que necesites.
  3. Crear un script de bash shell que recorra archivos específicos y modifique sus permisos uno a uno.

La regla de oro es asignar siempre el mínimo de permisos necesarios. Esto reduce riesgos de seguridad y evita conflictos al gestionar directorios. Recuerda que incluso para entrar a una carpeta con cd necesitas permiso de ejecución sobre ese directorio.

¿Ya probaste configurar permisos en tus propios scripts? Cuéntame en los comentarios qué combinación usas más seguido y si te ha tocado lidiar con un permission denied inesperado.