我有一个WebHook配置为与Telegram Bot交换,我想在bot命令到达时运行一些root命令。我们知道Telegram Bot将https请求发送到我们的Web钩子,所以我只能运行shell脚本作为 www-data 用户。但我实际上想以root身份运行它。
我的脚本kill.sh:
#!/bin/bash
kill -9 $1
从php我运行:
exec('kill.sh ' . $pidFromTelegramMessage);
版权:
$ ls -al kill.sh
-r-xr-x--- 1 root www-data 24 Dec 16 15:27 kill.sh*
我甚至尝试将此脚本放在/ tmp目录中,但我也无法正常工作。总是得到:
/tmp/kill.sh:3:kill:不允许操作
答案 0 :(得分:1)
我发现只有一种方法可以做到这一点。我通过运行 visudo 命令将此行放入 / etc / sudoers :
www-data ALL = NOPASSWD: /bin/kill, /usr/bin/tail, /tmp/run.sh
向/tmp/run.sh添加执行权限:
chmod a+x /tmp/run.sh
现在您可以将这三个命令作为www-data user:
运行sudo kill -9 32233
sudo /tmp/run.sh
但是在允许任何人执行/tmp/run.sh脚本之前你必须要三思而后行。