我是否正确理解不可能/etc/cron.daily/my从任意用户运行,它只能从root根据运行/etc/crontab?
我可以在我的 cron 脚本中删除特定用户的 root 权限吗?
最好将 cron 作业放入/etc/cron.d? 喜欢:
$ cat /etc/cron.d/my
5 0 * * * user test -x /usr/bin/my && /usr/bin/my -cfg /etc/my.cfg
Run Code Online (Sandbox Code Playgroud)
Per*_*uck 17
你是对的,工作在 /etc/cron.daily(以及每周/每月等)中的作业始终以用户身份执行,root但您可以简单地从脚本中切换用户并以其他用户身份再次调用该脚本,包括所有提供的参数(尽管有不会有任何cron.daily工作):
文件/etc/cron.daily/my:
#!/bin/sh
# If started as root, then re-start as user "gavenkoa":
if [ "$(id -u)" -eq 0 ]; then
exec sudo -H -u gavenkoa $0 "$@"
echo "This is never reached.";
fi
echo "This runs as user $(id -un)";
# prints "gavenkoa"
exit 0;
Run Code Online (Sandbox Code Playgroud)
当脚本以用户身份启动时,root它会检测到并通过重新执行自己sudo -H -u gavenkoa,即:作为用户gavenkoa。这不需要特殊的条目/etc/sudoers
因为root始终允许切换到任何用户。
该exec 替换用新的当前进程sudo …调用并永远不会返回。这就是为什么你不需要else子句。
| 归档时间: |
|
| 查看次数: |
6133 次 |
| 最近记录: |