Unix 域套接字 - 保护接收方

4
我正在学习关于Unix域套接字的教程。我对接收方有一个问题。
如果一个进程正在使用listen()并等待传入请求:
- 它有哪些选项可以使自己更安全?它有办法识别是谁发送了请求吗?它能对谁可以向其发送请求施加一些限制吗?
- 如果一个进程使用listen(),那么是否完全开放给任何请求,没有安全选项可用?
1个回答

5
一般认为Linux的安全由文件系统中UNIX套接字“文件”的文件权限强制执行。进程必须对套接字特殊文件具有读/写访问权限。 unix(7) man page指出:
在Linux实现中,可见于文件系统的套接字遵守它们所在目录的权限。它们的所有者、组和权限可以更改。如果进程没有对创建套接字的目录具有写入和搜索(执行)权限,则无法创建新套接字。连接到套接字对象需要读/写权限。此行为与许多BSD衍生系统不同,后者忽略UNIX域套接字的权限。便携式程序不应依赖此功能进行安全性。
但是,似乎在任何地方都遵守目录搜索权限。因此,只有具有整个路径上的执行访问权限的用户才能将其套接字connect()到-这在所有操作系统上都是正确的。
相关:

那么文件必须归接收者所有,当连接时发送者将受到ACL的限制吗? - Jake
@Jake 是的,我现在正在寻找来源,但我相当有信心它可以像人们期望的那样工作。 - Jonathon Reinhart
@Jake 在Linux以及许多其他系统中,文件的权限位得到了保留(请参见此处)。进程需要读/写访问权限才能连接到Unix套接字,您可以使用用户/组/其他权限或posix ACLs以通常的方式进行管理。 - nos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接