web-dev-qa-db-ja.com

cronを実行する権限がbash.shで拒否されました

ここでbashスクリプトを使用してcronを実行する方法。次のようにして、ここでエラーが発生しました.ubuntuでそれを実行する方法を知りたいです。

bash.shファイル

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

Crontab -e

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

しかし、今私は次のエラーが出ます

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

どうすれば修正できますか?何を間違えたか?

13
underscore

次の解決策も試すことができます。

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

問題は、ユーザーにファイルを実行する権限がないことである可能性があります。

まず、スクリプトの実行フラグを設定します

chmod +x /home/samitha/bash.sh

次に、phpファイルの権限を確認する必要があります

ls -lah /var/www/Controller

ユーザーグループもユーザー名も表示されない場合は、スクリプトをスーパーユーザー権限で実行するか、その権限を変更する必要があります。

最初の方法はあなたのエントリーを入れるでしょう

Sudo crontab -e

または2つ目は(だれもがあなたのサイトを呼び出すことによってスクリプトを実行することを許可されているため、お勧めしません)

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

そのcronを実行するユーザー(cron -eを実行するユーザー)には、そのスクリプトを実行するための適切な権限がありません。つまり、スクリプトに実行フラグがないか、一部の祖先ディレクトリに実行フラグがないためにスクリプトに到達できないかのどちらかです。

  • ファイルは実行可能でなければなりません(@see chmod)
  • すべての親ディレクトリには実行フラグが必要です(@see chmod)
  • Crontabが所有者ではない別のユーザーによって実行されている場合、このユーザーには実行する権限がない可能性があります。 (@chownを参照)
0
Hyperc0der