我以普通用户的身份在共享 linux 服务器上工作,没有 root 访问权限。我可以启动一个在本地 tcp 端口上侦听的程序,并且是唯一能够连接到该端口的用户吗?我可以控制程序监听的地址和端口。
例如,该程序可以是 Web 服务器的开发/测试版本。
此外,由于服务器仅接受端口 22 (ssh) 上的传入 tcp 连接,因此我通过 ssh 转发本地端口,因此我可以使用笔记本电脑连接到该端口。ssh -L 8080:localhost:8000 evaben@dice01
因此,仍然允许这样做或类似的解决方案会很好。
是的。如果您不是 root,您将只能监听所谓的“高端口”,即端口号 > 1024。
不。如果您有 root 访问权限,您可能已经能够使用 做一些事情
iptables
,但是在接受端口上的连接时没有基于用户的访问控制的概念。只有 root 可以设置防火墙。
一种可能性是在 Docker 等容器中运行程序。这需要 root 权限,但即使您没有 root 访问权限,您也有可能被允许实例化 Docker 容器。
如果您没有直接或间接的方式来设置网络保护,则需要修改程序的工作方式。让它在Unix 套接字而不是 TCP 上侦听。假设程序与标准库动态链接(实际上所有程序都是),您不需要更改程序本身,只需更改运行方式即可。您可以使用
LD_PRELOAD
, 通过为 TCP 套接字打开函数加载一个包装器来代替打开 Unix 套接字来执行此操作。ttu
正是这样做的(根据它的文档,我从未使用过它)。