Как перейти в другой домен при вызове sudo?

У меня есть демон (collectd), который выполняет скрипт для сбора данных (через smartctl).

Плагин exec-сборщика собирает мандаты, что внешние скрипты выполняются под пользователем! = Root.

План состоит в том, чтобы настроить его следующим образом:

  • разрешить collectd изменять пользователя и, возможно, выполнять скрипт (через SELinux)
  • создать системного пользователя X для задачи
  • configure sudo, так что X разрешено выполнять smartctl
  • сконфигурируйте SELinux таким образом, что a) sudo переходит к (скажем) неограниченному домену b) setuid для пользователя X (или выполнение скрипта) переходит к неограниченному домену

Я придумал последний шаг – потому что в противном случае переход отсутствует, и я должен разрешить собирать все связанные с smartctl низкоуровневые разрешения (например, sys_rawio, ioctl, execute_no_trans …), чего я хочу избежать.

Судо, кажется, предоставляет атрибуты SELinux, например, можно ввести в строку sudoer что-то вроде:

TYPE=unconfined_t ROLE=unconfined_r 

Но затем sudo жалуется:

 sudo: невозможно определить режим принуждения .: Разрешение отклонено
 sudo: невозможно выполнить / usr / sbin / smartctl: разрешение отклонено

Как TYPE / ROLE должен работать с sudo (под CentOS 7)?

Как насчет маршрута b) – как настроить это с помощью пользовательского файла политики SELinux?

One Solution collect form web for “Как перейти в другой домен при вызове sudo?”

Вы можете указать переход в файле пользовательской политики ( .te ) следующим образом:

 module collectdlocalexec 1.0; require { type collectd_t; type user_home_t; type unconfined_t; type shell_exec_t; class capability {setgid setuid }; class file { execute read open }; class process transition; } allow collectd_t self:capability { setgid setuid }; allow collectd_t user_home_t:file { execute read open }; allow collectd_t shell_exec_t:file execute; allow collectd_t unconfined_t:process transition; type_transition collectd_t user_home_t:process unconfined_t; 

Предполагая, что сценарий сбора находится в домашнем каталоге пользователя (и это помечено как user_home_t ).

  • Отредактированный файл sudoers с текстовым редактором - теперь невозможно запустить sudo
  • Разрешить пользователю просматривать домашний каталог других пользователей через sudo
  • Запустить nvm (функция bash) через sudo
  • Как добавить себя к sudoers, когда у меня нет доступа root к моей машине debian?
  • Ошибка установки уведомлений по электронной почте Sudo
  • Что делает эта команда «sudo pip3 install name-of-the-file.whl»?
  • Как остановить sudo PAM-сообщения в auth.log для конкретного пользователя?
  • пароль для паролей `sudo` и другие данные для команды sudo`ed
  • Защитить папку от sudoers
  • Отредактированные sudoers, но `sudo ls` терпит неудачу
  • yum не выбирает переменную окружения YUM0
  • Interesting Posts

    Сравните пользователей с массивом с файлом / etc / shadow

    «Голова» печатает только одну строку?

    Инкрементное резервное копирование с жесткими ссылками для нескольких папок

    Почему документы NoMachine NXclient инструктируют копировать секретный ключ сервера?

    Как проверить Linux Distro является безопасным и не имеет вредоносного кода?

    Почему экспорт не влияет на дочерние оболочки?

    Какой пакет мне нужен для libtool на Solaris?

    ksh, выполнить действие при достижении максимального значения цикла

    Является ли использование корневой файловой системы только для чтения хорошей идеей для встроенных настроек?

    С crtl-p я могу открыть файл за пределами текущего дерева?

    Как получить почту с предыдущего сервера хостинга?

    Bash – запуск сценария bash из скрипта ksh

    Как определить приоритеты маршрутов нескольких интерфейсов

    Возможно ли иметь несколько шлюзов по умолчанию для исходящих соединений?

    Вставить текст внутри строки в конце строки данных

    Linux и Unix - лучшая ОС в мире.