Introducción al error Permission Denied en Linux
Uno de los problemas más comunes a los que se enfrentan los usuarios y administradores de sistemas en entornos Linux al intentar ejecutar un script de Bash o un archivo binario es el frustrante mensaje de error: bash: ./script.sh: Permission denied. Este inconveniente detiene la ejecución de cualquier tarea automatizada y suele generar dudas si no se está familiarizado con el sistema de permisos de archivos basado en Unix.
¿Cuáles son las causas del error Permission Denied?
El sistema operativo Linux protege sus recursos mediante una estricta política de permisos (lectura, escritura y ejecución) asignados a tres entidades: el usuario propietario, el grupo y otros usuarios. Las causas principales de este error son:
- El archivo no tiene el bit de ejecución activo para tu usuario actual.
- Estás intentando ejecutar un script ubicado en una partición montada con la opción
noexec. - No eres el propietario del archivo y el grupo o 'otros' carecen de privilegios.
Método 1: Otorgar permisos de ejecución con chmod (Solución estándar)
La forma más rápida y recomendada de solucionar este problema es añadir el permiso de ejecución utilizando el comando chmod. Sigue estos pasos:
- Abre tu terminal de Linux.
- Navega hasta el directorio donde se encuentra tu script utilizando el comando
cd, por ejemplo:cd /home/usuario/scripts/ - Ejecuta el siguiente comando para otorgar permisos de ejecución a todos los usuarios:
chmod +x script.sh - Si prefieres aplicar el permiso únicamente para tu propio usuario, utiliza la sintaxis numérica:
chmod u+x script.sh - Vuelve a intentar ejecutar el script de forma habitual:
./script.sh
Método 2: Cambiar la propiedad del archivo con chown
Si el método anterior no funciona o recibes un error adicional indicando que no tienes privilegios para modificar el archivo, es probable que pertenezca a otro usuario (como root). Para solucionarlo:
- Verifica quién es el propietario actual usando el comando:
ls -l script.sh - Cambia el propietario del archivo a tu usuario actual ejecutando el comando con privilegios de administrador:
sudo chown $USER:$USER script.sh - Vuelve a aplicar los permisos de ejecución necesarios:
chmod +x script.sh - Ejecuta tu script sin problemas.
Método 3: Ejecución forzada mediante el intérprete
Si necesitas ejecutar el script de manera urgente sin modificar los permisos permanentes del archivo, puedes invocar directamente al intérprete de Bash para que procese el contenido:
- Abre tu terminal en la ruta del archivo.
- Ejecuta el comando pasando el archivo como argumento a bash:
bash script.sh - Si el script requiere privilegios elevados del sistema, antepon
sudo:sudo bash script.sh