首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这些sudo命令会失败?

为什么这些sudo命令会失败?
EN

Stack Overflow用户
提问于 2013-11-19 17:01:11
回答 2查看 2K关注 0票数 2

我想以普通用户的身份从脚本中添加一个crontab条目,所以我使用sudo获得root权限,但是无论我尝试什么,都会失败。

代码语言:javascript
复制
$ 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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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"

票数 1
EN

Stack Overflow用户

发布于 2013-11-19 17:04:47

因为你在跑

代码语言:javascript
复制
sudo echo .......

以"su“的形式将结果写入/etc/crontab,并使用:

代码语言:javascript
复制
>> /etc/crontab

所以在你写信给/etc/crontab的那一刻,你不再是"su“了

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20077513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档