unix 域套接字 - 保护接收器

Jak*_*ake 4 unix sockets

我正在学习有关 unix 域套接字的教程。我有一个关于接收器部分的问题。

如果进程正在使用 listen() 并等待传入​​请求:

  • 它有哪些选择来确保自身安全?有没有办法识别谁发送了请求?它可以对谁可以向它发送请求施加一些限制吗?

  • 是否有没有安全选项的情况,如果一个进程使用 listen() 它对任何请求完全开放?

Jon*_*art 5

Linux 上的一般想法是安全性是通过文件系统中 UNIX 套接字“文件”上的文件权限来强制执行的。进程必须具有对套接字特殊文件的读/写访问权限。

unix(7)手册页指出:

在 Linux 实现中,文件系统中可见的套接字尊重它们所在目录的权限。它们的所有者、组和权限可以更改。如果进程在创建套接字的目录上没有写入和搜索(执行)权限,则创建新套接字将失败。连接到套接字对象需要读/写权限。这种行为不同于许多 BSD 派生系统,后者忽略 UNIX 域套接字的权限。便携式程序不应依赖此功能来确保安全。

不过,似乎目录搜索权限任何地方受到尊重。因此,您的套接字只能connect()由对您的套接字特殊文件的整个路径具有执行访问权限的用户进行编辑 - 在所有操作系统上都是如此。

有关的: