我想以普通用户的身份从脚本中添加一个crontab条目,所以我使用sudo获得root权限,但是无论我尝试什么,都会失败。
$ sudo { crontab -u root -l; echo ' 15 9 * * * root /opt/script.sh'; } | crontab -u root
bash: syntax error near unexpected token `}'
$ sudo echo ' 15 9 * * * root /opt/script.sh' >> /etc/crontab
bash: /etc/crontab: Permission denied
$ sudo echo ok
ok发布于 2013-11-19 17:20:47
在sudo echo ' 15 9 * * * root /opt/script.sh' >> /etc/crontab中,首先运行sudo echo ' 15 9 * * * root /opt/script.sh',然后shell接受sudo命令的输出并将其附加到/etc/crontab。由于shell是作为普通用户启动的,因此不具有根权限,因此shell不能写入/etc/crontab,只有root才能修改它。为了解决这个问题,我们启动一个子subshell作为根,这允许它附加到/etc/crontab。幸运的是,这已经被实现为su -c,但是由于系统使用了sudo,所以sudo必须被放在前面。固定的命令是sudo sh -c "echo ' 15 9 * * * root /opt/script.sh' >> /etc/crontab"
发布于 2013-11-19 17:04:47
因为你在跑
sudo echo .......以"su“的形式将结果写入/etc/crontab,并使用:
>> /etc/crontab所以在你写信给/etc/crontab的那一刻,你不再是"su“了
https://stackoverflow.com/questions/20077513
复制相似问题