更改其他用户的 Crontab

更改其他用户的 Crontab

我有一个(部署)脚本,它以我的用户“me”的身份运行,它应该会更改用户“ruby-server”的 crontab。我说得对吗?除非我使用 sudo 或 su,否则 -u 选项(crontab)对我没什么帮助?有没有办法,我可以不使用 sudo 或 su 来更改其他用户的 crontab。(我可以访问整个系统。)

你问为什么会出现这个问题?答案:如果我以“我”的身份部署应用程序并以“ruby-server”的身份运行它,显然我想以“我”的身份编写 crontab,但命令应该在“ruby-server”的 crontab 中。因为如果其他人部署,我们应该更改同一用户的相同 crontab

[编辑1]

我有一组用户(“部署者”)可以访问服务器。我有一个用户(“ruby-server”)可以通过 ssh 和私钥访问另一台服务器以获取一些文件。此复制是通过 rsync 编写的脚本,应该每天运行。现在,我认为,如果“部署者”可以写入“ruby-server”的 crontab 来指定/更改复制文件的方式,那就太酷了。有什么想法吗?

答案1

如果您的系统有 ACL,您可以授予开发人员访问 cronfile 的权限。如果所有部署者都属于名为“deployers”的组,您可以使用下面显示的命令修改 crontab 文件,这将允许该组的成员对其进行修改。

setfacl -m g:wheel:rx /var/spool/cron/ # Grant read access to the directory
setfacl -m g:deployers:rw /var/spool/cron/ruby-server 

请记住,/var/spool/cron/ruby-server 必须具有适当的权限:如果您在 /var/log/cron 中看到“BAD FILE MODE”消息,则“chmod 0600 /var/spool/cron/ruby-server”将修复此问题

此外,文件系统必须启用 ACL,运行类似“tune2fs -l /dev/mapper/blah | grep -i acl”的命令就足够了(用 /dev/mapper/blah 替换包含 /var/spool/cron 目录的分区)

答案2

有没有办法,我可以不用 sudo 或 su 来更改其他用户的 crontab

据我所知,没有办法。您需要sudo先获得切换到其他用户的权限并创建 cron 作业。为什么您不想在拥有系统完全访问权限的情况下使用su或?sudo

相关内容