Использование perf из учетной записи пользователя

Я следую admin-guide/perf-security.html из документации ядра, чтобы настроить perf с учетной записью пользователя. Вкратце, я настроил возможности двоичного файла и сменил владельца группы на . Однако мой пользователь, похоже, не может использовать perf.

От использованияperf stat $(which ls)на книжном черве Debian я получаю ошибку:

      Error:
Access to performance monitoring and observability operations is limited.
Consider adjusting /proc/sys/kernel/perf_event_paranoid setting to open
access to performance monitoring and observability operations for processes
without CAP_PERFMON, CAP_SYS_PTRACE or CAP_SYS_ADMIN Linux capability.
More information can be found at 'Perf events and tool security' document:
https://www.kernel.org/doc/html/latest/admin-guide/perf-security.html
perf_event_paranoid setting is 3:
  -1: Allow use of (almost) all events by all users
      Ignore mlock limit after perf_event_mlock_kb without CAP_IPC_LOCK
>= 0: Disallow raw and ftrace function tracepoint access
>= 1: Disallow CPU event access
>= 2: Disallow kernel profiling
To make the adjusted perf_event_paranoid setting permanent preserve it
in /etc/sysctl.conf (e.g. kernel.perf_event_paranoid = <setting>)

Я пытался исследовать эту проблему в Интернете, но во всех ответах упоминается изменениеperf_event_paranoid, который, согласно perf-security.html, предназначен для непривилегированных пользователей, тогда как группа должна состоять из привилегированных пользователей. На вопрос на unix.stackexchange об учетных записях пользователей perf , точно такой же, как и у меня, ответа не было.

Для репликации :

В корневой оболочке создайте группу и измените двоичный файл perf, чтобы изменить принадлежность группы и запретить доступ другим:

      PERFBIN=$(which perf)
groupadd perf_users
chgrp perf_users $PERFBIN
chmod o-rxw $PERFBIN

Теперь включите возможности двоичного файла,

      setcap "cap_perfmon,cap_sys_ptrace,cap_syslog=ep" $PERFBIN
setcap -v "cap_perfmon,cap_sys_ptrace,cap_syslog=ep" $PERFBIN
getcap $PERFBIN

Наконец, либо добавьте пользователя вperf_usersгруппа сusermod -a -G perf_users $USERили добавьте/etc/sudoers.d/perfфайл с содержимым$USER ALL = (: perf_users) $PERFBINи использовать какsudo -g perf_users perf stat $(which ls)

0 ответов

Другие вопросы по тегам