如何为特定用户配置Linux Perf权限?kernel.perf_event_paranoid不可用
为特定用户配置Linux Perf权限的实操方案
为什么全局参数kernel.perf_event_paranoid无法满足需求
kernel.perf_event_paranoid是全局内核参数,设置后会作用于所有用户,无法实现仅给特定用户开放Perf权限的需求- 比如将其设为0或-1时,所有用户都能使用Perf,存在安全风险;设为默认的2则所有普通用户都无法使用
内核官方文档的不足
内核官方文档提到通过用户组配置特权Perf用户,但内容模糊且缺失关键操作步骤:
- 仅提及需配置用户组,但未说明具体创建和关联用户的方法
- 未明确如何为用户组分配Perf可执行文件的必要权限
- 关于赋予监控与可观测性特权、创建特权Shell环境的章节,无详细操作指引
具体配置步骤
1. 创建专属用户组
首先创建一个用于管理Perf权限的用户组,比如perf_users:
sudo groupadd perf_users
2. 将目标用户添加到该组
把需要使用Perf的特定用户(比如john)加入perf_users组:
sudo usermod -aG perf_users john
注:用户需要重新登录才能使组权限生效
3. 配置Perf可执行文件的SGID权限
为perf二进制文件设置SGID权限,让perf_users组的用户执行时拥有组权限:
sudo chgrp perf_users /usr/bin/perf sudo chmod g+s /usr/bin/perf
4. 赋予用户组监控特权
通过capabilities给perf二进制文件赋予必要的监控权限,无需修改全局内核参数:
sudo setcap cap_perfmon,cap_sys_ptrace+ep /usr/bin/perf
说明:
cap_perfmon:允许使用性能监控事件cap_sys_ptrace:允许跟踪其他进程(部分Perf功能依赖此权限)
5. 验证配置是否生效
让目标用户重新登录后,执行以下命令测试:
perf stat ls
如果能正常输出ls命令的性能统计信息,说明配置成功
内容的提问来源于stack exchange,提问作者user2771324
相关产品推荐
相关产品推荐

