crontab の youtube-dl に「[Errno 13] 権限が拒否されました」と表示される

crontab の youtube-dl に「[Errno 13] 権限が拒否されました」と表示される

私は Debian を使用しています。youtube-dl の cron ジョブを作成しようとしています。これは、真夜中に開始する毎日のスクリプトで構成されています。スクリプトを手動で実行すると、すべて完璧に動作します。ただし、cron ジョブを使用すると、次のようなエラーが発生します。

ERROR: unable to open for writing: [Errno 13] Permission denied: '/media/Video/...

cronは次のとおりです:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@daily /usr/local/bin/youtube-dl-script.sh >> /var/mail/nextcloud 2>&1

どこかに権限の問題があるのは理解していますが、解決方法がわかりません。

ご参考までに :

  • 対象フォルダ ( /media/Video/) の所有者/グループは : www-data(所有者)、wwww-data (グループ)です
  • スクリプトの所有者/グループは: nextcloud(所有者)、root (グループ)
  • nextcloudrootグループに属しているwww-data
  • 対象フォルダ ( /media/Video/) の権限は770(所有者/グループは読み取り/書き込み/実行可能、その他は何もできない) です。

どうか助けていただけないでしょうか? 似たようなトピックを見たことがありますが、問題がまったく同じではなかったため、解決できませんでした。 どうもありがとうございます。

編集(古いステータス):これまで、ルールを遵守して(/グループが所有する拡張子とスクリプトを削除して)、スクリプト( youtube-dl-script.sh)をフォルダーにコピーしようとしました。 で確認すると、次の出力が表示されます。/etc/crontab.daily.shrootrootcat /etc/crontab

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

つまり、通常であれば、今朝の午前 6 時 25 分に動作するはずでしたが、動作しませんでした。

他のスクリプトには最後のビットがあることを発見したので-x、 を作成しましたchmod +x youtube-dl-script

  • その前に、スクリプトは です-rwxr-x--- 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script

  • さて、それは です-rwxr-x--x 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script

これが機能するかどうかを確認するには、明日の午前 6 時 25 分まで待つ必要があります。

編集2(現在のステータス): 動作しません。chmod 755他のすべてのスクリプトと同じ権限を持つように設定し、サーバーを再起動しましたが、動作しません。

非常に奇妙なのは、私がそうした場合run-parts --test /etc/cron.daily、私のスクリプトがリストされているので、cron.daily

何かお考えがありましたら、お気軽にお知らせください。ありがとうございます。

答え1

はい、解決策を見つけました:

/etc/cron.hourlyまず、スクリプトがインストールされていなかったためanacron、また毎時間使用したいため、スクリプトを に移動しました。しかし、動作しませんでした。

次に、cron サービスがアクティブかどうかを確認するために を実行しましたsudo service cron status。アクティブでしたが、 のような興味深い警告も見つかりましたyour token was expired, renew your token。そこで、このエラー メッセージをインターネットで検索したところ、root パスワードを更新する必要があることがわかりました。そうしないと、cron が正しく動作しません。これを確認するには、 を使用する必要がありました。sudo chage -l rootその結果、root パスワードが であることが示されましたexpired

そのため、 でルート パスワードを更新しsudo passwd root、 で再度確認したところ、sudo chage -l rootパスワードが正常であることが示されました。これで、すべてが正常に実行され、cron は期待どおりに動作しています。

関連情報