我有一个小脚本,我想在 cron 中以 user1 的身份运行它。如果我以 user1 身份登录并执行脚本,它就可以正常工作,但是当我尝试在 cron 中运行它时,它不起作用。如果我以 root 身份运行 cron,一切都会正常。以下是我正在做的事情。
脚本有以下命令
sudo virsh list --all | grep myvm | awk '{print $3}'
running
因此,如果我以 user1 身份运行它或将其放入文件中,一切都会正常。但我将其添加为
*/5 * * * * user1 /path/to/script
如果我在 cron 中以 root 身份运行,则无需 sudo * * * * * root /path/to/script 即可顺利运行。
我的 Sudoers 文件
Cmnd_Alias KVMCMD = /usr/bin/virsh list --all
%user1 ALL=(ROOT) NOPASSWD: KVMCMD
我不能直接责怪 sudoers,因为手动运行命令有效(可能是因为 tty)
答案1
回答我自己的问题。
解决方案之一是
编辑(以 root 身份)文件
/etc/sudoers
并注释掉以下行:
Defaults requiretty