在 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 数据写入命名管道吗?

Windows 上的 MySQL 命名管道——更快的最佳实践,还是坏主意?

Linux。 Python。从命名管道读取