linux - 从 crontab 执行时,sudo 密码自动化没有按预期工作?

标签 linux bash cron

我有一个shell脚本如下。

abc.sh

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

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

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

最佳答案

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"'

关于linux - 从 crontab 执行时,sudo 密码自动化没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16054900/

相关文章:

linux - 访问HTTP请求平台

php - 大量用户的 Cron 作业管理

linux - 通过 ssh 发送 Ctrl_C

php - SQLite FTP 下载/上传问题

bash - 将 Shell 中文件名或目录中每个单词的首字母大写

bash - 奇怪的字符 docker exec

php - drupal 7 如何让 cron 作业自动运行

linux - 为什么 crontab 成功运行了我的 shell 脚本,但无法启动我的二进制文件程序?

linux - 在某些情况下添加分隔符

linux - 如何删除 sed 生成的换行符