从crontab执行时,sudo密码自动化无法正常工作?

时间:2013-04-17 08:13:41

标签: linux bash crontab

我有一个shell脚本如下。

abc.sh

echo "Password" | sudo -S /etc/init.d/mysqld status

当我直接从shell执行时它工作正常。当我尝试执行与 cron(crontab)相同的操作时,我的问题就出现了,它无法正常工作。 sudo -S选项与crontab不兼容。是否有任何其他选项在shell脚本(自动化)中指定sudo密码

如果我有root访问权限,我可以尝试通过添加NOPASSWD选项来修改/ etc / sudoers文件。但不幸的是我没有root访问权来修改/ etc / sudoers文件。我只有sudo访问才能执行某些命令。

1 个答案:

答案 0 :(得分:1)

Sudo -S似乎适用于我的Ubuntu 12.04:

# m h  dom mon dow   command
 * * * * * cat /etc/shadow > /tmp/shadow.txt 2>&1

结果:

$ cat /tmp/shadow.txt 
cat: /etc/shadow: Permission denied

,而

# m h  dom mon dow   command
* * * * * echo 'password' | sudo -S cat /etc/shadow > /tmp/shadow.txt 2>&1

结果:

$ head /tmp/shadow.txt 
[sudo] password for user: root:!:15736:0:99999:7:::
daemon:*:15453:0:99999:7:::
bin:*:15453:0:99999:7:::
...

修改

这是一个让上面的Ubuntu代码在CentOS 6.4上运行的黑客攻击:

* * * * * export DISPLAY=:0 && gnome-terminal -e 'bash -c "echo password | sudo -S cat /etc/shadow > /tmp/shadow 2>&1"'