如何为特定用户设置perf权限?
(内核。Perf_event_paranoid不是一个选项,因为它是全局的)
内核文档不清楚或不完整:
https://www.kernel.org/doc/html/latest/admin-guide/perf-security.html#privileged-perf-users-groups
- 文档提到组需要配置,但没有说明如何配置。
- 为Perf工具可执行文件分配所需的功能,并使perf_users组的成员具有监视和可观察性特权6:
- 关于创建特权shell环境的部分更糟糕。它根本没有提供任何详细的说明。
引用本网页内容。使用以下命令创建一个组perf_users
(以root身份运行,例如通过sudo -s
):
# groupadd perf_users
然后使特定的程序文件perf
只能由该组的成员运行:
# chgrp perf_users perf
# chmod o-rwx perf
最后,它展示了如何赋予该文件功能:
# setcap "cap_perfmon,cap_sys_ptrace,cap_syslog=ep" perf
文档还包括一些命令,用于验证文件是否按预期配置:ls -alhF
和getcap perf
。(有一些讨论包括cap_ipc_lock
或等效的38
在能力列表。)
在这一点上,任何人,可以成功地执行这个perf
程序,将观察到它运行所需的功能。
也许您缺少将用户username
添加到这个新创建的组的命令?试试,sudo usermod -G perf_users -a username
。该用户需要注销并再次登录,以便添加的组成员资格生效。
关于创建shell包装器的部分,它说具有以下内容的文件:
exec /usr/sbin/capsh --iab=^cap_perfmon --secbits=239 --user=$SUDO_USER -- -l
应该在/usr/local/bin/perf.shell
处创建。您可以使用sudo vi /usr/local/bin/perf.shell
创建这样的内容,或者用您喜欢的编辑器替换vi
。该文件需要是可执行的。明确:sudo chmod +x /usr/local/bin/perf.shell
.
允许这个可执行脚本被perf_users
组的成员通过sudo
调用(如root
)的说明表明了完成此操作时的状态。也就是说,在/etc/sudoers
文件中有这一行:
%perf_users ALL=/usr/local/bin/perf.shell
您将需要sudo vi /etc/sudoers
(或通过您最喜欢的编辑器)插入该行。
编辑完成后,该部分以一个如何进入shell环境的示例结束:
$ sudo perf.shell
从这里开始,在这个shell上下文中执行的每个二进制文件都将具有指定的能力。