0

我有一个 django 应用程序,它应该读取和写入 crontab。但是,如果我用这个创建文件:

sudo su www-data
crontab -e

我理解了:

# ls -la
total 12
drwx-wx--T 2 root     crontab 4096 Aug 13 16:28 .
drwxr-xr-x 5 root     root    4096 May  1  2012 ..
-rw------- 1 www-data crontab  202 Aug 13 16:28 www-data

但是,django 仍然无法读取和写入该文件。如果我切换sudowww-data用户,我将无法编辑文件。如何正确设置权限?

4

1 回答 1

2

有充分的理由,您不能阅读该目录。

但是,您可以:

  1. 读取文件crontab -l
  2. 将 crontab 替换为crontab /path/to/file/which/will/replace/it.

所以一个可行的解决方案是:

  1. 将当前存储crontab -l在某个临时文件中。
  2. 您是否对该临时文件进行了修改
  3. 安装该临时文件crontab /path/to/tempfile

原因在于man cron

不允许用户直接编辑该目录下的文件,以确保只有系统允许运行周期性任务的用户才能添加它们,并且只会在其中写入语法正确的 crontab。这是通过使目录只能由 crontab 组写入并使用为该特定组设置的 setgid 出价配置 crontab 命令来强制执行的。

于 2013-08-13T16:55:15.410 回答