防火墙ip封堵
调试脚本 $results = shell_exec('echo Abcd@8899 | sudo -S firewall-cmd --add-port=7029/tcp --permanent 2>&1 ');
2.php.ini 放开 shell_exec 执行权限
3.www加入sudoer,并且www需要密码,你需要passwd www给www用设置一个密码。
方案一
1. www先去掉sudoer权限,并且在/etc/passwd中恢复/sbin/nologin,禁止www用户的登录权限,来保证安全
2. 在php的脚本,执行的命令改为,touch /tmp/run;sleep 2s;cat /tmp/result.txt;,作为一个触发命令
while true; do
if [ ! -f "/tmp/run" ]; then
echo "command here"
# 执行结束后,清理触发文件
rm -f /tmp/run
fi
sleep 1s
done
3. 计划任务的时间颗粒度低,可以使用systemd服务,来专门执行扫描的动作
方案二
1. 同上
2. 我写一个go程序,接收请求,执行脚本,然后返回。
3. 在php的脚本,执行的命令改为:curl http://127.0.0.1:8080/?param=test,会触发我的程序执行脚本。
4. 程序以systemd服务运行。
如果编译shell
安装go,然后go build就行了。