如何在Linux下为socket生成随机文件名?

Jic*_*hao 4 c sockets linux random

我想制作一个使用本地命名空间套接字的小程序,我需要使用临时文件名作为套接字的地址.

那么如何在Linux下生成随机文件名呢?

+我在Debian Linux下使用C编程语言.
+根据GNU C库参考,tmpname是不安全的.但安全的tmpfile和mkstemp 创建打开生成的文件.这里有任何安全非创建 - 打开.换句话说,该函数应禁止任何其他请求在特定目录下创建生成的文件名.

谢谢.

bdo*_*lan 7

如果您在C中执行此操作,请使用mkdtemp创建目录,并将套接字放在此目录中.

其他功能,如tmpnammktemp不安全; 因为它们不会为您创建和打开临时文件,所以很容易易于将预先存在的符号链接(由猜测您的临时文件名的攻击者放置)发送到某个重要文件(如/etc/passwd),覆盖它.

请注意,没有办法"锁定"路径 - 你所能做的就是在那里创造一些东西.如果你最终需要在那里放一个套接字,那么使用目录作为占位符是你最好的选择.