如何创建 POSIX 共享消息队列而不将其创建为仅作为 root 访问?
Posted
技术标签:
【中文标题】如何创建 POSIX 共享消息队列而不将其创建为仅作为 root 访问?【英文标题】:How can I create a POSIX shared message queue without it created as root access only? 【发布时间】:2019-10-21 05:51:44 【问题描述】:我正在使用 POSIX mqueue API 创建一个消息队列:
mq_open("/myqueue", O_CREAT | O_WRONLY, O_WRONLY, NULL)
我还挂载了消息队列对象的目录:
su
mkdir /dev/mqueue
mount -t mqueue none /dev/mqueue
exit
当我运行我的程序时,消息队列出现在 /dev/mqueue 中,具有权限:
---------x
我无法与此消息队列交互,并且它没有通过 ipcs 命令显示。
如何在 Ubuntu 18.04 中创建供用户级应用程序使用的 POSIX 消息队列?
【问题讨论】:
Permission denied when trying to create message queue using POSIX Message Queues的可能重复 【参考方案1】:你对函数的参数是错误的。您将 O_WRONLY
作为 mode 传递,但它是一个标志,就像另一个 O_
* 一样。相反,您应该这样做:
mq_open("/myqueue", O_CREAT | O_WRONLY, 0600, NULL);
或您想要的其他文件访问模式 (0600
= rw-------
)。
【讨论】:
以上是关于如何创建 POSIX 共享消息队列而不将其创建为仅作为 root 访问?的主要内容,如果未能解决你的问题,请参考以下文章
如何为页面创建 facebook 事件而不将其发布到页面墙上?