Зачем?
Мои службы запускаются через соответствующие файлы модулей или сценарии инициализации. Мне не нужно, чтобы обычные пользователи делали что-то особенное на моих серверах, кроме su
. Я специально ищу способ полностью выключить polkit без его самостоятельного запуска при перезапуске других служб.
Я предвижу проблему с объяснением этого аудиторам в нашей среде PCI. Мы должны описать цель каждой услуги. У нас нет законного варианта использования polkit в среде PCI.
Примечание: я не устанавливал polkit. У этих серверов очень минимальная установка около 670 МБ на / Это было обновление systemd, которое, по-видимому, установило polkit, и спецификация, по-видимому, имеет зависимости от всех управляемых служб systemd. После того, как он будет установлен, мне нужно перестроить машину, чтобы удалить ее, точно так же, как при попытке удалить nss
как только вы его установите. Меня беспокоит то, что если я принудительно удалю установку, могут остаться файлы, которые приведут к сбоям в работе systemd, предполагающей, что она там есть.
Что я пробовал:
Создайте /etc/polkit-1/rules.d/99-deny-all.rules
с участием
polkit.addRule(function(action, subject) {
return polkit.Result.YES;
});
затем
systemctl daemon-reload && systemctl daemon-reexec
Это ничего не делает, /usr/lib/polkit-1/polkitd --no-debug
продолжает запускаться при перезапуске других служб под systemd.
[Обновление] Как упоминал Александр, перезапуск polkit применит настройки к самому polkit, и это хорошо, но я ищу способ запретить запуску polkit, который не нарушит работу других служб.
[обновление 2] Это может помешать правильному перезапуску некоторых служб.
Замаскировать или отключить службу:
Это заставляет другие службы зависать при запуске и завершении работы в ожидании polkit.
редактировать /usr/share/dbus-1/sstem-services/org.freedesktop.PolicyKit1.service
с участием:
[snip]
Exec=/bin/false
[snip]
затем
systemctl daemon-reload && systemctl daemon-reexec
Это ничего не делает, /usr/lib/polkit-1/polkitd --no-debug
продолжает запускаться при перезапуске других служб под systemd.
Я пару раз читал справочные страницы. Возможно, мне не хватает чего-то очень простого. Я бы предпочел метод, который сохраняется после обновлений пакета systemd.
Конечная цель, которую я ищу, - чтобы polkit.service не запускался при перезапуске других демонов, таких как unbound, bind, dhcp и т. Д.
Обновить
Redhat изменил зависимости RPM от Polkit. Теперь его можно удалить с серверов, даже если что-то вытащило его во время предыдущих обновлений или установок.
Теперь я могу удалить Polkit с серверов, построенных другими людьми с CentOS 7.6.
Он по-прежнему требуется на рабочих станциях и кажется подходящим для настольных компьютеров.
После добавления правил в /etc/polkit-1/rules.d/99-deny-all.rules
вам следует перезапустить службу polkit, systemctl restart polkit
. После этого systemctl будет выполнять любые запросы от непривилегированного пользователя.
Как владельцы систем, мы часто не заботимся о намерениях создателя дистрибутива. Многие не согласятся, но я считаю, что ограничения на запуск / остановку / установку / удаление компонентов системы и т. Д. Нарушают мою собственность поставщиком и поступаю с моими системами так, как я считаю нужным.
Если вы оказались в ситуации, когда видите удаление polkit
как наиболее подходящий вариант, и разработчики дистрибутива не предоставили вам "поддерживаемый" метод для этого, вы можете искать polkitd
и переименуйте файл, затем выполните команду остановки службы.
В моем конкретном случае polkit
имеет тенденцию закреплять одно ядро процессора, когда мне это не требуется, и я удалил его, используя описанный выше метод. Добро пожаловать и власть пользователям!