如何使用 CAP_SYS_RESOURCE 执行进程
我正在使用 Linux POSIX mqueue 实现,但遇到问题。 对于当前内核,最大消息大小为 1MB,但我需要没有限制。
man mq_overview
表示如果进程具有特权(a具有 CAP_SYS_RESOURCE 功能的进程)它没有限制。 我认为 root 执行的进程已经获得了特权,但我仍然收到“消息太长”错误(我的消息有 2MB)。
如何向进程添加 CAP_SYS_RESOURCE
功能?
I'm using Linux POSIX mqueue implementation, and I have a problem.
For current kernel, the max message size is 1MB, but I need to have no limit.
man mq_overview
says that if the process is privileged (a process that has CAP_SYS_RESOURCE
capability) it has no limits.
I thought that a process executed by root was already privileged, but I'm still getting "message too long" error (my message has 2MB).
How can I add CAP_SYS_RESOURCE
capability to the process?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我不知道是否可以将其设置为正在运行的进程(我猜不可能),但您可以使用
# setcap 'CAP_SYS_RESOURCE=+ep' /path/to/executable 将 CAP_SYS_RESOURCE 功能授予可执行文件
(作为超级用户)。在此示例中,
+ep
会降低CAP_SYS_RESOURCE
能力的允许和有效。不过,手册页capability(7)
和setcap(8)
是获取更多信息的有用来源。I don't know if it is possible to set it to a running process (I guess not) but you can grant the CAP_SYS_RESOURCE capability to an executable file using
# setcap 'CAP_SYS_RESOURCE=+ep' /path/to/executable
(as super user).In this example the
+ep
turns down into raise theCAP_SYS_RESOURCE
capibility to be permitted and effective. However the man pagescapabilities(7)
andsetcap(8)
are useful sources for further information.您可以更改此文件 /proc/sys/fs/mqueue/msgsize_max 上最大消息大小的上限
我希望它有效
you can change the ceiling on the maximum message size on this file /proc/sys/fs/mqueue/msgsize_max
I hope it works
尝试函数中的 RLIMIT_MSGQUEUE 选项: int setrlimit(int resource, const struct rlimit *rlim);
手册页: http://www.kernel .org/doc/man-pages/online/pages/man2/setrlimit.2.html
:)
try the option RLIMIT_MSGQUEUE in function: int setrlimit(int resource, const struct rlimit *rlim);
man page: http://www.kernel.org/doc/man-pages/online/pages/man2/setrlimit.2.html
:)