如何以用户而不是 root 用户身份运行 cron 作业 [关闭]
Posted
技术标签:
【中文标题】如何以用户而不是 root 用户身份运行 cron 作业 [关闭]【英文标题】:How to run the cron job as a user instead of root user [closed] 【发布时间】:2011-12-31 23:43:07 【问题描述】:我有几个 bash 脚本可以添加到指定时间的 cron 作业中,但它需要以 root 用户身份执行。我正在尝试运行这些脚本,即 crob 作业,但它需要 root 用户权限,因为我在 root 用户受限的 ubuntu ec2 实例中运行此作业。以 root 用户身份运行这些脚本的解决方法是什么。
谢谢
【问题讨论】:
我不确定是否理解这个问题。也许super
或sudo
命令可以帮助你?
这属于 ServerFault,而不是 ***。
您已经存在了足够长的时间,知道这不属于这里。如果您想知道如何在不同的用户帐户下在 linux 上 cron 执行 bash 脚本,请尝试 Unix & Linux。如果 EC2 在其中发挥了重要作用,请尝试 Server Fault。
askubuntu.com/questions/173924/…
【参考方案1】:
您可以使用setuid flag 使脚本以root 身份执行,这使脚本以其所有者身份运行:
chmod +s yourscript
chown root yourscript
只需让 yourscript
以 root 身份运行您想运行的任何命令。
请注意,使用此方法,任何用户都可以运行脚本。
【讨论】:
出于安全原因,许多平台会忽略脚本文件中的setuid
。【参考方案2】:
Basile 的评论是正确的。如果你想在 Ubuntu 中以root
运行某些东西,请使用sudo
。
如果您想以超级用户权限自动执行脚本(或某些命令)而无需输入密码,请运行
sudo visudo
编辑sudoers 文件。让sudo
停止要求输入特定脚本(或命令)的密码
username ALL = NOPASSWD: /path/to/script
其中username
是调用 sudo 的用户的名称。
【讨论】:
【参考方案3】:有几种可能:
1) 将脚本添加到 root 的 crontab。为此,您必须通过 sudo su -
或 su -
成为 root,然后使用 crontab -e
添加 cron 作业
2) 允许非 root 用户使用 crontab,并使用 crontab -e
将 cron 作业添加到该用户的 crontab 中
并设置脚本的 set-uid 标志并将所有权更改为 root,因此它将以 root chmod +s scriptname; chown root scriptname
【讨论】:
以上是关于如何以用户而不是 root 用户身份运行 cron 作业 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Docker 容器中以非 root 用户身份启动 cron?
我可以以不同于 root 的用户身份运行 cloud init 吗?
可以以 root 身份而不是 ubuntu 用户身份 SSH 到 EC2 ubuntu 服务器