Мы переносим приложение с Solaris на Linux, и основной пользователь может с помощью ролей RBAC запускать несколько системных команд, таких как svccfg / svcadm (chkconfig в redhat).
Возможно ли, используя только SElinux (без sudo), позволить обычному пользователю запускать chkconfig выключено / включено (в основном дать ему возможность добавлять службы удаления)?
Мой подход состоял в том, чтобы попытаться создать пользователя SElinux с соответствующей ролью SElinux, которая управляет доменом / типом приложения и имеет право переходить ко всем другим доменам, необходимым для запуска chkconfig, tcpdump или любой другой системной утилиты, обычно ограниченной только корневым доступом. Все мои попытки до сих пор не увенчались успехом, поэтому мой второй вопрос будет заключаться в том, где я могу найти хорошую документацию, относящуюся к этой конкретной проблеме?
Справочная политика SELinux уже содержит роль пользователя sysadm_r
который (слегка) ограничивает корень, когда ограниченные пользователи являются быть использованным в системе (по умолчанию их нет).
Должна быть возможность разработать роль пользователя, которая может запускать / останавливать службы и не выполнять другие административные задачи, исходя из sysadm_r
, хотя мне никогда раньше не приходилось это делать, поэтому я не решаюсь дать вам построчную. Как бы я ни ненавидел это говорить, это вопрос, который я, вероятно, задал бы списку рассылки selinux.
Конечно, можно использовать SElinux для выполнения вашего запроса, и настройка должна быть простой.
Шаг следующие:
chkconfig_t
.sudo
или newrole
команда, позволяющая пользователю перейти к chkconfig_t
домен, если он нужен. Ты можешь использовать system-config-selinux
для создания или изменения модуля SElinux.Я использовал SElinux, чтобы ограничить пользователя только разрешением перезапустить httpd и изменить его конфигурации. Но при этом пользователь ничего не мог сделать.
Ответ получен из списка рассылки selinux:
Невозможно только с помощью SELinux, так как в настоящее время мы не предоставляем способ предоставить возможности, которые иначе не были бы предоставлены, только для их дальнейшего ограничения. Были выпущены патчи для поддержки такого рода функций, но толпа выкрикивала их.
Итак, вам нужно использовать что-то еще (sudo, заголовки файлов или что-то еще), чтобы сначала предоставить возможности, а затем вы можете использовать SELinux, чтобы помочь заблокировать пользователя только тем, что требуется. В наши дни sudo поддерживает SELinux как через параметры командной строки, так и через конфигурацию sudoers.