我想制作一个使用本地命名空间套接字的小程序,我需要使用临时文件名作为套接字的地址.
那么如何在Linux下生成随机文件名呢?
+我在Debian Linux下使用C编程语言.
+根据GNU C库参考,tmpname是不安全的.但安全的tmpfile和mkstemp 创建并打开生成的文件.这里有任何安全和非创建 - 打开.换句话说,该函数应禁止任何其他请求在特定目录下创建生成的文件名.
谢谢.
如果您在C中执行此操作,请使用mkdtemp
创建目录,并将套接字放在此目录中.
其他功能,如tmpnam
或mktemp
不安全; 因为它们不会为您创建和打开临时文件,所以很容易易于将预先存在的符号链接(由猜测您的临时文件名的攻击者放置)发送到某个重要文件(如/etc/passwd
),覆盖它.
请注意,没有办法"锁定"路径 - 你所能做的就是在那里创造一些东西.如果你最终需要在那里放一个套接字,那么使用目录作为占位符是你最好的选择.