linux perf:如何为特定用户启用perf权限?

问题描述 投票:0回答:1

如何为特定用户设置perf权限?
(kernel.perf_event_paranoid 不是一个选项,因为它是全局的)

内核文档不清楚或不完整:
https://www.kernel.org/doc/html/latest/admin-guide/perf-security.html#privileged-perf-users-groups

  • 文档提到组需要配置,但没有说明如何配置。
  1. 将所需的功能分配给 Perf 工具可执行文件,并为 perf_users 组的成员启用监视和可观察权限 6 :
  • 关于创建特权 shell 环境的部分更糟糕。它根本没有提供任何详细说明。
linux user-permissions perf group linux-capabilities
1个回答
1
投票

引自此网页。您可以使用以下命令创建一个组

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 上下文中执行的每个二进制文件都将提升指定的功能。

© www.soinside.com 2019 - 2024. All rights reserved.