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 distribuciones basadas en Linux como Ubuntu, Debian o CentOS es el temido mensaje bash: ./script.sh: Permission denied. Este error ocurre cuando intentamos ejecutar un archivo de comandos o script que carece de los permisos de ejecución necesarios en el sistema de archivos.
¿Cuáles son las causas de este error?
El sistema de seguridad de Linux está basado en permisos estrictos para los usuarios (propietario, grupo y otros). Las causas principales de este fallo son:
- El archivo recién descargado o creado no tiene habilitado el bit de ejecución.
- El usuario actual no es el propietario del archivo y el grupo u otros no tienen permisos de lectura/ejecución.
- Se intenta ejecutar el script sin la ruta correcta o sin privilegios de superusuario (sudo) cuando el directorio raíz lo requiere.
Método 1: Otorgar permisos de ejecución con chmod (Solución recomendada)
La forma más rápida y limpia de solucionar este inconveniente es modificar los permisos del archivo utilizando el comando chmod en la terminal.
- Abre tu terminal de Linux.
- Navega hasta la carpeta 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 al propietario del archivo:
chmod +x script.sh - Si necesitas que cualquier usuario del sistema pueda ejecutarlo, utiliza:
chmod 755 script.sh - Vuelve a intentar ejecutar tu script con normalidad:
./script.sh
Método 2: Cambiar la propiedad del archivo con chown
Si el error persiste, es probable que no tengas los derechos de propiedad sobre el archivo, especialmente si fue creado por el usuario root o copiado desde otra partición.
- Abre la terminal de comandos.
- Verifica el propietario actual del archivo ejecutando:
ls -l script.sh - Cambia el propietario del archivo a tu usuario actual utilizando el comando
chown:sudo chown $USER:$USER script.sh - Introduce tu contraseña de administrador si se te solicita.
- Aplica nuevamente el permiso de ejecución:
chmod +x script.sh