如何为特定用户设置perf权限?
(kernel.perf_event_paranoid 不是一个选项,因为它是全局的)
内核文档不清楚或不完整:
https://www.kernel.org/doc/html/latest/admin-guide/perf-security.html#privileged-perf-users-groups
- 将所需的功能分配给 Perf 工具可执行文件,并为 perf_users 组的成员启用监视和可观察权限 6 :
引自此网页。您可以使用以下命令创建一个组
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
。该用户需要注销并再次登录才能使添加的组成员身份生效。
关于创建外壳包装器的部分,它说具有以下内容的文件:
exec /usr/sbin/capsh --user=$SUDO_USER --iab=^cap_perfmon --secbits=239 -- -l
应在
/usr/local/bin/perf.shell
创建。您可以使用 sudo vi /usr/local/bin/perf.shell
创建此类内容,或者用您最喜欢的编辑器代替 vi
。该文件需要成为可执行文件。明确地说:sudo chmod +x /usr/local/bin/perf.shell
。
用于让
root
组成员通过 sudo
调用此可执行脚本的指令(如 perf_users
)指示了完成此操作时的状态。也就是说,这行位于 /etc/sudoers
文件中:
%perf_users ALL=/usr/local/bin/perf.shell
您需要
sudo vi /etc/sudoers
(或通过您最喜欢的编辑器)插入该行。
鉴于该编辑,该部分以如何进入此 shell 环境的示例结束:
$ sudo perf.shell
从这里开始,在此 shell 上下文中执行的每个二进制文件都将提升指定的功能。