使用“sudo”更新我的网络用户的 crontab

使用“sudo”更新我的网络用户的 crontab

我需要更新我的网络用户(执行所有网站的用户)的 crontab。在我的 crontab 中,我使用带有需要使用“sudo”的命令的 shell 脚本。

脚本执行良好,但我收到错误消息,下面是几个示例:

mv: cannot move 'cms/configs/database.json' to './database.json': Permission denied
mv: cannot move 'cms/configs/options.json' to './options.json': Permission denied
mv: cannot move 'cms/configs/analytics.json' to './analytics.json': Permission denied
mv: cannot move 'cms/sql/patchs.json' to './patchs.json': Permission denied
mv: cannot move 'cms/public/uploads' to './uploads': Permission denied
mv: cannot move 'cms/node_modules' to './node_modules': Permission denied

我使用以下命令声明 crontab:sudo crontab -u mywebuser -e

如果我使用“sudo myscript.sh”在没有 crontab 的情况下执行脚本,一切都会按预期工作。

答案1

安装由该用户运行的系统作业文件。/etc/cron.d/web例如,而不是通过命令的用户crontab

5 4 * * * mywebuser /opt/thing/myscript.sh

假设你的 crond 支持这一点,Vixie 就可以。

一个优点是 crond 现在负责成为正确的用户,而不是您。换句话说,您不需要定义配置和环境即可工作sudo

替换为您想要的时间、用户和脚本。并确保文件具有正确的权限以供该用户管理。

答案2

sudo myscript.sh

(如果没有用 定义替代用户sudo -u username)将默认以 root 身份运行脚本。

sudo crontab -u mywebuser -e

另一方面,将设置一个 cron 作业来运行,不是以 root 身份运行,而是以用户“mywebuser”的更有限的权限运行...

该用户将无法修改其他用户(例如 root 用户)拥有的文件....

修复文件和目录的所有权和权限

相关内容