我想使用 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是内核生成的虚拟文件系统。如果你无法更改权限,则说明你的内核不允许,只能通过更改内核来解决。