我有几个bash脚本正在添加到指定时间的cron作业,但它需要以root用户身份执行。我正在尝试运行这些脚本,即crob作业,但它需要root用户权限,因为我在ubuntu ec2实例中运行此作业,其中root用户受到限制。以root用户身份运行这些脚本的工作原理是什么。
谢谢
答案 0 :(得分:10)
您可以使用setuid flag以root身份执行脚本,这样可以让脚本作为其所有者运行:
chmod +s yourscript
chown root yourscript
只需让yourscript
运行您想以root身份运行的任何命令。
请注意,使用此方法,任何用户都可以运行该脚本。
答案 1 :(得分:7)
有几种可能性:
1)将脚本添加到root的crontab中。为此,您必须sudo su -
或su -
成为root用户,然后使用crontab -e
2)允许非root用户使用crontab,并使用crontab -e
将cron作业添加到该用户的crontab
和设置脚本的set-uid标志并将所有权更改为root,因此它将以root身份执行chmod +s scriptname; chown root scriptname
答案 2 :(得分:2)
Basile对他的评论是正确的。如果您想在Ubuntu中以root
运行某些内容,请使用sudo
。
如果您想使用超级用户权限自动执行脚本(或某些命令)而无需输入密码,请运行
sudo visudo
编辑sudoers文件。要使sudo
停止询问特定脚本(或命令)的密码,请插入
username ALL = NOPASSWD: /path/to/script
其中username
是调用sudo的用户的名称。