Я только начал болеть за час до финала, но в финал прошла за вечер. Для того, чтобы экзамен перенесли, вы должны доказать, что болезнь раньше времени, но нет врача-это было бы слишком дорого, чтобы поехать в больницу. @Энергию: "автор поста-принт" относится к проекту (предположительно любой проект, если есть больше чем один) автор подготавливает с учетом замечаний судьи. Если вы полагаете, что стоит взять этот постпринт, идти за всеми изменениями, которые были сделаны из препринт, и изменить их **снова** немного другой язык, чтобы положить их по материалам arXiv...правда? Я не понимаю, как это может быть в интересах любого человека. Кроме того, политика позволяет автору публиковать постпринт на собственной персональной странице, так что это кажется сумасшедшим для журнала возражать против его размещения по материалам arXiv.

Я пытаюсь написать Тун/программы нажмите в Русте. Поскольку я не хочу, чтобы это запустить как root я добавил CAP_NET_ADMIN возможностей в двоичный:

$судо setcap cap_net_admin=эип целевой/выпуска/тоннель
getcap цели $/выпуска/тоннель
целевой/выпуска/тоннеля = cap_net_admin+РП

Однако, это не работает. Все, что я читал говорит, что это только потенциал, необходимый для создания бочки, но программа получает возникновения ошибки EPERM на функции ioctl. В трассированием, я вижу эту ошибку:

в openat(AT_FDCWD, "как/dev/сеть/Тун", O_RDWR|O_CLOEXEC) = 3
вызов fcntl(3, F_GETFD) = 0х1 (флаги FD_CLOEXEC)
функции ioctl(3, TUNSETIFF, 0x7ffcdac7c7c0) = -1 возникновения ошибки EPERM (операция не разрешена)

Я проверил, что бинарные успешно работает с полными правами root, но я не хочу, чтобы это требуют sudo запускать. Почему CAP_NET_ADMIN не достаточно?

Для справки, я на Линукс версия 4.15.0-45 Есть только несколько способов, я вижу, что этот ioctl может вернуть возникновения ошибки EPERM в ядре (https://elixir.bootlin.com/linux/v4.15/source/drivers/net/tun.c#L2194) и по крайней мере один из них, кажется, были довольны. Я не уверен, как проверить другим:

если (!способен(CAP_NET_ADMIN))
 возвращение -возникновения ошибки EPERM;
...
если (tun_not_capable(Тун))
 возвращение -возникновения ошибки EPERM;
...
если (!ns_capable(сеть->user_ns, CAP_NET_ADMIN))
 возвращение -возникновения ошибки EPERM;