【问题标题】:run crontab as www-data to create a file with www-data as owner将 crontab 作为 www-data 运行以创建一个以 www-data 作为所有者的文件
【发布时间】:2018-07-03 08:37:56
【问题描述】:

我想每 5 分钟运行一次执行 py 脚本的 crontab 命令。 py 脚本会在 /var/www/logs/ 内生成一个带有午夜轮换的日志文件。logs 目录具有 777 权限。

日志文件有午夜轮换,当创建新文件时,它会创建为 root 所有者。如何确保所有权保持为 www-data,因为其他一些脚本也写入同一文件并且拥有 root 所有权会导致权限问题其他脚本。

一种方法是把命令放进去,

crontab -u www-data -e

这很好用,但我想在 root 用户下维护我的所有 cron 命令。

我尝试用 sudo 做同样的事情,但它以 root 作为所有者创建,这不是我想要的。

【问题讨论】:

    标签: cron debian file-permissions


    【解决方案1】:

    尝试添加` && chown -R www-data

    【讨论】:

    • 我举了一个粗略的例子。对不起,我已经改写了我的问题。
    • 不太确定。也许您以 root 身份运行 python 脚本导致日志文件具有 root 所有者。
    • yea...py 脚本是由上面提到的 root 用户 cron 运行的。
    • 您可以在 python 中使用os.chown() 或以 www-data 用户身份运行脚本,或创建另一个脚本来处理文件。
    • 在脚本中管理这个对我来说不合适,因为它必须在其他平台上工作而无需任何更改。
    【解决方案2】:

    终于找到了解决这个问题的好办法。

    现在我在 linux 中使用 FACL 为在日志目录中创建的所有文件设置默认权限。这样我可以在 root 中运行我的所有 crons。 here is more on facl in linux

    同样如问题所述,在 www-data 下运行 crons 几乎不会引起其他与日志记录相关的问题。

    我使用下面的命令来设置 facl。

    setfacl -m default:u:www-data:rw logs
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 2015-08-06
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 2016-12-16
      相关资源
      最近更新 更多