问题描述
我一直在尝试使用Lua中的ssl.https库发送一个https请求,但是无论我提供什么url,我总是会被拒绝权限并且没有其他值(例如标头等)。我使用的linux是CentOS Linux版本7。
这是示例代码:
local httpsocket = require("socket.http")
local httpssocket = require ("ssl.https")
local ltn12 = require("ltn12")
local res,code,response_headers,status = httpssocket.request("https://www.google.com")
module:log("info","%s %s",code.."",response_headers);
代码本身是prosody插件的一部分,本示例的最后一行将其打印出来:
permission denied <nil>
我的问题是如何解决此问题,以便可以访问该页面?
编辑:看来问题可能出在运行该服务的用户上,并且需要root用户特权,否则它会为端口低于1024的端口抛出ACCES错误。有人知道在这种情况下该怎么做吗?
解决方法
所以...在再次尝试解决此问题后,我终于找到了解决方案。如果您遇到服务无法在 centOS 上发送 http/https 请求的问题,则必须运行一个命令来解决此问题:
setsebool -P nis_enabled 1
对于那些可能有类似问题但与我不完全相同的人,请查看 /var/log/audit/audit.log
以了解与您的程序、进程、服务等相关的任何内容,然后使用以下命令:
grep <pattern_to_match_specific_log> /var/log/audit/audit.log | audit2why
这会给你一个失败的原因以及如何修复它