Прочитал тут статью, как с помощью POSIX-разрешений (man 7 capabilities) можно построить систему с непривилегированным суперпользователем: http://www.linuxjournal.com/magazine/making-root-unprivileged (есть подобие перевода http://posix.ru/freenotes/linux/93 ).
Но вот та же программа /bin/ping. Да, манипулируя разрешением CAP_NET_RAW, можно разрешнить выполнение программы какому-то пользователю… Но как быть с /bin/ping -f? В коде программы стоит проверка на uid, разрешается только суперпользователю. Каким образом переписать программу, чтобы вместо пользователя с uid=0 был другой пользователь, на основе capabilities? Пока, как я понимаю, никак…
Возникла (безумная) идея о введении разрешений, определяемых пользователем. Кроме тех 30 разрешений, что описаны в man 7 capabilities вводятся еще несколько пользовательских CAP_USR1, CAP_USR2…
Программа типа /bin/ping вместо проверки uid == 0 проверяет наличие разрешения CAP_PING_FLOOD; при этом в атрибутах файла CAP_PING_FLOOD указывается соответствие CAP_PING_FLOOD одному из разрешений CAP_USR*.
Что скажет ЛОР?