Ali*_*cia 6 permissions socket portability
man 7 unix
在 Linux 上说:
在 Linux 实现中,文件系统中可见的套接字尊重它们所在目录的权限。它们的所有者、组和权限可以更改。如果进程在创建套接字的目录上没有写入和搜索(执行)权限,则创建新套接字将失败。 连接到套接字对象需要读/写权限。这种行为不同于许多 BSD 派生系统,后者忽略 UNIX 域套接字的权限。便携式程序不应依赖此功能来确保安全。
哪些系统会忽略 UNIX 域套接字的权限?
例如,HP-UX 会忽略套接字文件的权限。
请注意,文档正在讨论套接字文件的权限。所有实现都尊重父目录的权限 - 可移植程序必须在私有目录中创建套接字,而不是依赖于umask
在公共目录中创建具有限制性权限(通过 )的套接字。
鉴于此,不确定他们的意思
connect()
.如果套接字文件不可写,POSIX 似乎并不要求失败,但明确允许它(如果指定的套接字不可写,可能会失败 [...])。这个“可能”表明可能确实存在不遵守权限的系统,但我怀疑它们是否是 BSD 派生的。connect()
connect