Дозволити користувачам, які не є адміністратором, встановлювати пакети через apt або rpm?


13

Чи можна дозволити користувачам, які не користуються коренем, встановлювати пакети на всій системі за допомогою apt або rpm?

Місце, де я зараз працюю, має застарілі настройки на вікнах linux, і адміністраторам нудно робити всі установки для користувачів за запитом, тому вони думають надати повні права sudo для всіх користувачів. Це має очевидні недоліки в безпеці. Тож мені цікаво, чи існує спосіб дозволити нормальним користувачам встановлювати програмне забезпечення - а також оновити та видалити його?


4
Якщо ви надаєте привілеї для встановлення пакетів, ви по суті надали повні права адміністратора, оскільки користувач може просто встановити пакет із встановленою root-оболонкою.
camh

@camh hrm .. ви можете мати перевірений сховище, і не дозволяти користувачам додавати нові сховища, ні? Або apt дозволяє вам встановлювати пакети з файлів .deb? Я усвідомлюю, що перевірений репо буде, мабуть, більше працювати в довгостроковій перспективі, це більше концептуальне питання :)
naught101

1
apt-secure(8)говорить: "apt-get наразі попереджає лише про непідписані архіви, майбутні випуски можуть змусити перевірити всі джерела перед завантаженням з них пакетів". Залежно від того, наскільки складною є атака, можливе викрадення з'єднання з джерелом сховища та введення недовіреного пакету. Однак прочитайте цю сторінку людини для отримання більш детальної інформації. Можливо, у вас є достатньо безпечне рішення для вашої моделі ниток.
camh


Відповіді:


23

Ви можете вказати дозволені команди за допомогою sudo, не потрібно дозволяти необмежений доступ, наприклад

username ALL = NOPASSWD : /usr/bin/apt-get , /usr/bin/aptitude

Це дозволило б імені користувача для запуску sudo apt-getі sudo aptitudeбез пароля , але не допустить які - або інші команди.

Ви також можете використовувати пакетний комплект у поєднанні з PolicyKit для більш тонкого рівня контролю, ніж sudo.

Дозволити користувачам встановлювати / видаляти пакети може становити ризик. Вони можуть досить легко зробити систему нефункціональною, просто видаливши необхідне програмне забезпечення, наприклад libc6, dpkg, rpm тощо. Встановлення довільного програмного забезпечення з визначених архівів може зловмисникам встановити застаріле або експлуатується програмне забезпечення та отримати кореневий доступ. Основне питання на мою думку - наскільки ви довіряєте своїм працівникам?

Звичайно, ваша команда адміністратора також може почати використовувати систему управління конфігурацією, як ляльковий, шеф-кухар або заглянути в космос для управління вашою системою. Це дозволило б їм налаштувати та керувати системою з центральної системи.


Я не залишив це питання, але чи є у вас коментарі щодо зниження рівня безпеки, які мають на увазі, дозволяючи це? Я маю на увазі, ви не можете змінити сховища пакетів, тому ви, мабуть, не отримаєте повного доступу до sudo, але ви можете записати в будь-який файл, використовуючи aptitude (параметри> налаштування> "Файл для входу в дії"), що може завдають серйозної шкоди. Я менш впевнений у PolicyKit ...
naught101

1
@ naught101 Ок, я додав коментарі щодо безпеки. JFTR, оскільки policykit не надає кореневого доступу, було б менш проблематично, ніж використання sudo
Ulrich Dangel,

Є способи запустити оболонку з dpkg або rpm. Наприклад: dpkg підкаже, коли відбудеться зміна файлу конфігурації, який зіткнеться, при цьому одним із варіантів буде запуск оболонки для вивчення ситуації . Це запустить оболонку як root, якщо запустити через sudo. Так само, якщо ви можете запустити редактор за допомогою інструменту, так як більшість редакторів дозволяють виконувати довільні команди оболонки всередині них (наприклад, команда! In vi).
Девід Гарднер

@ naught101 Я б протестував на ескалацію привілеїв через RPM, що містить оболонку SUID, як описано в цьому блозі: nosedookie.blogspot.com/2011/07/… Однак у сценарії введення оболонки, коли компрометований акаунт судоуера, можна пом'якшити ескалація привілеїв через sudo, вимагаючи введення пароля на відміну від NOPASSWD.
Метт

7

aptdcon

З чоловічої сторінки:

aptdcon: дозволяє виконувати завдання з управління пакетами, наприклад, встановлення або видалення програмного забезпечення за допомогою aptdaemon. Щоб запустити цю програму, кореня не потрібно.


1
Хоча для запуску aptdcon вам не потрібні права root / sudo, він негайно запускає діалогове вікно аутентифікації для непривілейованих користувачів - я щойно тестувався на Ubuntu. Якщо ви не привілейований / авторизований користувач, це не додає / видаляє пакети.
шавлія

1
Не працює на операціяхERROR: You are not allowed to perform this action. ('system-bus-name', {'name': ':1.716'}): org.debian.apt.install-or-remove-packages
JacopKane


1

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

https://github.com/alfem/softwarechannels

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

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

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

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