我想设置一个 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 wday
user
command
) 来代替。
这也有利于在sudo
未安装的系统上工作。
答案3
两个问题:
1) cron 中的路径通常与您登录时设置的路径不同。请尝试 /usr/bin/sudo /bin/chown ...(或系统上这些程序的正确路径)。
2) sudo 通常会要求您输入密码,否则可能无法以非交互方式运行。我建议您将命令放在 root 的 crontab 中,而不使用 sudo,然后以 root 身份运行命令。
答案4
或者,你也可以启用 ACL 支持并使用 setfacl 来实现相同/相似的结果。