Всех приветствую. Столкнулся со странной фигней.
В рамках рабочей задачи, надо одно сетевое самописное приложение подружить с tun0. Делаем простейшее приложение, которое открывает /dev/net/tun и вызывает ioctl(fd, TUNSETIFF, &arg); На своем рабочем компе все отлично.
Когда понес это на целевую платформу получил по морде -EPERM. Пошел исследовать tun.c, там все упирается в то, что у пользователя нет CAP_NET_ADMIN. Притом, что tun0 я создаю от root и приложение тоже запускаю от root.
Да, целевая система, это мелкий арм с ядром 4.3+uClibс+busybox. никаких setcap/getcap там нет. А собрать libcap под это я еще не смог. Что это может быть? Почему root не может в своей системе творить что хочет?