web-dev-qa-db-fra.com

La permission est refusée avec bash.sh pour exécuter cron

Comment exécuter un script cron avec le script bash ici. Ce que j'ai fait comme suit et ici avec des erreurs. 

fichier bash.sh 

#!/bin/bash
cd /var/www/Controller
/usr/bin/php post.php

En crontab -e

* * * * * /home/samitha/bash.sh >> /home/samitha/log/cron.log 2>&1

Mais maintenant je reçois l'erreur suivante

/bin/sh: 1: /home/samitha/bash.sh: Permission denied

Comment vais-je le réparer? Qu'est-ce que j'ai mal fait? 

9
underscore

vous pouvez également essayer la solution suivante:

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
11
MLSC

Le problème peut être que votre utilisateur ne dispose pas des droits nécessaires pour exécuter le fichier.

D'abord, vous définissez l'indicateur d'exécution pour votre script

chmod +x /home/samitha/bash.sh

Ensuite, vous devriez vérifier les permissions pour le fichier php avec

ls -lah /var/www/Controller

Si ni votre groupe d'utilisateurs ni votre nom d'utilisateur n'apparaissent, vous devez exécuter le script avec les droits de superutilisateur ou modifier ses autorisations.

La première façon serait de mettre votre entrée dans

Sudo crontab -e

ou le second serait (ce que je ne recommanderais pas, car tout le monde serait autorisé à exécuter le script en appelant votre site)

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

L'utilisateur qui exécute ce cron (celui qui exécute cron -e) ne dispose pas des droits appropriés pour exécuter ce script. C'est-à-dire: soit le script n'a pas d'indicateur d'exécution, soit il n'est pas possible de l'atteindre car certains de ses répertoires ancêtres n'ont pas d'indicateur d'exécution.

1
  • Le fichier doit être exécutable (@see chmod)
  • Tous les répertoires parents doivent avoir l'indicateur d'exécution (@voir chmod)
  • Si crontab est exécuté par un utilisateur différent, c’est-à-dire non propriétaire, cet utilisateur n’a peut-être pas le droit de s’exécuter. (@voir chown)
0
Hyperc0der