Разрешить пользователям без прав администратора устанавливать пакеты через apt или rpm?

13

Можно ли разрешить пользователям без полномочий root устанавливать пакеты для всей системы, используя apt или rpm?

Место, где я работаю, в настоящее время имеет устаревшие настройки на компьютерах Linux, и администраторы устали от необходимости выполнять все установки для пользователей по запросу, поэтому они думают о предоставлении полных прав sudo всем пользователям. Это имеет очевидные недостатки безопасности. Поэтому мне интересно, есть ли способ разрешить обычным пользователям устанавливать программное обеспечение - а также обновлять и удалять его?

naught101
источник
4
Если вы предоставляете привилегии для установки пакетов, вы, по сути, предоставляете полные права администратора, поскольку пользователь может просто установить пакет с помощью оболочки setuid-root.
Camh
@camh hrm .. вы могли бы иметь проверенный репозиторий и не позволять пользователям добавлять новые репозитории, не так ли? Или apt позволяет устанавливать пакеты из файлов .deb? Я понимаю, что проверенное репо, вероятно, будет больше работать в долгосрочной перспективе, это скорее концептуальный вопрос :)
naught101
1
apt-secure(8)говорит: «apt-get в настоящее время только предупреждает о неподписанных архивах, будущие выпуски могут заставить все источники проверяться перед загрузкой пакетов из них». В зависимости от того, насколько сложна атака, может быть возможно захватить соединение с источником хранилища и внедрить ненадежный пакет. Тем не менее, прочитайте эту справочную страницу для более подробной информации. У вас может быть достаточно безопасное решение для вашей модели потока.
Camh
1
Связанный: Менеджеры пакетов без рута
Петр Доброгост

Ответы:

21

Вы можете указать разрешенные команды с помощью sudo, вам не нужно разрешать неограниченный доступ, например

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

Это позволило бы имени пользователя для запуска sudo apt-getи sudo aptitudeбез пароля , но не допустит какие - либо другие команды.

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

Разрешение пользователям устанавливать / удалять пакеты может быть опасным. Они могут довольно легко вывести систему из строя, просто удалив необходимое программное обеспечение, такое как libc6, dpkg, rpm и т. Д. Установка произвольного программного обеспечения из определенных архивов может позволить злоумышленникам установить устаревшее или эксплуатируемое программное обеспечение и получить права root. Главный вопрос на мой взгляд, насколько вы доверяете своим сотрудникам?

Конечно, ваша команда администраторов может также начать использовать систему управления конфигурацией, такую ​​как puppet, chef или изучить открытый космос для управления вашей системой. Это позволило бы им конфигурировать и управлять системой из центральной системы.

Ульрих Дангел
источник
Я оставил это вне своего вопроса, но есть ли у вас какие-либо комментарии по поводу снижения безопасности, подразумеваемого разрешением этого? Я имею в виду, что вы не можете изменить репозитории пакетов, поэтому вы, вероятно, не получите полный доступ sudo, но вы можете записать в любой файл, используя aptitude (параметры> настройки> «Файл для входа в действия»), что может нанести серьезный ущерб. Я менее уверен насчет PolicyKit ...
naught101
1
@ naught101 хорошо, я добавил несколько комментариев о безопасности. JFTR, поскольку policykit не будет предоставлять root-доступ, будет менее проблематичным, чем использование sudo
Ульрих Дангел
Есть способы, которыми вы можете запустить оболочку из dpkg или rpm. Например: dpkg предложит при изменении файла конфигурации, который конфликтует, с одним из вариантов запуска оболочки для изучения ситуации . Это запустит оболочку как root, если она запускается через sudo. Аналогично, если вы можете запустить редактор из инструмента, так как большинство редакторов позволяют запускать произвольные команды оболочки из них (например,! Команда в vi).
Дэвид Гарднер
@ naught101 Я бы протестировал на повышение привилегий через RPM, который содержит оболочку SUID, как описано в этом блоге: nosedookie.blogspot.com/2011/07/… Однако в сценарии внедрения оболочки, где учетная запись sudoer взломана, можно было бы смягчить повышение привилегий через sudo, требуя ввода пароля , в отличие от NOPASSWD.
Мэтт
7

aptdcon

Из справочных страниц:

aptdcon: позволяет выполнять задачи управления пакетами, например, устанавливать или удалять программное обеспечение, используя aptdaemon. Для запуска этой программы нет необходимости иметь права root.

pl1nk
источник
1
Хотя вам не нужны привилегии root / sudo для запуска aptdcon, он сразу же запускает диалог аутентификации для непривилегированных пользователей - я только что протестировал на 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.

Альфонсо Э.М.
источник