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 Linux al ejecutar scripts personalizados es el famoso mensaje bash: ./script.sh: Permission denied. Este error ocurre cuando el archivo carece de los permisos de ejecución necesarios asignados por el sistema operativo.
Causas Principales del Problema
El sistema de seguridad de Linux restringe la ejecución de archivos por defecto a menos que se indique explícitamente lo contrario. Las causas más habituales son:
- El archivo fue descargado o creado recientemente y solo tiene permisos de lectura y escritura (
rw-r--r--). - El usuario actual no es el propietario del archivo y el grupo o otros no tienen permisos adecuados.
- Se intenta ejecutar el script sin la sintaxis correcta o sin privilegios de superusuario cuando el script requiere modificar archivos del sistema.
Método 1: Otorgar Permisos de Ejecución con chmod (Recomendado)
La forma más rápida y segura de solucionar este inconveniente es modificar los permisos del archivo utilizando el comando chmod para añadir el permiso de ejecución.
- Abre tu terminal de Linux.
- Navega hasta la carpeta donde se encuentra tu script usando el comando
cd:cd /ruta/a/tu/carpeta - Ejecuta el siguiente comando para otorgar permisos de ejecución al propietario del archivo:
chmod +x script.sh - Si el script necesita ser ejecutado por cualquier usuario del sistema, puedes usar:
chmod 755 script.sh - Finalmente, ejecuta tu script normalmente:
./script.sh
Método 2: Cambiar el Propietario del Archivo con chown
Si el error persiste, es probable que no tengas los derechos sobre el archivo porque fue creado por otro usuario (como root). En este caso, debes cambiar la propiedad del archivo.
- Verifica quién es el propietario actual del archivo con el comando:
ls -l script.sh - Cambia el propietario del archivo a tu usuario actual usando
sudo chown:sudo chown $USER:$USER script.sh - Vuelve a aplicar los permisos de ejecución:
chmod +x script.sh - Prueba ejecutar el script nuevamente.
Método 3: Ejecutar el Script Mediante el Intérprete de Bash Directamente
Si necesitas ejecutar el script de inmediato sin modificar sus permisos en el disco, puedes invocar directamente al intérprete de Bash para que procese el archivo de texto plano.
- Abre la terminal en la ubicación del archivo.
- Ejecuta el comando pasando el archivo como argumento a bash:
bash script.sh - Si el script requiere privilegios administrativos, antepon
sudo:sudo bash script.sh