设置linux的能力CAP_SYS_RESOURCE

我试图在Ubuntu 10.04机器上授予用户CAP_SYS_RESOURCE的linuxfunction。 我需要这个,以便这个用户运行的进程可以写入/ proc / self / oom_adj(是的,我意识到这已经被弃用,但是我将被困在内核2.6.32一段时间)。

我已经安装了libcap2和libcap2-bin。 我已经在/etc/security/capability.conf中为用户授予了cap_sys_resourcefunction,并且已经validation过,通过pam加载了pam_cap.so,但是仍然无法降低我的oom_adj分数。 我已经重新启动会话后,任何改变这个文件,我甚至重新启动。 我试过在capability.conf中使用CAP_SYS_RESOURCE的值(24,来自/usr/include/linux/capabilities.h),而不是名字,但是也没有帮助。

$ cat /proc/$$/oom_adj 0 $ echo -1 > /proc/$$/oom_adj -bash: echo: write error: Permission denied $ echo 1 > /proc/$$/oom_adj $ cat /proc/$$/oom_adj 1 $ egrep -v "^#" /etc/security/capability.conf cap_sys_resource delete none * 

(是的用户名是删除)

据我所知,我正在得到这个能力

 $ getpcaps $$ Capabilities for `10366': = cap_sys_resource+i 

我在这里错过了什么? 我在做什么明显错误? 任何指针赞赏。

谢谢!

我从来没有想过如何在会话\进程级别做到这一点,但我使用的解决方法是

 $ sudo setcap cap_sys_resource=pe my_program 

所以使用基于文件的function设置,我可以写入/ proc / self / oom_adj