【问题标题】:CentOS 7 unable to connect clamd.sock file (Permission denied error)CentOS 7 无法连接 clamd.sock 文件(权限被拒绝错误)
【发布时间】:2018-09-28 20:26:54
【问题描述】:

我正在尝试使用 clamAV 扫描 PHP 服务器上上传的文件。我已经在我的服务器(Centos 7)上安装了 ClamAV。目前,我使用的是 PHP 7,所以我使用 Clamd 套接字连接来扫描上传的文件。我启用了 PHP 套接字,clamd.sock 文件存在于 /var/run/clamd.scan/ 具有 apache 所有者的文件夹中。

我的 Socket 连接代码 -

        $socket = socket_create(AF_UNIX, SOCK_STREAM, 0);

        if(socket_connect($socket, '/var/run/clamd.scan/clamd.sock')) {
            return $socket;
        }

当我尝试在浏览器上运行上述代码时,我收到socket_connect(): unable to connect [13]: Permission denied 的错误,但如果我以 root 用户身份通过​​命令行运行 PHP 代码,它工作正常。

我知道 Centos 的 SELinux 策略存在一些问题,就好像我禁用了 SELinux 策略一样,在浏览器中一切正常。我检查了httpd_can_network_connect --> onantivirus_can_scan_system --> on 都打开了。

问题在于为apache 用户访问/var/run/ 文件夹内的任何内容,SELinux 的某些内容(某些策略)正在阻止 apache 连接到 clamd 套接字文件。有任何想法吗?

【问题讨论】:

    标签: php sockets centos7 clam


    【解决方案1】:

    经过调试,得知这是 SELinux 政策问题。 您需要在 SELinux 中启用 daemons_enable_cluster_mode 策略。

    启用 daemons_enable_cluster_mode:

    setsebool -P daemons_enable_cluster_mode 1
    

    在我的例子中,这将允许通过另一个服务(如 Apache)执行 ClamAV 扫描。

    【讨论】:

    • 我试过这个,但仍然出现 Permission denied 错误。你能分享你所有的步骤安装吗?
    猜你喜欢
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 2020-08-25
    • 2013-12-16
    • 2021-03-11
    相关资源
    最近更新 更多