Как я могу запретить PolicyKit запрашивать пароль?

24

В течение многих лет у меня было следующее в моем sudoersфайле:

scott   ALL=NOPASSWD: ALL

Для тех, кто не знает, это мешает sudoи друзьям ( gksudoи т. Д.) Запрашивать пароль. Однако с годами все больше и больше вещей, которые когда-то использовались sudo, переключались на использование PolicyKit.

Я ищу эквивалентную конфигурацию для PolicyKit, чтобы он никогда не запрашивал мой пароль.

Для тех, кому не нравится мой запрос, позвольте мне сказать следующее: я понимаю причины конфигурации по умолчанию, и они обоснованы. Я также понимаю риски, присущие конфигурации, которую я хочу сделать. Тем не менее, так я хочу настроить свою систему. Те, кто не полностью понимает вышесказанное, не должны пытаться делать то, что я пытаюсь.

Скотт Северанс
источник

Ответы:

15

Вы можете обмануть PolicyKit и подавить ВСЕ запросы пароля, подставив в действие подстановочный знак.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Следующее будет подавлять ВСЕ запросы пароля глобально для всех, принадлежащих к группе администраторов, за исключением экрана входа в систему. Это ЧРЕЗВЫЧАЙНО опасно и НИКОГДА не должно быть реализовано, потому что есть вероятность, что ВЫ ЗАКОНЧИТЕ СВОЮ СИСТЕМУ !!

Не говори, что тебя не предупредили!

ПРИМЕЧАНИЕ. Если вы работаете в версии 12.04 или более поздней, замените «admin» на «sudo»!

Замените «username» на ваше фактическое имя пользователя:

usermod -aG admin username

Переключиться на root:

sudo -i

Создайте новую политику:

gedit /var/lib/polkit-1/localauthority/50-local.d/disable-passwords.pkla

Добавьте следующее:

[Do anything you want]
Identity=unix-group:admin
Action=*
ResultActive=yes

Сохранить и выйти. Затем попробуйте что-нибудь, что обычно требует пароля. :)

ПРИМЕЧАНИЕ. Неважно, что вы используете в качестве имени файла .pkla. Вы можете назвать это как угодно.

И наконец, это ЕДИНСТВЕННАЯ политика, которая вам понадобится, когда дело доходит до подавления запросов на ввод пароля, потому что, опять же, это происходит глобально.

user55572
источник
Это также работает в Fedora, когда вы заменяете adminгруппу на wheel. Благодарность!
Кенни Рассчарт
3
Может кто-нибудь описать, как именно это «сломает» систему?
Мердад
3
Да, пожалуйста. Как это сломает систему? Не этот! Что-то глупое, что вы делаете после этого, сломает систему, но не это! Это позволит вам делать что угодно на хосте без пароля. Если вы сделаете что-то глупое, вы сломаете систему. Если вам нужно ввести пароль и вы делаете что-то глупое, вы сломаете систему. Это само по себе просто делает немного глупее.
dangonfast
1
@ jeckyll2hide Прочтите ПРИМЕЧАНИЕ - это объясняет, почему ОП выбрал [Install package file]. Либо вы не согласны с этим, и ПРИМЕЧАНИЕ требует аналогичного редактирования, либо ваше редактирование недействительно и должно быть откатано.
Bcbc
1
@prusswan, который вы можете использовать, Identity=unix-user:scottчтобы позволить пользователю «scott» выполнять действие. Также, если вы хотите просто разрешить определенные действия, вы можете grep /var/log/auth.log, и polkitd выведет полное имя polkit, которое вы пробовали, когда вас попросили ввести пароль. cat /var/log/auth.log | grep polkitdдаст вам довольно быстрый список из них
Скотт
8

Вы можете создать .pkla, либо все в одном, либо пару на основе групп действий, на самом деле не имеет значения.

Для справки смотрите в / usr / share / polkit-1 / actions, откройте заинтересованные в текстовом редакторе, чтобы получить идентификаторы действий.

Что касается .pkla или 2, я считаю, что лучшее место для их размещения здесь, оно будет защищено от любых обновлений.

/var/lib/polkit-1/localauthority/50-local.d

Так, например, вот мой основной, названный package-manager.pkla, хотя он расширяет немного больше, чем просто политика управления пакетами

[Install package file]
Identity=unix-group:admin
Action=org.debian.apt.install-file;org.debian.apt.update-cache;org.debian.apt.install-or-remove-packages;org.debian.apt.upgrade-packages
ResultActive=yes

[Install package synaptic]
Identity=unix-group:admin
Action=com.ubuntu.pkexec.synaptic
ResultActive=yes

[Change add repo]
Identity=unix-group:admin
Action=com.ubuntu.softwareproperties.applychanges;org.debian.apt.change-repository
ResultActive=yes

[usbcreator format]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.format
ResultActive=yes

[Install bootloader]
Identity=unix-group:admin
Action=com.ubuntu.usbcreator.bootloader
ResultActive=yes

[Add users]
Identity=unix-group:admin
Action=org.freedesktop.accounts.user-administration
ResultActive=yes

Обратите внимание, что начиная с 12.04 группа, используемая для пользователя "admin", должна быть заменена на sudo, т.е.

Identity=unix-group:sudo

Также обратите внимание, что действия могут быть объединены в раздел, без пробелов, используйте a; между идентификаторами

Дуг
источник
Похоже, вы делаете настройки для каждой программы в отдельности. Это кажется довольно утомительным, особенно если я позже установлю какую-нибудь другую программу, которая хочет использовать PolicyKit. Я ищу способ сделать глобальные изменения конфигурации, которые влияют на все.
Скотт Северанс
1
Никогда не видел никакого способа повлиять на «глобально», не верьте, что так работает набор политик, есть набор политик для каждого идентификатора действия
doug
0

Один из вариантов, если вы знаете, что делаете, - полностью отключить комплект политики.

sudo apt-get remove libpolkit-agent-1-0

viksit
источник
1
Он удаляет слишком много важных пакетов, как network-manager, gnome-control-centerи многое другое. Есть ли более мелкозернистый способ?
Suncatcher