mabue88
Goto Top

Debian - Berechtigungen für apt-get Optionen einzeln verwaltbar?

Hallo,

ist es möglich einem Benutzer unter Debian beispielsweise die Berechtigung zur Ausführung der Befehle

apt-get update
apt-get upgrade
apt-get dist-upgrade

zu erteilen, ohne ihm auch sämtliche anderen Optionen, wie z.B.

apt-get install ...
apt-get remove ...

zu erteilen?

Danke
mabue

Content-Key: 248827

Url: https://administrator.de/contentid/248827

Printed on: April 20, 2024 at 04:04 o'clock

Member: Arano
Arano Sep 10, 2014 at 21:16:47 (UTC)
Goto Top
Hallo Mabue

ähm... ähm...
Hast du es schon mit "sudoers" versucht !? (man sudoers / man visudo / backups sind wichtig)
...ich weiss es nämlich selber nicht genau ob das so geht. könnte sein das über sudoers nur das komplette Programm zur Verfügung steht.

Eine alternative könnte sein das du Wrapper-Scripts schreibst und dem entsprechendem User dann erlaubst diese als root auszuführen (via sudoers).
Die Scripte wiederum können von dem User nur gelesen und ausgeführt werden und tuen nichts weiter als den gewünschten apt-get-Modus aufzurufen.


Ist spät, ich gehöre ins Bett.
~Arano
Member: Lochkartenstanzer
Lochkartenstanzer Sep 11, 2014 updated at 07:12:24 (UTC)
Goto Top
Zitat von @mabue88:

Hallo,

ist es möglich einem Benutzer unter Debian beispielsweise die Berechtigung zur Ausführung der Befehle

> apt-get update
> apt-get upgrade
> apt-get dist-upgrade
> 

zu erteilen, ohne ihm auch sämtliche anderen Optionen, wie z.B.

> apt-get install ...
> apt-get remove ...
> 

zu erteilen?


Moin,

Im Prinzip ja. Aber aufwendig.

Du kannst Dich z.B. mit SELinux, AppArmor und GRSecurity beschäftigen und damit Vesuchen Deine Wünsche zu erfüllen.

Oder Du schreibst ein wrapperskript, daß Dir überprüft, ob der User install und remove ausführen darf und wenn nicht, die Benutzung verweigert.Damit der User aber als sudoer Dein Skript nicht aushebelt, mußt Du einen erheblichen Aufwand treiben. Wenn er root sein darf, kannst Du ihn sowieso nicht davon abhalten.

Die einzig vernünftige Lösung ist imho, sich ein LART wie z.B. Cat9 zu besorgen und dem User (sehr) glaubhaft zu versichern, daß Du es auch benutzt, wenn er sich nicht an die Regeln hält. face-smile

lks
Member: mabue88
mabue88 Sep 11, 2014 at 07:31:26 (UTC)
Goto Top
Danke für eure Tipps.

Um es etwas genauer zu beschreiben:

Auf einem Rechner läuft Apache. In einem gewissen Rahmen soll der Rechner innerhalb eines Login-Bereichs administrierbar sein.
Dazu wird per JavaScript ein PHP-Script aufgerufen. In diesem werden aktuell die entsprechenden Befehle aufgerufen. Es werden keine Parameter entgegengenommen. Damit das über den Webserver funktioniert habe ich in der sudoers-File dem Benutzer www-data die Berechtigung zum Ausführen von apt-get gegeben.

Damit funktioniert das ganze schon mal.

Ich weiss allerdings nicht, wie sicher das ist. Also wie einfach oder schwer sich da was tricksen lässt, damit plötzlich auch Programme installiert oder deinstalliert werden können.
Member: Lochkartenstanzer
Lochkartenstanzer Sep 11, 2014 at 07:49:17 (UTC)
Goto Top
Zitat von @mabue88:

Dazu wird per JavaScript ein PHP-Script aufgerufen. In diesem werden aktuell die entsprechenden Befehle aufgerufen. Es werden
keine Parameter entgegengenommen.

Wie bekommt dann apt-get seine Parameter?

Damit das über den Webserver funktioniert habe ich in der sudoers-File dem Benutzer
www-data die Berechtigung zum Ausführen von apt-get gegeben.

Wieder die frage, wie kommst das apt-get an seine parameter?

Ich weiss allerdings nicht, wie sicher das ist. Also wie einfach oder schwer sich da was tricksen lässt, damit plötzlich
auch Programme installiert oder deinstalliert werden können.

Das hängt im wesentlichen davon ab, wei sicher Deien PHP-Installation udn Deien skripten sind. wenn www-data apt-get aufrufen darf udn irgendwo in Deinen PHP-Skripten ein Fehler ist, kann man ggf. üebr Umwege apt-get mit unewünschten Parametern aufrufen.

lks
Member: mabue88
mabue88 Sep 11, 2014 updated at 07:56:15 (UTC)
Goto Top
In der PHP-Datei habe ich für jeden Parameter eine Funktion erstellt:

function Update(){
		exec("sudo apt-get update -y", $output, $status);  
		return $status;
}

function Upgrade(){
	exec("sudo apt-get upgrade -y", $output, $status);  
	return $status;
}

function DistUpgrade(){
	exec("sudo apt-get dist-upgrade -y", $output, $status);  
	return $status;
}

// Vereinfachte Funktionsaufrufe, tatsächlich werden die Rückgabewerte der Funktionen geprüft
Update();
Upgrade();
DistUpgrade();

Das heisst ich kann lediglich die jeweilige Funktion aufrufen und nach deren Fertigstellung den Rückgabewert entgegennehmen.
Meiner Meinung nach müsste da schon jemand Zugriff auf den Speicher des Rechners haben um die Parameter mittels Editor abzuändern. Aber sobald jemand Zugriff auf den Speicher hat habe ich vermutlich andere Probleme face-wink...
Member: Lochkartenstanzer
Lochkartenstanzer Sep 11, 2014 at 07:58:24 (UTC)
Goto Top
Moin,

Mit diesen Funktionen kann da eigentlich nciht viel passieren.

Was Du aber beachten mußt, daß deien PHP-Skripten an anderen Stellen, wo sie Parameter annehmen und auswerten Fehler haben können und daher über diesen Umweg apt-get aufgerufen werden könnte!

lks
Member: mabue88
mabue88 Sep 11, 2014 at 15:50:13 (UTC)
Goto Top
Ja, dass man beim Umgang mit Parametern aufpassen muss weiss ich.
Deswegen versuche ich möglichst auf Parameter zu verzichten und falls notwendig diese so gut wie möglich zu plausibilisieren, bevor sie den Weg in die Shell oder sonst wohin finden.

Danke für eure Hilfe!