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



如何为特定用户设置perf权限?
(内核。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环境的部分更糟糕。它根本没有提供任何详细的说明。

引用本网页内容。使用以下命令创建一个组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 -alhFgetcap 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上下文中执行的每个二进制文件都将具有指定的能力。

最新更新