首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python posix IPC -以不同用户身份运行的进程之间的通信

Python posix IPC -以不同用户身份运行的进程之间的通信
EN

Stack Overflow用户
提问于 2017-09-03 17:27:51
回答 1查看 1.6K关注 0票数 0

我正在尝试使用POSIX IPC在Linux上的两个不同进程之间建立通信。我正在使用基于这个库http://semanchuk.com/philip/posix_ipc/的posix消息队列的Python3。

问题是,我想要在以root身份运行的服务器和以普通用户权限(单独的python程序)运行的客户机之间进行通信。

如果客户端创建了消息队列,那么它就可以工作,大概是因为它是在普通用户下分配的,并且在root下运行的进程具有更高的权限。但是,我希望服务器创建消息队列,因为这样可以在服务器终止时正确地管理消息队列的关闭。

根进程是否可以创建一个IPC消息队列,并允许在不同用户下运行的进程写入该队列?如果是这样的话,是怎么做的?

或者是否有任何可以替代POSIX IPC的替代方案(例如,系统V)?我希望避免使用UNIX套接字,因为我不想要使用的额外开销。

--更新最近的尝试--

我已经阅读了我能找到的所有文档。图书馆的自述文件说,他们发现无论权限如何,它都可以工作,但这不是我的经验。

Linux编程接口(该库所依赖的)声明同时使用模式和umask,但是即使我在消息队列设置中使用os.umask(000)后跟mode=666,我仍然得到来自客户机的拒绝许可。

EN

回答 1

Stack Overflow用户

发布于 2017-09-03 17:56:39

您可能希望尝试Linux域套接字。

可以使用文件系统权限来管理对基于文件系统的文件系统的访问。抽象命名空间中的域套接字可以通过检查连接进程的凭据(PID/UID)来保护-另请参阅:"SCM_RIGHTS“。

域套接字非常快,Xorg使用了它们,所以内核开发人员对它们进行了很好的优化。它们也比POSIX IPC (在Android上受支持)更可移植。对于面向消息的IPC,基于流的模式可能有点笨拙,因此您应该考虑切换到数据报模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46022012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档