@@ -583,7 +583,7 @@ static int do_probe(int argc, char **argv)
/* Detection assumes user has sufficient privileges (CAP_SYS_ADMIN).
* Let's approximate, and restrict usage to root user only.
*/
- if (geteuid()) {
+ if (!libbpf_get_bpf_permission()) {
p_err("please run this command as root user");
return -1;
}
@@ -390,6 +390,10 @@ int main(int argc, char **argv)
if (argc < 0)
usage();
+ if (!libbpf_get_bpf_permission()) {
+ p_err("cannot get permission to access bpf() syscall");
+ usage();
+ }
ret = cmd_select(cmds, argc, argv, do_help);
if (json_output)
@@ -400,5 +404,6 @@ int main(int argc, char **argv)
delete_pinned_obj_table(&map_table);
}
+ libbpf_put_bpf_permission();
return ret;
}
This patch calls libbpf_[get|put]_bpf_permission() from bpftool. This allows users with access to /dev/bpf to perform operations like root. Signed-off-by: Song Liu <songliubraving@fb.com> --- tools/bpf/bpftool/feature.c | 2 +- tools/bpf/bpftool/main.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-)