linux 创建socket权限,UNIX套接字权限(Linux)(UNIX Socket permissions (Linux))

本文讨论了在Linux中使用UNIX套接字时遇到的权限问题。即使父目录具有世界写入权限,套接字本身仍可能由于权限设置导致连接失败。解决方法包括在创建套接字后,通过`chown`或`chmod`改变其权限,以允许其他用户进行读写操作。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值