selinux限制下载远程图片与访问网络,get_headers与curl都false
Author:zhoulujun Date:
上次折腾结果:服务器升级至centos8 网站配置-php与mysql从5.6升级到php7与msyql8,发现网站服务一切正常,但是,发现UEditor编辑器,复制进去的远程图片,无法远程下载到本地。最先开始以为是UEditor配置问题。然后查了下配置,都是好的。经过一番排查后,发现,php根本无法远程下载图片,因为php根本无法访问远程网络
测试脚本如下
<?php $imgUrl = 'https://images2018.cnblogs.com/blog/1016915/201807/1016915-20180717131701944-1722861802.png'; $is_ok = http_request_json($imgUrl); $heads = get_headers($imgUrl, 1); echo var_dump($is_ok); echo json_encode($heads); function http_request_json($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//https的URL需要用到 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//https的URL需要用到 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result[1] = curl_exec($ch); $result[0]= curl_getinfo($ch,CURLINFO_HTTP_CODE); curl_close($ch); return $result; }
最下开始有点懵逼。然后看下selinux,关闭selinux,一切正常
setenforce 1 就为false
setenforce 0 就为true。一切正常。
selinux 如何放开这个权限呢
检查网络访问的配置
getsebool -a | grep httpd_can_network_connect
如结果如下
httpd_can_network_connect --> off
则执行如下命令打开:
临时开启selinux网络访问权限:临时配置,重启后失效
setsebool httpd_can_network_connect=1
长期开启selinux网络访问权限:写入配置文件的命令,重启后保留
setsebool -P httpd_can_network_connect 1
selinux限制httpd对外访问的权限,这个是有必要的,至于会带来哪些安全风险,本人也不是非常清楚,主要是脚本注入后,变肉鸡?不过也先不管了,望大神给我分析下。拜谢!
所以只需设置
setsebool -P httpd_can_network_connect=1,
然后,去查看selinux的权限列表,getsebool -a |grep httpd
centos8 网站服务器 selinux设置
网上搜索,一般都是说关闭selinux,但是,个人不建议关闭
设置selinux给web目录读权限
chcon -v -R --type=httpd_sys_content_t /data/www/
设置selinux给web目录写权限
chcon -R -t httpd_sys_rw_content_t /data/www/
具体参看《centos8 nginx server root指向自定义目录如(/data/www),访问报403 404,所有文件用户组为root 权限为755》
转载本站文章《selinux限制下载远程图片与访问网络,get_headers与curl都false》,
请注明出处:https://www.zhoulujun.cn/html/OS/Linux/LinuxDevops/8323.html