With the help of bcc tools I figured out the following list of capabilities to run hello world application sudo setcap cap_ipc_lock,cap_sys_admin,cap_dac_override,cap_dac_read_search,cap_sys_rawio+ep ./dpdk-helloworld BCC toolkit is full of useful utils. My 50 cents to finish the subject. The reason for zeroing out the mapping for the unprivileged user is stated in doc and it is :- from https://www.kernel.org/doc/Documentation/vm/pagemap.txt Starting from 4.2 the PFN field is zeroed if the user does not have CAP_SYS_ADMIN. Reason: information about PFNs helps in exploiting Rowhammer vulnerability. " Thanks again for the help. On Fri, Sep 2, 2022 at 5:31 PM Dmitry Kozlyuk wrote: > 2022-09-01 22:26 (UTC+0300), Dmitry Kozlyuk: > > 2022-09-01 17:42 (UTC+0300), Dmitry Kozlyuk: > > > Theoretically, one can enumerate all capabilities, give all > capabilities > > > except one to the binary, try to run it, and notice which capability > removal > > > leads to a failure. However, `setcap "all=ep $capa-ep" ./binary` > > > did not give the correct answer to me (why?), so I did it > semi-manually. > > > > Aha! CAP_DAC_OVERRIDE and CAP_DAC_READ_SEARCH are not orthogonal: > > they both allow bypassing file read permission check. > > > > I have a working script here: ... > > Apparently, a better alternative is already out there: > > https://github.com/iovisor/bcc/blob/master/tools/capable_example.txt >