【问题标题】:Debian 9 problem with crontab permissionsDebian 9 的 crontab 权限问题
【发布时间】:2020-06-10 18:04:18
【问题描述】:

我在我的 VPS 上安装了 Debian 9。我在服务器上安装了 LAMP。我以 root 身份登录,我创建了一个新站点 "/var/www/example.com",我看到权限是“root:root”。网页显示在浏览器中。

我创建了一个cron.php 文件,它将当前时间写入文件。在 crontab 我有 /usr/bin/php /var/www/example.com/cron.php。如果我通过终端运行此命令,一切正常。但是,Crontab 会返回错误,因为它没有写入权限。但是,Crontab 以 root 身份运行。该目录有777个权限。

我尝试将 /var/www 设置为 www-data:www-data 并为 crontab (crontab -u www-data -e) 设置相同的值。结果是一样的,cron运行但不写入文件。

编辑: 我发现如果脚本包含:file_put_contents('output.txt', 'xxx'); cron 创建的文件在根目录下。如果我设置完整路径,一切都很好:file_put_contents('/var/www/exmaple.com/output.txt', 'xxx');有没有办法修改这种行为?

【问题讨论】:

  • 您以哪个用户身份运行 cron 作业?
  • 默认为root。

标签: cron debian-stretch


【解决方案1】:

您可以像这样创建示例脚本:

#!/bin/bash
source ~/.bashrc #or use .bash_profile
/usr/bin/php /var/www/example.com/cron.php >>/path/to/output

并将其添加为cron 记录:

0 * * * * /path/to/script/sh

【讨论】:

  • 不幸的是不起作用。 CRON[9064]:(root)CMD(/var/www/example.com/console.sh),console.sh 具有权限:-rwxr-xr-x 1 root root 138 Feb 27 20:44 console.sh。如果我从终端运行,它会写入文件,否则不会。
  • 我发现如果脚本包含:file_put_contents('output.txt', 'xxx'); cron 创建的文件在根目录下。如果我设置完整路径,一切都很好:file_put_contents('/var/www/exmaple.com/output.txt', 'xxx');有没有办法修改这种行为?
  • 您可以以不同的用户身份运行脚本,该用户的主页是 /var/www/exmaple.com。但是为什么不在这个调用中添加完整路径呢?
猜你喜欢
  • 2020-12-14
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
相关资源
最近更新 更多