如何使用 crontab 以无人身份运行脚本

3 centos script cron crontab

这是在 CentOS 机器上。我试图在每天的某个时间以用户 nobody(或以最小权限的用户身份)运行脚本。这里没有人:

[root@CentOS % ~] grep "^nobody" /etc/passwd  
nobody:x:99:99:Nobody:/:/sbin/nologin  
Run Code Online (Sandbox Code Playgroud)

这是我在 root 的 crontab 中尝试过的:

设置环境变量 SUDO_USER=nobody
15 17 * * * sudo -u nobody /bin/bash /usr/local/bin/bashscript.sh
15 17 * * * su -c /usr/local/bin/bashscript.sh nobody

如果可能的话,我想将 crontab 条目保留在 root 的 crontab 中。我也不想欺骗用户nobody的帐户,因为我不想破坏可能依赖于这些设置的任何其他内容。如果这是症结所在,我并不反对创建另一个非特权帐户并给他们一个真正的外壳。

我也承认有点困惑。我认为这将是一个日常问题,除了我在 google-fu 中的棕色腰带没有太大帮助。

小智 5

我猜你在发布crontab -e或的内容crontab -l

这是属于用户“root”的 crontab 文件,该文件不支持指定用户作为运行命令(因为它通常是用于安排个人作业的文件)。
看看/etc/crontab哪个是系统范围的 crontab 并且有一个额外的字段:用户字段。尝试将这样的行添加到/etc/crontab

15 17 * * * nobody /usr/local/bin/bashscript.sh
Run Code Online (Sandbox Code Playgroud)

  • 实际上 /etc/cron.d/ 似乎是 /etc/crontab 的首选位置。Ubuntu 文档说 /etc/crontab 可能会受到更新的影响。 (3认同)