Benutzern ohne Administratorrechte die Installation von Paketen über apt oder rpm erlauben?

13

Ist es möglich, Nicht-Root-Benutzern die systemweite Installation von Paketen mit apt oder rpm zu erlauben?

Der Ort, an dem ich arbeite, ist derzeit auf den Linux-Boxen veraltet, und Administratoren haben es satt, alle Installationen für Benutzer auf Anfrage durchführen zu müssen, sodass sie darüber nachdenken, allen Benutzern die vollständigen Sudo-Rechte zu erteilen. Dies hat offensichtliche Sicherheitsnachteile. Ich frage mich also, ob es eine Möglichkeit gibt, normalen Benutzern zu erlauben, Software zu installieren - und sie zu aktualisieren und zu entfernen.

naught101
quelle
4
Wenn Sie Berechtigungen zum Installieren von Paketen erteilen, haben Sie im Wesentlichen vollständige Administratorrechte erteilt, da ein Benutzer ein Paket nur mit einer setuid-root-Shell installieren kann.
camh
@camh hrm .. Sie könnten ein überprüftes Repository haben und nicht zulassen, dass Benutzer neue Repositorys hinzufügen, nicht wahr? Oder können Sie mit apt Pakete aus .deb-Dateien installieren? Ich stelle fest, dass ein geprüftes Repo auf lange Sicht wahrscheinlich mehr Arbeit bedeuten würde, dies ist eher eine konzeptionelle Frage :)
naught101
1
apt-secure(8)sagt: "apt-get warnt derzeit nur vor nicht signierten Archiven, zukünftige Versionen könnten die Überprüfung aller Quellen erzwingen, bevor Pakete von ihnen heruntergeladen werden". Je nachdem, wie komplex ein Angriff ist, kann es möglich sein, die Verbindung zur Repository-Quelle zu hijacken und ein nicht vertrauenswürdiges Paket zu injizieren. Lesen Sie jedoch diese Manpage für weitere Details. Möglicherweise haben Sie eine ausreichend sichere Lösung für Ihr Thread-Modell.
Uhr
Siehe auch: Benutzer-lokales Paketverwaltungssystem
Piotr Dobrogost
1
Verwandte: Nicht-Root-Paketmanager
Piotr Dobrogost

Antworten:

19

Sie können die zulässigen Befehle mit sudo angeben, Sie müssen nicht den uneingeschränkten Zugriff gewähren, z

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

Dies würde es ermöglichen Benutzernamen laufen sudo apt-getund sudo aptitudeohne Passwort würde aber keine anderen Befehle nicht zulassen.

Sie können packagekit auch in Kombination mit PolicyKit verwenden, um eine feinere Kontrolle als sudo zu erzielen .

Das Zulassen, dass Benutzer Pakete installieren / entfernen, kann ein Risiko darstellen. Sie können ein System ziemlich leicht funktionsunfähig machen, indem sie erforderliche Software wie libc6, dpkg, rpm usw. deinstallieren. Durch die Installation von beliebiger Software aus den definierten Archiven können Angreifer veraltete oder ausnutzbare Software installieren und Root-Zugriff erlangen. Die Hauptfrage ist meiner Meinung nach, wie sehr Sie Ihren Mitarbeitern vertrauen.

Natürlich kann Ihr Admin-Team auch ein Konfigurationsmanagementsystem wie Puppet, Chef oder Spacewalk verwenden, um Ihr System zu verwalten. Dies würde es ihnen ermöglichen, das System von einem zentralen System aus zu konfigurieren und zu verwalten.

Ulrich Dangel
quelle
Ich habe es nicht in Frage gestellt, aber haben Sie Anmerkungen zu der damit verbundenen Sicherheitsreduzierung? Ich meine, Sie können die Paket-Repositorys nicht ändern, so dass Sie wahrscheinlich keinen vollständigen Sudo-Zugriff erhalten, aber Sie können mit aptitude (options> preferences> "File to log Actions in") in jede Datei schreiben, was möglich sein könnte schweren Schaden anrichten. Ich bin mir bei PolicyKit weniger sicher ...
naught101
1
@ naught101 ok, ich habe ein paar Kommentare zum Thema Sicherheit hinzugefügt. JFTR als Policykit bietet keinen Root-Zugriff, es wäre weniger problematisch als die Verwendung von sudo
Ulrich Dangel
Es gibt Möglichkeiten, wie Sie eine Shell von dpkg oder rpm ausführen können. Beispiel: dpkg fragt ab, wenn eine Änderung der Konfigurationsdatei vorliegt, die nicht funktioniert, und eine der Optionen ist , eine Shell zu starten, um die Situation zu untersuchen . Dies startet eine Shell als root, wenn sie über sudo ausgeführt wird. Ebenso, wenn Sie einen Editor aus dem Tool ausführen können, da die meisten Editoren Sie beliebige Shell-Befehle aus ihnen ausführen lassen (z. B.! Befehl in vi).
David Gardner
@ naught101 ich für privilege escalation über eine RPM testen würde , die ein SUID - Shell als Blog beschreibt enthält: nosedookie.blogspot.com/2011/07/... , jedoch in einem Shell Injektion Szenario, bei dem das sudoer Konto kompromittiert ist, so könnte man mildern Rechteerweiterung über sudo durch Eingabe eines Kennworts im Gegensatz zu NOPASSWD.
Matt
7

aptdcon

Aus den Manpages:

aptdcon: Ermöglicht das Ausführen von Paketverwaltungsaufgaben, z. B. das Installieren oder Entfernen von Software mit aptdaemon. Es ist nicht erforderlich, root zu sein, um dieses Programm auszuführen.

pl1nk
quelle
1
Obwohl Sie keine root / sudo-Rechte benötigen, um aptdcon auszuführen, wird sofort ein Authentifizierungsdialog für nicht privilegierte Benutzer gestartet - ich habe gerade auf Ubuntu getestet. Wenn Sie kein privilegierter / autorisierter Benutzer sind, werden hierdurch keine Pakete hinzugefügt / entfernt.
Salbei
1
Funktioniert nicht bei OperationenERROR: You are not allowed to perform this action. ('system-bus-name', {'name': ':1.716'}): org.debian.apt.install-or-remove-packages
JacopKane
4
username ALL = NOPASSWD : /usr/bin/yum, /bin/rpm
fromnaboo
quelle
1

Ich habe auch nach so etwas gesucht, aber es ist nichts aufgetaucht, also habe ich diese einfache Lösung "softwarechannels" codiert:

https://github.com/alfem/softwarechannels

Es ist ein sehr einfaches System, mit dem normale Benutzer (keine Administratoren) Pakete aus eingeschränkten Katalogen installieren können.

Definieren Sie einfach "Kanäle" (Gruppen von Paketen) in einer einfachen Textdatei und erteilen Sie Ihren Benutzern die Berechtigung, Software-Kanäle zu starten.

Sie sehen nur Pakete in Channels, die ihren Unix-Gruppen entsprechen.

Alfonso EM
quelle