GNU/Linux >> Tutoriales Linux >  >> Linux

Permiso denegado con bash.sh para ejecutar cron

El problema podría ser que su usuario no tenga los derechos para ejecutar el archivo.

Primero establece el indicador de ejecución para su secuencia de comandos

chmod +x /home/samitha/bash.sh

Luego, debe verificar los permisos para el archivo php con

ls -lah /var/www/Controller

Si no aparecen ni su grupo de usuarios ni su nombre de usuario, debe ejecutar el script con derechos de superusuario o cambiar sus permisos.

La primera forma sería poner su entrada en

sudo crontab -e

o el segundo sería (que no recomendaría, ya que todos podrían ejecutar el script llamando a su sitio)

 chmod a+x /var/www/Controller/post.php

TL;DR:inserte "bash" antes del script en crontab y en cualquier script llamado por el script.

Tengo una solución para esto. Ninguna de las respuestas anteriores funcionó para mí. Tengo dos portátiles Asus con Kubuntu (actualizado a kernel v5.8) con configuraciones prácticamente idénticas. No sé por qué uno tiene el problema y el otro no. Sin embargo, después de 2 días de experimentación encontré una solución. Con suerte, alguien con más conocimientos que yo puede encontrar la causa.

Cron está usando sh en lugar de bash. Intenté agregar SHELL=/bin/bash y definir PATH sobre los comandos en crontab y no tuvo ningún efecto. Todos mis scripts tienen el shebang #!/bin/bash al principio, también sin efecto. Los permisos de mis scripts (y sus directorios) son 777. Los scripts no se ejecutan para cron o usuarios, sin importar qué combinación de usuario:grupo probé en los archivos. El uso de rutas de acceso completas es cron y dentro de los scripts no tuvo ningún efecto diferente al uso de variables de entorno.

Mi solución fue insertar "bash" antes del nombre de archivo del script en crontab. Por ejemplo:

00 01 * * * bash $BASH_SCRIPTS/backup_os.sh

(Sí, cron no tiene ningún problema con el uso de mis variables de entorno definidas en /etc/environment). Además, en cron, cuando un script ejecuta otro script, el segundo script obtendrá "permiso denegado" a menos que ese script se modifique para tener "bash " antes del nombre de archivo de la segunda secuencia de comandos, o use "fuente" si eso funciona con su secuencia de comandos.


El usuario que ejecuta ese cron (el que ejecuta cron -e) no tiene los derechos adecuados para ejecutar ese script. Es decir:el script carece del indicador de ejecución o no es posible acceder a él porque algunos de sus directorios antecesores carecen del indicador de ejecución.


también puede probar la siguiente solución:

chmod +x post.php
chmod +x bash.sh
echo "* * * * * /home/samitha/bash.sh >> /home/samitha/log/cron.log 2>&1" >> cronjob

chmod +x cronjob

/etc/init.d/crond start  #redhat based servers like centos
/etc/init.d/cron  start  #debian based servers like ubuntu

crontab cronjob

Linux
  1. ¿Cómo configurar Bash para ejecutar *.exe con Mono?

  2. ¿Ejecutar script con argumentos como usuario?

  3. ¿No se puede detener un script Bash con Ctrl+c?

  4. Compruebe cuánto tarda en ejecutarse un script de Bash con el comando de tiempo

  5. Git no puede crear el permiso de archivo denegado

Automatice el procesamiento de imágenes con este script Bash

Cómo ejecutar un script Bash {7 métodos}

Cómo escribir un script Bash con ejemplos

Cómo ejecutar un script Bash

Cómo matar el script de python con el script bash

Kali Linux VM:Permiso denegado para ejecutar script de shell, como raíz