Introducción
Uno de los errores más comunes a los que se enfrentan tanto los usuarios novatos como los administradores de sistemas experimentados en entornos Linux es el famoso mensaje Permission denied al intentar ejecutar un script de Bash. Este problema interrumpe el flujo de trabajo y suele generar confusión si no se comprende cómo gestiona el sistema operativo los permisos de archivos y la ejecución de binarios o scripts.
Causas del Error Permission Denied en Linux
El motivo principal por el cual aparece este error es la falta de permisos de ejecución en los metadatos del archivo. Cuando creas un archivo de texto plano para que funcione como un script, Linux por defecto le asigna permisos de lectura y escritura (rw-), pero le niega explícitamente el permiso de ejecución (--x). Otras causas menos comunes incluyen restricciones en el sistema de ficheros montado con la opción noexec o intentar ejecutar un script sin el intérprete adecuado.
Método 1: Otorgar Permisos de Ejecución con chmod
La solución más rápida y directa consiste en modificar los permisos del archivo utilizando el comando chmod para añadir el permiso de ejecución.
- Abre tu terminal de Linux y navega hasta el directorio donde se encuentra tu script.
- Ejecuta el siguiente comando para otorgar permisos de ejecución a todos los usuarios:
code chmod +x tu-script.sh code - Si prefieres aplicar un permiso más restrictivo donde solo el propietario pueda ejecutarlo, utiliza:
code chmod 700 tu-script.sh code - Vuelve a intentar ejecutar tu script anteponiendo las referencias de directorio actuales:
code ./tu-script.sh code
Método 2: Ejecutar el Script Llamando Explícitamente al Intérprete Bash
Si por alguna razón no puedes o no deseas modificar los permisos del archivo, puedes invocar directamente al intérprete de Bash para que procese el contenido del script, saltándote la restricción de ejecución directa del archivo.
- Abre la terminal en la ruta del archivo.
- Ejecuta el comando llamando a bash seguido del nombre de tu archivo:
code bash tu-script.sh code - También puedes utilizar sh si el script es compatible:
code sh tu-script.sh code
Método 3: Verificar y Modificar Particiones Montadas con noexec
Si los métodos anteriores no funcionan y sigues obteniendo el error de permisos, es muy probable que el script esté ubicado en una partición (como un disco duro externo o una memoria USB) montada con la directiva de seguridad noexec.
- Verifica las particiones montadas ejecutando:
code mount | grep noexec code - Si tu partición aparece en la lista, edita el archivo de configuración de puntos de montaje del sistema:
code sudo nano /etc/fstab code - Localiza la línea correspondiente a tu disco, elimina la opción
noexec(reemplazándola porexeco simplemente eliminando el flag), guarda los cambios y vuelve a montar la partición:code sudo mount -o remount,exec /punto/de/montaje code