Як я можу налаштувати Програмний центр на встановлення програмного забезпечення для некоріальних користувачів?


47

Як я можу встановити Програмний центр, щоб дозволити користувачам, які не користуються коренем, встановлювати речі з репостів Ubuntu без необхідності вводити свій пароль?

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


5
Важливо зауважити, що Fedora також підтримав це після того, як небо впало на них.
Ніколас Найт

Так, я це пам’ятаю. Це дійсно має сенс лише на настільних комп’ютерах, які мають лише одного або двох користувачів.
snostorm

Майте на увазі, що таке програмне забезпечення на ринку додатків, як Software Center, дозволяє змінювати системні сховища. Самообслуговування пакетів ризиковано, але користувачі, які додають джерела недовірених пакетів, справді небезпечні.
Альфонсо ЕМ

Відповіді:


36

Ви можете змінити дозволи 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

Політика /usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
Кубунту

Інструкції щодо Kubuntu можна знайти у моїй відповіді
Lekensteyn

Рятувальник життя - ура! Мені довелося додати Identity=*цю роботу, адаптовану з сайту askubuntu.com/a/123260 . Крім того, чи можна отримати більше виводу журналу набору правил, наприклад /var/log/auth.log(або будь-яких інших файлів журналу)? Я отримую лише authentication failsповідомлення, але немає причини, чому це не вдалося ...
ssc

10

Я не думаю, що в даний час це можливо зробити через графічний інтерфейс, але наступне повинно працювати, хоч і буде трохи химерним. 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 може дозволити вам це робити без судо, але це поки не моє розуміння.


Це дозволяє їм встановлювати з Synaptic чи здатність, або просто apt-get?
snostorm

Якби ви додали до списку "/ usr / bin / synaptic", це було б. Насправді, ви, ймовірно, можете додати "/ usr / bin / software-center" до списку, і він би працював. Я не перевірив це, хоча дайте мені знати, чи працює, і я оновлю відповідь.
lfaraone

Я спробую це. :)
snostorm

Для цього потрібно, щоб користувачі знали запускати програмний центр з sudo, або для вас, щоб змінити файл .desktop. Дивіться мою відповідь про те, як налаштувати PolicyKit, щоб робити те, що ви хочете.
RAOF

Домовились, це було б чудовим рішенням.
lfaraone

5

Відповідь RAOF стосується лише Ubuntu. Kubuntu використовує QAptWorker як бекенд (спостерігається для Natty та Oneiric). Щоб увімкнути некореневі установки, створіть, /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.


Щоб повторно застосувати правила, я перезавантажився. (повторно вхід, мабуть, теж спрацює)
Lekensteyn

Як ви повинні це зробити? Навіть після того, як sudo -iя навіть не маю доступу до /etc/polkit-1/localauthority(Ubuntu 17.10): "Не буду намагатися обробляти каталог / etc / polkit-1 /
localauthority

5

Якщо вам потрібен лише загальний дозвіл, щоб дозволити / заборонити встановлення пакета, перейдіть до PolicyKit.

На жаль, PolicyKit не має чіткого контролю над пакетом для встановлення. Якщо ви хочете дати своїм користувачам дозвіл на встановлення лише обмеженого набору програм, вам слід використовувати sudoта встановлювати щось на зразок програмних каналів ...

Я також шукав щось подібне, але оскільки я нічого не знайшов, я зашифрував це просте рішення "програмні канали", доступні тут, на GitHub

Це дуже проста система, яка дозволяє звичайним користувачам (не адміністраторам) встановлювати пакети з обмежених каталогів.

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

Вони побачать пакети лише в каналах, що відповідають їх групам unix.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.