/usr/share/doc/bpftrace/examples
NameSizeModeActions
bashreadline_example.txt7220644editdlrm
biolatency_example.txt17900644editdlrm
biosnoop_example.txt20560644editdlrm
biostacks_example.txt19140644editdlrm
bitesize_example.txt30030644editdlrm
capable_example.txt26590644editdlrm
cpuwalk_example.txt49190644editdlrm
dcsnoop_example.txt46120644editdlrm
execsnoop_example.txt15350644editdlrm
gethostlatency_example.txt9230644editdlrm
killsnoop_example.txt8460644editdlrm
loads_example.txt8640644editdlrm
mdflush_example.txt18660644editdlrm
naptime_example.txt8440644editdlrm
oomkill_example.txt16680644editdlrm
opensnoop_example.txt25280644editdlrm
pidpersec_example.txt15040644editdlrm
runqlat_example.txt86320644editdlrm
runqlen_example.txt9800644editdlrm
setuids_example.txt24410644editdlrm
ssllatency_example.txt45100644editdlrm
sslsnoop_example.txt19160644editdlrm
statsnoop_example.txt27380644editdlrm
swapin_example.txt5490644editdlrm
syncsnoop_example.txt5410644editdlrm
syscount_example.txt11440644editdlrm
tcpaccept_example.txt13500644editdlrm
tcpconnect_example.txt10850644editdlrm
tcpdrop_example.txt12560644editdlrm
tcplife_example.txt15970644editdlrm
tcpretrans_example.txt11530644editdlrm
tcpsynbl_example.txt9400644editdlrm
threadsnoop_example.txt11820644editdlrm
undump_example.txt6800644editdlrm
vfscount_example.txt11990644editdlrm
vfsstat_example.txt9290644editdlrm
writeback_example.txt19620644editdlrm
xfsdist_example.txt34190644editdlrm
Edit: /usr/share/doc/bpftrace/examples/setuids_example.txt (2441B)
Demonstrations of setuids, the Linux bpftrace/eBPF version. This tool traces privilege escalation via setuid syscalls (setuid(2), setfsuid(2), retresuid(2)). For example, here are the setuid calls during an ssh login: # ./setuids.bt Attaching 7 probes... Tracing setuid(2) family syscalls. Hit Ctrl-C to end. TIME PID COMM UID SYSCALL ARGS (RET) 14:28:22 21785 ssh 1000 setresuid ruid=-1 euid=1000 suid=-1 (0) 14:28:22 21787 sshd 0 setresuid ruid=122 euid=122 suid=122 (0) 14:28:22 21787 sshd 122 setuid uid=0 (-1) 14:28:22 21787 sshd 122 setresuid ruid=-1 euid=0 suid=-1 (-1) 14:28:24 21786 sshd 0 setresuid ruid=-1 euid=1000 suid=-1 (0) 14:28:24 21786 sshd 0 setresuid ruid=-1 euid=0 suid=-1 (0) 14:28:24 21786 sshd 0 setresuid ruid=-1 euid=1000 suid=-1 (0) 14:28:24 21786 sshd 0 setresuid ruid=-1 euid=0 suid=-1 (0) 14:28:24 21786 sshd 0 setfsuid uid=1000 (prevuid=0) 14:28:24 21786 sshd 0 setfsuid uid=1000 (prevuid=1000) 14:28:24 21786 sshd 0 setfsuid uid=0 (prevuid=1000) 14:28:24 21786 sshd 0 setfsuid uid=0 (prevuid=0) 14:28:24 21786 sshd 0 setfsuid uid=1000 (prevuid=0) 14:28:24 21786 sshd 0 setfsuid uid=1000 (prevuid=1000) 14:28:24 21786 sshd 0 setfsuid uid=0 (prevuid=1000) 14:28:24 21786 sshd 0 setfsuid uid=0 (prevuid=0) 14:28:24 21786 sshd 0 setfsuid uid=1000 (prevuid=0) 14:28:24 21786 sshd 0 setfsuid uid=1000 (prevuid=1000) 14:28:24 21786 sshd 0 setfsuid uid=0 (prevuid=1000) 14:28:24 21786 sshd 0 setfsuid uid=0 (prevuid=0) 14:28:24 21851 sshd 0 setresuid ruid=1000 euid=1000 suid=1000 (0) 14:28:24 21851 sshd 1000 setuid uid=0 (-1) 14:28:24 21851 sshd 1000 setresuid ruid=-1 euid=0 suid=-1 (-1) Why does sshd make so many calls? I don't know! Nevertheless, this shows what this tool can do: it shows the caller details (PID, COMM, and UID), the syscall (SYSCALL), and the syscall arguments (ARGS) and return value (RET). You can modify this tool to print user stack traces for each call, which will show the code path in sshd (provided it is compiled with frame pointers).