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

时间:2011-05-12 11:54:38

标签: c sockets permissions

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

ret_val = chmod(filename, 0777);

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

有什么想法吗?

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

1 个答案:

答案 0 :(得分:19)

来自man 7 unix

  

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

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