UNIX套接字权限(Linux)(UNIX Socket permissions (Linux))
我在C中使用UNIX套接字来开发服务器。 从手册:
在Linux实现中,文件系统中可见的套接字符合它们所在目录的特性。它们的所有者,组及其权限可以更改。 如果进程对创建套接字的目录没有写入和搜索(执行)权限,则创建新套接字将失败。连接到套接字对象需要读/写权限。 这种行为不同于忽略UNIX域套接字权限的许多BSD派生系统。 便携式程序不应该依赖此功能来确保安全性。
我有一条世界可写的道路。
$ ls -ld api
drwxrwxrwx 2 root www-data 4096 Feb 15 21:57 api
根目录下的进程在此路径中创建一个套接字:
$ ls -l api/socket
srwxr-xr-x 1 root root 0 Feb 15 21:57 api/socket
由于权限问题,以用户身份运行的另一个进程无法连接到套接字。 如果我手动将套接字权限更改为可由所有人写入,则其他进程可以成功连接。
为什么父级权限不足以使该套接字可写,如文档所述?
这种情况下的最佳做法是什么?
I am using UNIX sockets in C to develop a server. From the manual:
In the Linux implementation, sockets which are visible in the filesystem honor the per‐ missions of the directory they are in. Their owner, group and their permissions can be changed. Creation of a new socket