Wie kann ich das Software Center so einrichten, dass Software für Benutzer ohne Rootberechtigung installiert wird?

47

Wie kann ich das Software Center so einrichten, dass Benutzer ohne Rootberechtigung Inhalte von Ubuntu-Repos installieren können, ohne dass sie ihr Kennwort eingeben müssen?

Ich bin mir der Auswirkungen auf die Sicherheit voll bewusst und bin bereit, das Risiko einzugehen. Fedora 12 wird mit so etwas ausgeliefert. (Durch Ändern der PolicyKit-Konfiguration, glaube ich)

Snostorm
quelle
5
Es ist wichtig zu wissen, dass Fedora es auch zurückgesetzt hat, nachdem der Himmel auf sie gefallen war.
Nicholas Knight
Ja, daran erinnere ich mich. Dies ist nur auf Desktop-Computern mit nur einem oder zwei Benutzern sinnvoll.
Schneesturm
Denken Sie daran, dass einige App-Market-Software wie Software Center das Ändern von System-Repositorys ermöglicht. Ein Self-Service von Paketen ist riskant, aber Benutzer, die nicht vertrauenswürdigen Paketquellen hinzufügen, sind wirklich gefährlich.
Alfonso EM

Antworten:

36

Sie können die PolicyKit-Berechtigungen ändern, um den Benutzern den Zugriff auf das von Software Center verwendete aptdaemon-Backend zu ermöglichen.

dpkg --listfiles aptdaemonzeigt, dass dies /usr/share/polkit-1/actions/org.debian.apt.policydie Datei ist, die die im aptdaemon-Backend möglichen Aktionen angibt.

In dieser Datei geben die < action id="">Tags die möglichen Aktionen an. Möglicherweise möchten Sie org.debian.apt.install-packagesden Benutzern erlauben, neue Pakete aus dem Archiv zu installieren und org.debian.apt.update-cachedie Paketlisten zu aktualisieren.

Hier erfahren Sie, in man pklocalauthoritywelchen Dokumenten lokale Berechtigungen für PolicyKit-Aktionen festgelegt werden. Wenn Sie Folgendes /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pklaeingeben, kann jeder am lokalen Computer angemeldete Benutzer Pakete installieren, nachdem er sein eigenes Kennwort eingegeben hat (auch wenn er nicht zur Administratorgruppe gehört), und den Paket-Cache aktualisieren, ohne ein Kennwort einzugeben.

[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
RAOF
quelle
Kubuntus Richtlinien (zumindest in Natty und Oneiric) sind in/usr/share/polkit-1/actions/org.kubuntu.qaptworker.policy
Lekensteyn
Anweisungen für Kubuntu finden Sie in meiner Antwort
Lekensteyn 13.11.11
Lebensretter - Prost Kumpel! Ich musste hinzufügen Identity=*, um dies zum Laufen zu bringen, angepasst von askubuntu.com/a/123260 . Gibt es auch eine Möglichkeit, mehr Policy Kit-Protokollausgaben in z. B. /var/log/auth.log(oder anderen Protokolldateien) zu erhalten? Ich bekomme nur authentication failsNachrichten, aber keinen Grund, warum es fehlgeschlagen ist ...
ssc
10

Ich glaube nicht, dass dies derzeit über die GUI möglich ist, aber das Folgende sollte funktionieren, wenn auch etwas klobig. YMMV.

Fügen Sie die folgende Zeile zu / etc / sudoers hinzu ( sudo visudozum Bearbeiten der Datei verwenden):

%packageinstallers ALL = NOPASSWD: /usr/bin/software-center /usr/bin/apt-get

Dann müssen Sie nur noch die spezifischen Benutzer erstellen und der packageinstallersGruppe hinzufügen :

$ sudo addgroup packageinstallers
$ sudo adduser jdoe packageinstallers

Jetzt jdoekann man folgendes machen:

$ sudo apt-get install <some-package>

und Sie können das Desktop- software-centerMenüelement für das Software Center so bearbeiten, dass es beim Voranstellen des Befehls mit aufruft gksudo.

Mit PolicyKit können Sie dies möglicherweise ohne sudo tun, aber ich verstehe es derzeit nicht.

lfaraone
quelle
Lässt sich das von Synaptic oder aptitude installieren oder nur von apt-get?
Schneesturm
Wenn Sie der Liste "/ usr / bin / synaptic" hinzufügen, würde dies der Fall sein. Tatsächlich könnten Sie wahrscheinlich "/ usr / bin / software-center" zur Liste hinzufügen, und es würde funktionieren. Habe das aber nicht getestet, lass es mich wissen und ich aktualisiere die Antwort.
Lfaraone
Ich werde das versuchen. :)
Snostorm
Dies setzt voraus, dass die Benutzer das Software-Center mit sudo ausführen oder die .desktop-Datei ändern können. Sehen Sie sich meine Antwort an, wie Sie PolicyKit optimieren, um das zu tun, was Sie wollen.
RAOF
Einverstanden, das wäre eine überlegene Lösung.
Lfaraone
5

Die Antwort von RAOF gilt nur für Ubuntu. Kubuntu verwendet QAptWorker als Backend (beobachtet für Natty und Oneiric). Um Installationen ohne Rootberechtigung zuzulassen, erstellen Sie /etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pklaFolgendes:

[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

Ich wollte einigen Benutzern ohne Administratorrechte erlauben, Software zu installieren, ohne sudo-Zugriff direkt zu gewähren. Dies wurde erreicht, indem die nächsten Zeilen in beide Konfigurationsgruppen eingefügt wurden:

Identity=unix-user:some-non-admin-user

Wenn es eine Gruppe gibt, der die Berechtigung erteilt werden muss, verwenden Sie unix-groupanstelle von unix-user.

Lekensteyn
quelle
Um die Regeln erneut anzuwenden, habe ich neu gestartet. (eine erneute Anmeldung würde wahrscheinlich auch funktionieren)
Lekensteyn
Wie solltest du das machen? Auch sudo -iwenn ich noch nicht einmal Zugriff auf /etc/polkit-1/localauthority(Ubuntu 17.10) habe: "Versucht nicht, das Verzeichnis / etc / polkit-1 / localauthority zu verarbeiten"
JHBonarius
5

Wenn Sie nur eine allgemeine Berechtigung benötigen, um die Paketinstallation zuzulassen / zu verbieten, wählen Sie PolicyKit.

Leider hat PolicyKit keine genaue Kontrolle über das zu installierende Paket. Wenn Sie Ihren Benutzern die Erlaubnis geben möchten, nur einen eingeschränkten Satz von Anwendungen zu installieren, sollten Sie so sudoetwas wie Softwarechannels verwenden und installieren ...

Ich habe auch nach so etwas gesucht, aber da ich nichts gefunden habe, habe ich diese einfache Lösung "softwarechannels" codiert, die hier auf GitHub verfügbar ist

Es ist ein sehr einfaches System, mit dem normale Benutzer (ohne Administratorrechte) 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