如何更改/proc/self/pagemap文件的权限?

如何更改/proc/self/pagemap文件的权限?

我想使用 sudo chmod 将页面映射文件权限更改为 755 或 744。但该命令抛出错误,提示操作不允许。动机是允许用户在不授予 sudo 访问权限的情况下读取页面映射文件(其自己的)。

当用户具有 sudo 访问权限时,它正在工作,他允许读取页面映射文件。但我想阻止用户拥有 sudo 访问权限,但应该允许他单独读取此页面映射文件。

答案1

Linux 内核从 4.0 开始sudo需要/proc/<pid>/pagemap

这记录在: https://github.com/torvalds/linux/blob/v4.9/Documentation/vm/pagemap.txt

   Since Linux 4.0 only users with the CAP_SYS_ADMIN capability can get PFNs.
   In 4.0 and 4.1 opens by unprivileged fail with -EPERM.  Starting from
   4.2 the PFN field is zeroed if the user does not have CAP_SYS_ADMIN.
   Reason: information about PFNs helps in exploiting Rowhammer vulnerability.

其中CAP_SYS_ADMIN基本上意味着“运行为sudo”,或者:

sudo setcap cap_sys_admin+ep program_that_uses_pagemap
./program_that_uses_pagemap

请记住/proc是一个虚拟文件系统因此 Linux 内核可以选择强制执行额外的权限,甚至任意改变非 root 用户的结果,就像这里出于安全原因将 PFN 设置为零一样。

答案2

您可以尝试更改文件中的权限/etc/init/mounted-proc.conf

script
    chmod 0444 "${MOUNTPOINT}"/self/pagemap
end script

proc是内核生成的虚拟文件系统。如果你无法更改权限,则说明你的内核不允许,只能通过更改内核来解决。

相关内容