Как запретить системным приложениям (например, Центру программного обеспечения) запрашивать пароль?
Мне бы хотелось, чтобы Центр программного обеспечения, Менеджер обновлений и некоторые другие приложения для управления системой работали без запроса пароля (как это делает sudo при настройке с NOPASSWD), а только с запросом подтверждения или даже без подтверждения. В то же время я не хотел бы использовать пароль пользователя вообще. Это достижимо?
7 ответов
В Ubuntu Software Center для авторизации используется набор политик. Когда запрашивается аутентификация во время действия удаления, вы можете развернуть указатель "Подробности", чтобы увидеть вызываемое действие. Это org.debian.apt.install-or-remove-packages. Вы можете изменить соответствующую политику, чтобы не запрашивать аутентификацию:
редактировать /usr/share/polkit-1/actions/org.debian.apt.policy
, ищи org.debian.apt.install-or-remove-packages
, а затем найти для defaults
раздел, заменить auth_admin
а также auth_admin_keep
с участием yes
,
Добавление в Жоао-Pinto в ответ, так как программное обеспечение центр в настоящее время использует политику snapcraft, в файл, который будет изменен должен быть таким:
/usr/share/polkit-1/actions/io.snapcraft.snapd.policy
ищите политику с id io.snapcraft.snapd.manage
и измените все записи по умолчанию на yes
.
У вас должно получиться вот что:
<action id="io.snapcraft.snapd.manage">
<description gettext-domain="snappy">Install, update, or remove packages</description>
<message gettext-domain="snappy">Authentication is required to install, update, or remove packages</message>
<defaults>
<allow_any>yes</allow_any>
<allow_inactive>yes</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
</action>
Проверено на Ubuntu 20.04.1 LTS
К более общему решению
Поскольку политики/действия могут меняться от версии к версии (есть два других ответа, в которых упоминаются два других разных файла), лучший способ справиться с этим:
- Установите какой-нибудь пакет для тестирования
- Проверять
- Определите используемый файл и действие и внесите изменения в соответствии с ним.
После установки пакета записи в
/var/log/auth.log
были такие:
Apr 13 02:06:14 dragon PackageKit: uid 1000 is trying to obtain org.freedesktop.packagekit.package-install auth (only_trusted:1)
Apr 13 02:06:25 dragon polkitd(authority=local): Operator of unix-session:1 successfully authenticated as unix-user:jgr to gain TEMPORARY authorization for action org.freedesktop.packagekit.package-install for system-bus-name::1.79 [/usr/bin/python3 /usr/bin/software-properties-gtk] (owned by unix-user:jgr)
Apr 13 02:06:25 dragon PackageKit: uid 1000 obtained auth for org.freedesktop.packagekit.package-install
Я искал и нашел файл, в котором действие:
sudo grep -l -r "org.freedesktop.packagekit.package-install" /usr/share/polkit-1/
/usr/share/polkit-1/actions/org.freedesktop.packagekit.policy
Используя эту информацию, на моем Ubuntu 20.04.2 LTS я редактирую следующий файл:
/usr/share/polkit-1/actions/org.freedesktop.packagekit.policy
.
Я изменил
<defaults>
в действии:
<action id="org.freedesktop.packagekit.package-install">
к:
<defaults>
<allow_any>yes</allow_any>
<allow_inactive>yes</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
Просто положить в /etc/sudoers
все это и будет работать
# User privilege specification
root ALL=(ALL) NOPASSWD: ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD: ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL) NOPASSWD: ALL
Эти методы с NOPASSWD: ALL, кажется, приводят к тому, что пароль не запрашивается. это не то, что я хочу. Я хочу, чтобы меня спросили пароль ROOT.
Похоже, правильным намёком было добавить "Defaultpw rootpw" в sudoers. По крайней мере, Synaptic теперь запускается после получения пароля root. Ницца. Я могу использовать Ubuntu в стиле Debian:)
Я искал эту информацию много лет. Я имею в виду, что около 10 лет я искал способ сделать это.
Но поскольку это старая тема, я хотел добавить немного новой информации. Или понимание, если хотите. Большинство файлов в других ответах больше не являются файлами для изменения, и в игру вступили новые polkits. Я мог бы перечислить те, которые я нашел, чтобы Software Center и Synaptic перестали беспокоить меня каждый раз, когда я вхожу в систему. Но вместо того, чтобы давать человеку рыбу, я бы хотел научить вас ловить рыбу.
Правильный ответ уже дан, но имеет только 2 голоса. И я хотел бы немного добавить к его ответу (пока не могу комментировать). Если вы попали сюда, скорее всего, вы увидите всплывающие окна графического интерфейса. Все, что вам нужно, находится прямо здесь. Когда он запрашивает пароль, внизу появляется раскрывающееся меню «Подробности», которое вы можете нажать. Это ТОЧНО скажет вам, какая политика запрашивает ваш пароль. Щелкните правой кнопкой мыши по нему и скопируйте ссылку. Затем перейдите к терминалу и, если вы еще не являетесь пользователем root, введите:
su
Введите свой пароль root. Вам необходимо это сделать, поскольку SUDO здесь не работает. Или, по крайней мере, sudo выдал мне ошибки разрешений. Как только вы станете пользователем root, выполните следующую команду:
grep -l -r "link.you.copied.above.pasted.here" /usr/share/polkit-1/
Это выдаст файл, который вам нужно отредактировать. Затем вы просто открываете файл в своем любимом текстовом редакторе с правами root, например:
sudo nano /path/to/the/file/grep/spit/out
Мне проще использовать файловый менеджер с графическим интерфейсом, а редактор с графическим интерфейсом запускается от имени пользователя root. Так как я могу легко найти файл. Вы можете выполнять поиск с помощью nano, но если вы не разбираетесь в nano/vi/emacs, это может оказаться затруднительным. Вероятно, если вы здесь, вы все равно используете графический интерфейс. Если вы не знаете, как запустить корневую версию вашего файлового менеджера, вы можете сделать это с помощью следующей команды в терминале (обычно). Это пример мяты:
sudo nemo
Или любой файловый менеджер, который использует ваш дистрибутив. В некоторых старых дистрибутивах вам придется использовать pksudo или другие sudo, но я обнаружил, что в последних дистрибутивах просто sudo работает нормально. Может немного зависеть от того, какой рабочий стол вы используете. Если вышеперечисленное не работает, вы можете просто использовать терминал, как я показал выше, с Nano или предпочитаемым вами редактором терминала.
Затем просто найдите в файле исходную политику, вызывающую запрос пароля. Это «ссылка», которую вы скопировали из всплывающего окна выше, которую вы использовали для поиска с помощью grep. Затем измените всеauth_admin
иauth_admin_keep
кyes
за эту политику, и ты золотой.
Примечание. - Отключение запроса пароля может быть угрозой безопасности.
Откройте окно терминала из Приложения -> Аксессуары -> Терминал, выполните команду:
sudo visudo
Найдите строку, которая говорит
%admin ALL=(ALL) ALL
и изменить его на
%admin ALL=(ALL) NOPASSWD: ALL
Сохраните и выйдите из файла