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

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

ret_val = chmod(filename, 0777); 

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

有任何想法吗?

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

来自man 7 unix

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

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