如何更改linux套接字文件的权限?

Cla*_*diu 7 c sockets permissions

我有一个程序,它创建一个套接字,然后我想更改套接字文件的权限:

ret_val = chmod(filename, 0777);
Run Code Online (Sandbox Code Playgroud)

,但它不会改变,即使ret_val为0.如果我在常规文件上尝试相同的操作,它也可以.

有任何想法吗?

PS:我以root身份运行程序,因此它拥有所需的所有权限.

Die*_*Epp 19

来自man 7 unix:

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

因此,如果要控制套接字上的权限,为了便于移植,您应该控制包含套接字的目录的权限.

  • 忽略套接字对象上的perms是垃圾.去Linux吧! (4认同)