在 Linux 中写入命名管道的最佳、最安全的方法是啥?
Posted
技术标签:
【中文标题】在 Linux 中写入命名管道的最佳、最安全的方法是啥?【英文标题】:What is the best, most secure way to write to a named pipe in Linux?在 Linux 中写入命名管道的最佳、最安全的方法是什么? 【发布时间】:2013-04-17 06:07:40 【问题描述】:在 Linux 中写入命名管道的最佳、安全方法是什么?或者,如何使命名管道安全?
这是我使用 php 在 linux 上写入管道的方法:
$con = fopen("/tmp/myFIFO", "w");
fwrite($con, "UP\n");
fclose($con);
我希望让它更安全。
这就是我在 C 中创建管道的方式:
int pc;
char mode[] = "0777";
int i = strtol(mode, 0, 8);
pc = mkfifo(FIFO, 0);
if(pc < 0)
printf("Failed in creating a pipe\n");
printf("Exiting...\n");
exit(1);
else
printf("Success in Creating Pipe\n");
chmod("/tmp/myFIFO", i);
【问题讨论】:
你想做什么是什么意思secure
?你有什么顾虑?
好吧,我只是认为创建 FIFO 是有风险的。使用命名管道时可能会出现安全问题,所以我只想让它安全。如果我错了,请纠正我。谢谢。
为什么创建 FIFO 比创建普通文件风险更大?或者使用pipe(2)
系统调用创建一个匿名管道?
【参考方案1】:
您可以使用umask
来控制您创建的文件的权限。您在 php 中也有 chmod
。
但是,您也可以使用 posix_mkfifo
,这完全符合您的目的:
bool posix_mkfifo(字符串$pathname,int $mode)
【讨论】:
以上是关于在 Linux 中写入命名管道的最佳、最安全的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 Linux 上打开命名管道以在 Python 中进行非阻塞写入吗?
LINUX FIFO 命名管道 (IPC) 在特定文件描述符处停止写入/读取消息
我可以将 cv::Mat 作为 JPEG 数据写入命名管道吗?