设置执行 chmod/chown 的 cron 作业

设置执行 chmod/chown 的 cron 作业

我想设置一个 cron 作业,以递归方式对目录(dropbox 目录)执行 chmod/chown。

当我手动执行以下命令时,此方法有效:

sudo chown -R $USER ~/Dropbox
sudo chmod -R u+rw ~/Dropbox

我尝试将其转换为这样的 cron 作业:

10      *       *       *       *       sudo chown -R $USER ~/Dropbox

但它似乎没有起到作用。

这个怎么做?

答案1

您希望您的 root cron 脚本(通过运行进行编辑sudo crontab -e)是:

 55 * * * * /bin/chown -R somename /home/somename/Dropbox && /bin/chmod u+rw /home/somename/Dropbox

假设用户已命名somename,并且这/home/somename/Dropbox是 Dropbox 目录的完整路径。作为 root 用户,~ 转到/root

答案2

sudo应该几乎 绝不用于计划任务。它需要能够与终端对话,并且需要特定的标志来避免尝试这样做。

以 root 身份创建你的 cron 作业(请/etc/crontab注意,此文件的格式略有不同: minute hour mday month wdayusercommand) 来代替。
这也有利于在sudo未安装的系统上工作。

答案3

两个问题:

1) cron 中的路径通常与您登录时设置的路径不同。请尝试 /usr/bin/sudo /bin/chown ...(或系统上这些程序的正确路径)。

2) sudo 通常会要求您输入密码,否则可能无法以非交互方式运行。我建议您将命令放在 root 的 crontab 中,而不使用 sudo,然后以 root 身份运行命令。

答案4

或者,你也可以启用 ACL 支持并使用 setfacl 来实现相同/相似的结果。

相关内容