Introducción
Uno de los problemas más comunes al trabajar en la terminal de Linux y ejecutar scripts personalizados es encontrarse con el frustrante mensaje bash: ./script.sh: Permission denied. Este inconveniente detiene por completo la ejecución de tareas automatizadas y despliegues de código, generando dolores de cabeza tanto a usuarios novatos como a administradores de sistemas experimentados.
Causas del Error Permission Denied en Linux
El sistema operativo Linux cuenta con un robusto esquema de seguridad basado en permisos de archivos y directorios. Las causas principales de este error son:
- El archivo del script no cuenta con los permisos de ejecución habilitados (bit
x). - El usuario actual no pertenece al grupo propietario del archivo o carece de privilegios sudo.
- Se intenta ejecutar el script desde un sistema de archivos montado con la directiva
noexec.
Método 1: Otorgar Permisos de Ejecución con chmod
La solución más rápida y recomendada consiste en modificar los permisos del archivo utilizando el comando chmod para añadir permisos de ejecución.
- Abre tu terminal de Linux.
- Navega hasta la carpeta donde se encuentra tu script utilizando el comando
cd:code cd /ruta/de/tu/carpeta - Ejecuta el siguiente comando para otorgar permisos de ejecución al propietario del archivo:
code chmod +x script.sh - Si necesitas que cualquier usuario del sistema pueda ejecutarlo, puedes usar:
code chmod 755 script.sh - Vuelve a intentar ejecutar el script:
code ./script.sh
Método 2: Ejecutar el Script Mediante el Intérprete Explícitamente
Si no puedes o no deseas modificar los permisos del archivo original, puedes invocar directamente al intérprete de Bash para procesar el script, obviando la necesidad de permisos de ejecución directos en el archivo.
- Abre tu terminal en la ubicación del script.
- Ejecuta el script pasando el nombre del archivo como argumento al intérprete bash:
code bash script.sh - Alternativamente, si el script utiliza características específicas de sh, utiliza:
code sh script.sh
Método 3: Verificar y Modificar el Propietario con chown
A veces, el archivo fue creado por el usuario root o por otro usuario diferente al actual, lo que genera restricciones de acceso incluso si se intentan cambiar los permisos.
- Verifica el propietario actual del archivo con el comando:
code ls -l script.sh - Cambia el propietario del archivo para que coincida con tu usuario actual usando
chown:code sudo chown $USER:$USER script.sh - Vuelve a aplicar los permisos de ejecución:
code chmod +x script.sh - Ejecuta tu script con normalidad.