Сегодня я узнал, что можно использовать pkexec
из командной строки, аналогично sudo
, для выполнения программ с привилегиями root. Мне любопытно, как pkexec
решает, кому разрешено делать это.
На странице руководства для pkexec(1)
написано
По умолчанию требуется авторизация org.freedesktop.policykit.exec, если для рассматриваемой программы не существует файл определения действия.
Это немного сложно разобрать для кого-то, кто не знаком с политическим набором. Но с небольшим предположением, давайте посмотрим на /usr/share/polkit-1/actions/org.freedesktop.policykit.policy
. В разделе org.freedesktop.policykit.exec
мы видим строку auth_admin
.
Обращаясь к polkit(8)
, мы видим:
auth_admin
Требуется аутентификация администратора.
Кто именно является «административным пользователем» в этом смысле? Какие тесты проводятся, чтобы определить, является ли пользователь «административным»? Конфигурационные файлы все труднее находить и понимать.
Я знаю, что это настраивается. Я хочу знать значение по умолчанию, скажем, для Ubuntu 15.04.
По умолчанию это - члены sudo
группа и пользователь root, на основании этих файлов в /etc/polkit/localauthority.conf.d/
:
$ tail /etc/polkit-1/localauthority.conf.d/*
==> /etc/polkit-1/localauthority.conf.d/50-localauthority.conf <==
# Configuration file for the PolicyKit Local Authority.
#
# DO NOT EDIT THIS FILE, it will be overwritten on update.
#
# See the pklocalauthority(8) man page for more information
# about configuring the Local Authority.
#
[Configuration]
AdminIdentities=unix-user:0
==> /etc/polkit-1/localauthority.conf.d/51-ubuntu-admin.conf <==
[Configuration]
AdminIdentities=unix-group:sudo;unix-group:admin
первый файл предоставляет доступ к UID 0 (root
), и второе группам sudo
и admin
. admin
действительно не используется на Ubuntu, но sudo
, и это - группа, используемая для предоставления доступа к sudo
также.