Я хочу разрешить пользователю запускать * только * утилиту ping с использованием SELinux

Я сделал это уже с rbash (ограниченный bash), но теперь я хочу использовать SELinux.

Поэтому я создал нового пользователя и добавил его в guest_u:

semanage login -a -s guest_u restricteduser 

также я запрещаю ему исполнять что-либо

 setsebool allow_guest_exec_content=0 

И здесь я должен позволить ему только пинг выполнить.

А также мне нужно как-то разрешить ему какую-то сеть. Как я могу это сделать?

логический allow_guest_exec_content определяет, может ли пользователь в guest_t выполнять файлы в домашних или временных каталогах. В противном случае пользователю по-прежнему разрешается запускать другие исполняемые файлы в соответствии с политикой.

Ссылочная политика SELinux предоставляет интерфейсы для разрешения конкретного доступа. Эти интерфейсы перечислены в документации по политике SELinux (ваш дистрибутив, вероятно, предоставляет их в пакете selinux-policy-doc ).

Чтобы позволить гостевому пользователю использовать ping, вы можете использовать интерфейс netutils_exec_ping .

Затем создайте модуль для вашей пользовательской политики, например, my_guest.te :

 policy_module(my_guest, 1.0) gen_require(` type guest_t; role guest_r; ') netutils_run_ping(guest_t, guest_r) 

и скомпилируйте это с:

 make -f /usr/share/selinux/devel/Makefile my_guest.pp 

В зависимости от того, какой тип доступа к сети вы хотите разрешить, вы можете найти подходящий интерфейс и использовать его таким же образом для расширения модуля my_guest .