Как настроить Центр программного обеспечения для установки программного обеспечения для пользователей без полномочий root?

Как я могу настроить Центр программного обеспечения так, чтобы пользователи без полномочий root могли устанавливать вещи из репозиториев Ubuntu без необходимости вводить свой пароль?

Я полностью осведомлен о последствиях для безопасности и готов пойти на риск. Fedora 12 поставляется с чем-то вроде этого. (Я полагаю, что изменив конфигурацию PolicyKit)

4 ответа

Решение

Вы можете изменить разрешения PolicyKit, чтобы пользователи могли получать доступ к бэкенду aptdaemon, который использует Software Center.

dpkg --listfiles aptdaemon показывает, что /usr/share/polkit-1/actions/org.debian.apt.policy это файл, определяющий возможные действия на серверную часть aptdaemon.

Глядя в этот файл, < action id=""> Тэги определяют возможные действия. Ты бы наверное хотел org.debian.apt.install-packages разрешить пользователям устанавливать новые пакеты из архива, и org.debian.apt.update-cache чтобы пользователи могли обновлять списки пакетов.

Увидеть man pklocalauthority какие документы, как установить локальные разрешения на действия PolicyKit. Помещение следующего в /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla позволит любому пользователю, вошедшему в систему на локальном компьютере, устанавливать пакеты после ввода собственного пароля (даже если они не входят в группу администраторов) и обновлять кэш пакетов без ввода пароля.

[Untrusted Install]
Action=org.debian.apt.install-or-remove-packages
ResultyAny=no
ResultInactive=no
ResultActive=auth_self

[Untrusted Update]
Action=org.debian.apt.update-cache
ResultAny=no
ResultInactive=no
ResultActive=yes

Я не думаю, что в настоящее время это возможно сделать через графический интерфейс, но следующее должно работать, хотя и немного глупо. YMMV.

Добавьте следующую строку в /etc/sudoers (используйте sudo visudo отредактировать файл):

%packageinstallers ALL = NOPASSWD: /usr/bin/software-center /usr/bin/apt-get

Тогда вам просто нужно создать и добавить конкретных пользователей в packageinstallers группа:

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

Сейчас jdoe может сделать следующее:

$ sudo apt-get install <some-package>

и вы можете отредактировать пункт меню рабочего стола для Центра программного обеспечения так, чтобы он вызывал software-center добавив команду с gksudo,

PolicyKit может позволить вам сделать это без sudo, но на данный момент это за пределами моего понимания.

Ответ RAOF относится только к Ubuntu. Kubuntu использует QAptWorker в качестве бэкэнда (наблюдается для Natty и Oneiric). Чтобы разрешить установку без полномочий root, создайте /etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pkla содержащий:

[Update Software Sources]
Action=org.kubuntu.qaptworker.updateCache
ResultAny=no
ResultInactive=no
ResultActive=yes

[Install Software]
Action=org.kubuntu.qaptworker.commitChanges
ResultAny=no
ResultInactive=no
ResultActive=auth_self

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

Identity=unix-user:some-non-admin-user

Если есть группа, которой необходимо предоставить разрешение, используйте unix-group вместо unix-user,

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

К сожалению, PolicyKit не имеет точного контроля над пакетом для установки. Если вы хотите дать своим пользователям разрешение на установку только ограниченного набора приложений, вы должны использовать sudo и установить что-то вроде программных каналов...

Я также искал что-то подобное, но так как я ничего не нашел, я кодировал это простое решение "каналы программного обеспечения", доступное здесь, на GitHub

Это очень простая система, позволяющая обычным (не администраторам) пользователям устанавливать пакеты из ограниченных каталогов.

Просто определите "каналы" (группы пакетов) в простом текстовом файле и дайте своим пользователям разрешения на запуск программных каналов.

Они будут видеть пакеты только в каналах, соответствующих их группам Unix.

Чтобы это работало в моем Ubuntu 18.04, мне пришлось изменить файл /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla на:

[Untrusted Install]
#Action=org.debian.apt.install-or-remove-packages
Action=org.freedesktop.packagekit.package-*
ResultyAny=no
ResultInactive=no
ResultActive=auth_self
Identity=*

[Untrusted Update]
Action=org.debian.apt.update-cache
ResultAny=no
ResultInactive=no
ResultActive=yes
Identity=*

[Admin Install]
#Action=org.debian.apt.install-or-remove-packages
Action=org.freedesktop.packagekit.package-*
ResultyAny=no
ResultInactive=no
ResultActive=yes
Identity=unix-group:adm

Более того, с последним правилом я позволяю всем в группе adm устанавливать / удалять без пароля.

Другие вопросы по тегам