Я предполагаю, что файловая система, в которой находится ваш двоичный файл target/release/tunnel
, смонтирована с опцией nosuid
. Это также повлияет на возможности файлов, а не только на бит setuid.
Кроме того, вы не сможете отслеживать возможности набора -или двоичный файл setuid, как вы это делаете --ядро будет игнорировать возможности файла при вызове execve()
из ptrace
процесса d:
$ getcap tapy
tapy = cap_net_admin+eip
$./tapy
tapy: {tap1}
^C
$ strace -e trace=ioctl./tapy
ioctl(3, TUNSETIFF, 0x7ffdc5b2fef0) = -1 EPERM (Operation not permitted)
tapy: ioctl TUNSETIFF: Operation not permitted
+++ exited with 1 +++