Как настроить Центр программного обеспечения для установки программного обеспечения для пользователей без полномочий 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 устанавливать / удалять без пароля.