哪些系统不尊重套接字读/写权限?

哪些系统不尊重套接字读/写权限?

man 7 unix在 Linux 上状态:

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

哪些系统会忽略 UNIX 域套接字的权限?

答案1

例如,HP-UX 会忽略套接字文件的权限。

请注意,文档正在谈论套接字文件的权限。所有实现都尊重父目录的权限 - 可移植程序必须在私有目录中创建套接字,而不是依赖于umask在公共目录中创建具有限制性权限(通过 )的套接字。

答案2

鉴于此,不确定他们的意思

  • 套接字起源于 BSD 和 4.3BSD,文档明确规定需要写入权限connect()
  • 在 Linux 上也是如此,不需要许可,只需写入。

POSIX 好像没有要求connect()如果套接字文件不可写,但明确允许它,则失败(connect如果指定的套接字不可写,可能会失败 [...])。那“可能”表明可能确实存在不遵守权限的系统,但我怀疑它们是否是 BSD 派生的。

相关内容