【发布时间】:2018-01-16 05:55:38
【问题描述】:
消息队列是使用“mq_open”函数实现的,具有默认权限。我知道我们可以使用 mode 参数设置消息队列的权限。但是一旦我们编译了系统,除了再次编译二进制文件之外,是否有可能使用其他一些 linux 命令(在运行时)更改消息队列的权限?
【问题讨论】:
标签: linux permissions runtime message-queue
消息队列是使用“mq_open”函数实现的,具有默认权限。我知道我们可以使用 mode 参数设置消息队列的权限。但是一旦我们编译了系统,除了再次编译二进制文件之外,是否有可能使用其他一些 linux 命令(在运行时)更改消息队列的权限?
【问题讨论】:
标签: linux permissions runtime message-queue
考虑使用以下方法:
int mq_setattr(mqd_t mqdes, struct mq_attr *newattr,
struct mq_attr *oldattr);
mq_setattr() 使用 newattr 指向的 mq_attr 结构中提供的信息设置消息队列属性。
唯一可以修改的属性是mq_flags中O_NONBLOCK标志的设置。
newattr 中的其他字段被忽略。如果 oldattr 字段不为 NULL,则它指向的缓冲区用于返回一个 mq_attr 结构,该结构包含与 mq_getattr() 返回的信息相同的信息。
不幸的是,您可以看到它相当有限。
【讨论】: