ping: ソケット: 権限が拒否されました。

ping: ソケット: 権限が拒否されました。

私たちはPHPで当社の製品の管理UIを開発しています。 Centos 7およびApache Webサーバーでホストされています。ユーザーはこのUIを使用してIPアドレスをpingできる必要があります。したがって、私たちはPHPコードを呼び出しexec(IPAddress)、結果を得てユーザーに表示する必要があります。問題は、エラーメッセージが発生することです。エラーは次のとおりです。

ping: socket: Permission denied

シェルで実行するときにsetenforce 0Centosを使用すると、PHPでpingコマンドを実行できます。 PHPがpingコマンドを永久に実行するようにCentosに指示する方法は?

更新:以下を使用してaudit2whyこのメ​​ッセージを受信しました。

type=AVC msg=audit(1502697341.249:11426): avc:  denied  { create } for
pid=28530 comm="ping" scontext=system_u:system_r:httpd_t:s0
tcontext=system_u:system_r:httpd_t:s0 tclass=rawip_socket

    Was caused by:
    Missing type enforcement (TE) allow rule.

    You can use audit2allow to generate a loadable module to allow this access.

ベストアンサー1

SELinuxがPHPの実行をブロックしていますping。 PHPスクリプトに正しいコンテキストを指定する必要があります。

場所にいると仮定すると、/var/www/html/次のことが必要です。

semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html(/.*)?'
restorecon -R -v /var/www/html/

ただし、これはサーバーのrootユーザーが実行する必要があります。

setenforce 0注:このコマンドはSELinuxを無効にするため、入力後にpingが機能します。 SELinuxを永久に無効にするには(セキュリティチェックがオフになるため推奨されません)、編集して/etc/sysconfig/selinux指定しますSELINUX=disabled

おすすめ記事