Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP套接字绑定特权端口_Php_Sockets - Fatal编程技术网

PHP套接字绑定特权端口

PHP套接字绑定特权端口,php,sockets,Php,Sockets,我正在尝试绑定并侦听特权端口,但我一直收到此消息“权限被拒绝” 以下是我尝试过做的事情: chgrp www-data file.php chmod 770 file.php 为文件提供了正确的执行权限,但仍然没有任何内容 setcap cap_net_bind_service=+ep file.php 不起作用,可能是因为它不是可执行文件 posix_setuid(0) 已授予我的脚本根权限,但它没有更改脚本的用户id。它保持不变。您对文件权限和执行所需的权限存在误解,在本例中,绑定到低

我正在尝试绑定并侦听特权端口,但我一直收到此消息“权限被拒绝”

以下是我尝试过做的事情:

chgrp www-data file.php
chmod 770 file.php
为文件提供了正确的执行权限,但仍然没有任何内容

setcap cap_net_bind_service=+ep file.php
不起作用,可能是因为它不是可执行文件

posix_setuid(0)

已授予我的脚本根权限,但它没有更改脚本的用户id。它保持不变。

您对文件权限和执行所需的权限存在误解,在本例中,绑定到低于1024的端口号

文件权限仅处理可以读取和写入文件的用户。即当您这样做时:

chmod 770 file.php
您允许file.php按所有者和组进行rw,但组外的用户无权访问

在这种情况下,您需要一个特权用户来执行文件根目录,因为它是唯一能够绑定到特权端口的帐户。然而,让PHP靠近根目录是一种安全风险,超出了这个问题的讨论范围。因为您需要root用户,所以最好允许运行web服务器的标准非特权用户仅在需要时获得具有root权限的shell。然后在这个私有shell中触发脚本

下面是一个项目,它允许PHP获取一个真正的Bash shell并作为root用户与之交互。在这里获取:

下载后,您只需使用以下代码:

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1  = $shell->exeCmd('php /full/path/to/file.php');

这个程序看起来像什么?它叫什么名字?更改文件的所有权或权限将不允许它执行通常无法执行的操作。如果有任何程序可以调用posix_setuid0,那么事情将变得非常混乱!这个脚本正在被jqueryajax调用调用,这个脚本应该监听这个端口并与它监听的w/e进行呼应,但是我需要先绑定和监听这个脚本。是的,如果任何程序可以更改权限,事情会变得非常混乱。你能显示你用来执行脚本的命令吗?