polkit service что это
Как поднять polkit?
После обновления системы перестали запускаться некоторые службы, которые зависят просят:
1. ПРоверьте что у вас с юзером polkitd
2. Вы испоьзуется SE?
Проверьте, есть ли у вас юзер setroubleshoot в /etc/passwd
Если нет, то удалите и соответствующую группу из /etc/group и переустановите setroubleshoot.
И перезапустите ее.
2. Нет, пользователей нет, групп тоже
3. Результат не принес (Centos 7, yum reinstall systemd)
Saboteur,
1.
polkit* rpm verification passed
Использование инструментов командной строки
Установленный в системе PolicyKit уже имеет некоторые встроенные инструменты командной строки. В дистрибутиве Fedora 21 их четыре.
Дополнительные пакеты могут включать некоторые другие утилиты и даже приложения с графическим интерфейсом, например, policytool. На практике все это не очень нужно обычному пользователю. Для создания своих правил достаточно любого текстового редактора.
И, конечно, нельзя не упомянуть команду man polkit.
PolicyKit запускается и работает как служба операционной системы polkitd. Эта служба запускается от имени пользователя polkitd, который является обычным пользователем системы с ограниченными правами. Демон polkitd всегда стартует с правами суперпользователя и сразу после старта понижает права до обычного пользователя.
Каждый раз, когда приложение требует участия PolicyKit, демон polkitd запускается автоматически. Это обеспечивается средствами dbus-daemon или systemd. Поэтому пользователю никогда не приходится запускать polkitd вручную.
Практика
Все примеры, приведенные ниже, проверены и работают. Их можно просто скопировать в файл правил. По крайней мере, это верно для Fedora 21.
При создании своих правил нужно иметь в виду, что, поскольку они являются программами, ошибки в синтаксисе недопустимы. Если ошибки все же имеются, то ничего фатального не произойдет, система не будет испорчена. Но правило работать не будет. Лучшее, что можно сделать в такой ситуации, это проверить, правильно ли указаны действие, группа пользователя и правило. Особенно это относится к названию действия. В разных дистрибутивах Linux, даже в разных версиях одного дистрибутива названия действий могут несколько отличаться от приведенных здесь. Также не лишним будет убедиться, что все нужные скобки и кавычки находятся на своих местах. В общем, как и всегда в программировании, здесь требуются внимательность и аккуратность.
Возможность подключение локальных дисков для обычного пользователя
В системе имеются два SATA жестких диска. На первом установлена операционная система, второй используется для хранения данных. Второй жесткий диск виден в файловом менеджере, но не смонтирован.
Проблема заключается в том, что каждый раз при попытке прочитать (подключить) второй SATA жесткий диск средствами файлового менеджера появляется окно агента PolicyKit с требованием ввести пароль суперпользователя. Между тем, любые USB накопители монтируются автоматически и никакой пароль при этом вводить не требуется.
Видно, что файл содержит описание нескольких различных действий, связанных с монтированием файловых систем. В данном случае требуется изменить правило по умолчанию, которое установлено для монтирования системных накопителей. Те накопители, которые подключены к интерфейсу SATA, наверняка относятся к системным.
Наиболее вероятным кандидатом для этого является правило org.freedesktop.udisks2.filesystem-mount-system. Видно, что правила по умолчанию требуют прав суперпользователя.
Для решения проблемы требуется дать права на монтирование файловой системы на системном устройстве той группе пользователей, к которой относится нужный нам пользователь. Пусть для определенности здесь и дальше это будет группа red.
Для записи нового правила можно воспользоваться приведенным выше шаблоном. Результат будет выглядеть так:
Файл с данным правилом следует поместить в каталог /etc/polkit-1/rules.d. Желательно, чтобы он был прочитан и обработан службой polkitd раньше, чем файлы правил, которые уже имеются в дистрибутиве. Для этого можно присвоить ему имя, например, 30-udisk2.rules.
Новое правило начинает работать сразу после создания файла.
Предоставление обычному пользователю прав на обновление системы и установку/удаление программ
Ниже представлен фрагмент файла /usr/share/polkit-1/actions/dk.yumex.backend.policy. Для упрощения в нем удалена декларация.
Видно, что правила по умолчанию для запуска Yum Extender либо запрещают запуск программы, либо требуют прав суперпользователя. Для создания правила, позволяющего пользователю из группы red обновлять систему и устанавливать/удалять программы с помощью Yum Extender, снова можно воспользоваться тем же шаблоном. Результат будет таким:
Надо отметить, что для тех же самых действий, но выполняемых в командной строке с помощью yum, все равно потребуются полномочия суперпользователя. Созданное новое правило действительно только для Yum Extender.
Данный файл с правилом можно оформить как /etc/polkit-1/rules.d/31-yumex-backend.rules. Правило начинает работать немедленно.
Разрешение на управление виртуальными машинами с помощью virt-manager
Примечание. Обратите внимание: в последнем примере вместо метода match() использован оператор эквивалентности ==. В данном случае это просто разные способы сделать одно и то же. Оба варианта работают.
Не обязательно оформлять каждое правило в виде отдельного файла, как это было сделано выше. Вместо этого все собственные правила можно записать в единственном файле. Для этого их надо просто расположить друг за другом.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
Polkit
Polkit — это средство для управления правами приложений пользовательского уровня, позволяющее непривилегированным процессам решать административные задачи: единый интерфейс предоставления прав доступа к привилегированным операциям для непривилегированных приложений при помощи набора правил (политик) и шины D-Bus. Polkit используется для управления общесистемными привилегиями. Данный фреймворк используется для предоставления непривилегированным процессам возможность выполнения действий, требующих прав администратора. В отличие от sudo, Polkit не наделяет процесс правами суперпользователя, а позволяет точно контролировать, какие действия разрешены, а какие нет.
Polkit может контролировать отдельные действия, такие как запуск GParted: при этом он проверяет имя пользователя и принадлежность оного к группе, например, является ли он членом группы wheel. Далее Polkit проверяет, какими правами наделены пользователи данной группы (есть ли вообще права на запуск?) и, если всё сходится (пользователь в нужной группе и у группы есть соответствующие права), требует ввести пароль для идентификации пользователя.
Polkit предоставляет API авторизации, предназначенный для использования привилегированными программами («МЕХАНИЗМЫ»), предлагающими услугу непривилегированным программам («СУБЪЕКТЫ») часто через какой-то механизм межпроцессного взаимодействия. В этом случае механизм обычно рассматривает объект как ненадежный. Для каждого запроса от субъекта механизм должен определить, разрешен ли запрос, или если он должен отказаться от обслуживания объекта. Используя API-интерфейсы polkit, механизм может разгрузить это решение доверенной стороне: полномочия polkit.
Полкит-сервер реализован как системный демон, polkitd, который сам по себе мало прав, поскольку он работает как пользователь системы polkitd. Механизмы, субъекты и агенты аутентификации обмениваются данными с полномочиями, используя шину системных сообщений.
Помимо действия в качестве органа, polkit позволяет пользователям получать временное разрешение посредством аутентификации либо административного пользователя, либо владельца сеанса, к которому принадлежит клиент. Это полезно для сценариев, когда механизм должен проверить, что оператор системы действительно является пользователем или действительно является административным пользователем.
Polkit может контролировать отдельные действия, такие как запуск GParted: при этом он проверяет имя пользователя и принадлежность оного к группе, например, является ли он членом группы wheel. Далее Polkit проверяет, какими правами наделены пользователи данной группы (есть ли вообще права на запуск?) и, если всё сходится (пользователь в нужной группе и у группы есть соответствующие права), требует ввести пароль для идентификации пользователя.
Содержание
Архитектура работы
Системная архитектура polkit состоит из Главы (реализована как служба на шине системных сообщений) и Агента аутентификации на каждый сеанс пользователя (предоставляется и запускается графической средой пользователя). Действия определяются приложениями. Поставщики, сайты и системные администраторы могут контролировать политику авторизации через Правила авторизации.
Для удобства библиотека libpolkit-gobject-1 обертывает API-интерфейс polkit D-Bus и может использоваться из любой программы на C/C++, а также языки более высокого уровня, поддерживающие GObjectIntrospection, такие как JavaScript и Python. Механизм также может использовать API D-Bus или команду pkcheck для проверки разрешений. Библиотека libpolkit-agent-1 обеспечивает абстрагирование собственной системы аутентификации, например. pam, а также регистрация объектов и связь с услугой D-Bus polkit.
Дополнительную информацию о написании приложений polkit см. В документации разработчика.
Агенты аутентификации
Агент аутентификации используется, чтобы заставить пользователя сеанса доказать, что пользователь сеанса действительно является пользователем (путем аутентификации в качестве пользователя) или администратором (путем аутентификации в качестве администратора). Чтобы хорошо интегрироваться с остальной частью пользовательского сеанса (например, соответствовать внешнему виду), агенты аутентификации должны предоставляться сеансом пользователя, который пользователь использует.
Приложения, которые не запускаются в среде рабочего стола (например, если они запущены из входа ssh), возможно, не связаны с ними агентом проверки подлинности. Такие приложения могут использовать тип PolkitAgentTextListener или помощник pkttyagent, чтобы пользователь мог аутентифицироваться с использованием текстового интерфейса.
Конфигурация
Определения Polkit можно разделить на два вида:
Применение
Polkit используется в следующих дистрибутивах ОС Linux:
Polkit позволяет непривилегированным пользователям выполнять некоторые действия, разрешённые администратором, (возможно, с запросом пароля пользователя или пароля администратора), например:
Правила политики polkit
Все политики находятся в /usr/share/polkit-1/actions/ в формате *.policy Каждая политика представляет собой xml-файл, в котором описываются запросы к polkit. Каждый запрос имеет три условия, прописанных в секции defaults:
Внутри каждого тега прописывается возвращаемое значение. Используются следующие варианты значений:
По-умолчанию, запрашивается пароль пользователя, находящегося в группе wheel. Для того, чтобы запрашивался пароль root необходимо добавить правило с цифрами вначале имени больше 50 с таким содержанием:
Механизм
Сценарий использования Polkit:
В описанной схеме возможны изменения. Например, «daemon» при запуске может самостоятельно создавать файл конфигурации для Polkit, а при завершении — удалять его.
polkit
polkit is an application-level toolkit for defining and handling the policy that allows unprivileged processes to speak to privileged processes: It is a framework for centralizing the decision making process with respect to granting access to privileged operations for unprivileged applications.
Polkit is used for controlling system-wide privileges. It provides an organized way for non-privileged processes to communicate with privileged ones. In contrast to systems such as sudo, it does not grant root permission to an entire process, but rather allows a finer level of control of centralized system policy.
Polkit works by delimiting distinct actions, e.g. running GParted, and delimiting users by group or by name, e.g. members of the wheel group. It then defines how – if at all – those users are allowed those actions, e.g. by identifying as members of the group by typing in their passwords.
Contents
Installation
Authentication agents
An authentication agent is used to make the user of a session prove that the user of the session really is the user (by authenticating as the user) or an administrative user (by authenticating as an administrator). The polkit package contains a textual authentication agent called ‘pkttyagent’, which is used as a general fallback.
If you are using a graphical environment, make sure that a graphical authentication agent is installed and autostarted on login.
Cinnamon, Deepin, GNOME, GNOME Flashback, KDE, LXDE, LXQt, MATE, theShell and Xfce have an authentication agent already. In other desktop environments, you have to choose one of the following implementations:
Configuration
Polkit definitions can be divided into two kinds:
Actions
The actions available to you via polkit will depend on the packages you have installed. Some are used in multiple desktop environments (org.freedesktop.*), some are DE-specific (org.gnome.*) and some are specific to a single program (org.archlinux.pkexec.gparted.policy). The command pkaction lists all the actions defined in /usr/share/polkit-1/actions for quick reference.
To get an idea of what polkit can do, here are a few commonly used groups of actions:
The attribute id is the actual command sent to D-Bus, the message tag is the explanation to the user when authentication is required and the icon_name is sort of obvious.
The defaults tag is where the permissions or lack thereof are located. It contains three settings: allow_any, allow_inactive, and allow_active. Inactive sessions are generally remote sessions (SSH, VNC, etc.) whereas active sessions are logged directly into the machine on a TTY or an X display. allow_any is the setting encompassing both scenarios.
For each of these settings the following options are available:
These are default setting and unless overruled in later configuration will be valid for all users.
As can be seen from the GParted action, users are required to authenticate as administrators in order to use GParted, regardless of whether the session is active or inactive.
Authorization rules
Authorization rules that overrule the default settings are laid out in a set of directories as described above. For all purposes relating to personal configuration of a single system, only /etc/polkit-1/rules.d should be used.
Inside the function, we check for the specified action ID (org.archlinux.pkexec.gparted) and for the user’s group (admin), then return a value «yes».
Administrator identities
The addAdminRule() method is used for adding a function that may be called whenever administrator authentication is required. The function is used to specify what identities may be used for administrator authentication for the authorization check identified by action and subject. Functions added are called in the order they have been added until one of the functions returns a value.
The default configuration for administrator identities is contained in the file 50-default.rules so any changes to that configuration should be made by copying the file to, say, 40-default.rules and editing that file.
The only part to edit (once copied) is the return array of the function: as whom should a user authenticate when asked to authenticate as an administrative user? If she herself is a member of the group designated as admins, she only need enter her own password. If some other user, e.g. root, is the only admin identity, she would need to enter in root’s password. The format of the user identification is the same as the one used in designating authorities.
The Arch default is to make all members of the group wheel administrators. A rule like below will have polkit ask for the root password instead of the users password for Admin authentication.
Examples
Debugging/logging
The following rule logs detailed information about any requested access.
Disable suspend and hibernate
The following rule disables suspend and hibernate for all users.
Bypass password prompt
Globally
Create the following file as root:
Replace wheel by any group of your preference.
This will result in automatic authentication for any action requiring admin rights via Polkit. As such, be careful with the group you choose to give such rights to.
There is also AUTH_ADMIN_KEEP which allows to keep the authorization for 5 minutes. However, the authorization is per process, hence if a new process asks for an authorization within 5 minutes the new process will ask for the password again anyway.
For specific actions
Create the following file as root:
The || operator is used to delimit actions (logical OR), and && means logical AND and must be kept as the last operator.
Udisks
File managers may ask for a password when trying to mount a storage device, or yield a Not authorized or similar error. See Udisks#Configuration for details.
Allow management of individual systemd units by regular users
By checking for certain values passed to the polkit policy check, you can give specific users or groups the ability to manage specific units. As an example, you might want regular users to start and stop wpa_supplicant:
Работа с политиками Polkit
1 Работа с политиками Polkit
Polkit
Polkit (прежнее название: PolicyKit) — библиотека для UNIX-подобных операционных систем. API библиотеки используется для предоставления непривилегированным процессам возможности выполнения действий, требующих прав администратора. Использование Polkit противопоставляется использованию таких систем, как sudo, но не наделяет процесс пользователя правами администратора, а позволяет точно контролировать, что разрешено, а что запрещено.
Политики polkit
Все политики находятся в /usr/share/polkit-1/actions/ в формате *.policy. Каждая политика представляет собой xml-файл, в котором описываются запросы к polkit. Каждый запрос имеет три условия, прописанных в секции defaults:
Внутри каждого тега прописывается возвращаемое значение. Используются следующие варианты значений:
Правила polkit
Менять напрямую политики нельзя, так как при обновлении системы они затрутся. Необходимо создавать собственные правила в /etc/polkit-1/rules.d/ в формате *.rules. Правила выполняются в порядке названия по алфавиту, поэтому вначале пишутся цифры, чтобы указать приоритет правила. Алгоритм создания правила (все действия выполняются от root):
Журналирование действий polkit
Используя правила polkit, можно также делать записи в системный журнал. Метод log() записывает сообщение в системный журнал. Пример:
В параметре action передается объект с информацией о совершенном процессе и связанные с этим действием параметры (например, если запрошенное действие монтирование съемного диска, то в параметре action будут переданы серийный номер диска, его id, файловая система и т.д.).
В параметре subject передается объект с информацией о пользователе, запустившем процесс. Этот объект имеет следующие атрибуты:
Примеры
Пользователи часто жалуются на необходимость вводить пароль при монтировании разделов в файловом менеджере и создании нового подключения в NetworkManager, а также невозможность извлечь usb-flash или лоток оптического привода. За эти разрешения отвечают:
Монтирование раздела и создание нового подключения без запроса пароля
Сделаем так, чтобы если пользователь находится в системной группе xgrp, то для него запросы пароля не должны будут выполняться для этих действий. Для этого (все действия выполняются от root):
Наполнить /etc/polkit-1/rules.d/99-networkmanager.rules таким содержанием:
Создать системную группу xgrp (если её ещё нет):
Добавить пользователя в группу xgrp:
5. Перезапустить политики Polkit:
Монтирование раздела и создание нового подключения с запросом пароля
Пример создания правила, разрешающего пользователю выполнять монтирование и извлечение устройств — с запросом пароля (при указании polkit.Result.AUTH_SELF — будет запрошен пароль текущего пользователя, polkit.Result.AUTH_ADMIN — администратора). При подключении съемного устройства записывать в системный журнал, какое устройство было подключено и каким пользователем:
Наполнить 99-udisk2_mount.rules таким содержанием:
2. Перезапустить политики Polkit:
При монтировании USB-диска в системном журнале появятся записи:
Таким образом, в системном журнале зарегистрировано, что usb-диск с серийным номером 11101094E6BA1A00A4A5200A был подключен пользователем test.
Просмотреть факты подключения конкретного носителя, можно выполнив команду:
Разрешение монтирования определённых usb-flash накопителей
Создаём файл 30-mount.rules в директории /etc/polkit-1/rules.d
Во втором правиле можно указать:
В данном примере разрешается монтирование usb-flash накопителей с файловой системой «FAT32» или серийным номером «11101094E6BA1A00A4A5200A».
Основной список доступных параметров вы можете получить при подключении usb-flash накопителя и просмотре содержимого журнала:
Или в статусе сервиса политик Polkit:
Изменение Network Manager только администратору
Создаём 60-sysvinit-nm.rules в директории /etc/polkit-1/rules.d:
Добавление и изменение настроек принтера всем пользователям без ввода пароля
Создаём 40-allow-passwordless-printer-admin.rules в директории /etc/polkit-1/rules.d:
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.