ubuntuusers.de

In shellscript zu einem nicht-privilegierten user wechseln?

Status: Ungelöst | Ubuntu-Version: Server 10.04 (Lucid Lynx)
Antworten |

mic-e

Anmeldungsdatum:
3. Januar 2008

Beiträge: 23

Wohnort: Würzburg, BAY

Hallo,

ich schreibe im Moment ein shellscript, das beim Start automatisch alle seine Rechte abgeben und als nicht privilegierter User laufen soll.

Im Moment verwende ich dazu folgenden Code:

1
2
3
4
5
USERNAME="name"
if [[ $UID -ne $(id -u "$USERNAME") ]]; then
	sudo -u "$USERNAME" "$0" "$@"
	exit $?
fi

Ich führe das Skript also einfach mit sudo -u mit den selben Parametern neu aus.

Das funktioniert aber leider nur, wenn das Script von root oder von einem user mit admin-Rechten ausgeführt wird. Ansonsten ist der sudo-Aufruf leider nicht möglich.

Ich will nun aber in der Lage sein, das Script aus einem PHP-Script heraus aufzurufen, also als user www-data.

Hat irgendjemand Ideen, wie sich das bewerkstelligen ließe?

Vielen Dank im Vorraus, Michael

gekmihesg

Anmeldungsdatum:
6. Mai 2009

Beiträge: 106

Ja. Siehe hier: sudo/Konfiguration

mic-e

(Themenstarter)

Anmeldungsdatum:
3. Januar 2008

Beiträge: 23

Wohnort: Würzburg, BAY

Vielen Dank für die Antwort.

Ich habe per visudo folgende Zeile in die sudoers-File eingefügt:

1
www-data ALL=(minecraft) NOPASSWD: /usr/bin/minecraft-server

Damit funktioniert nun alles genau wie gewünscht.

Da ich allerdings vor habe, das Skript auch als deb-Paket an andere Interresierte auszuliefern, brauche ich jetzt noch eine _sichere_ Möglichkeit, diese Zeile während des Setups manuell in die sudoers-File einzufügen. Dazu will ich mir eigentlich nichts mittels awk oder einer anderen Skriptsprache basteln, da ich mir da niemals sicher sein kann, dass auch alles gut läuft und der User durch die Installation meines Pakets nicht komplett aus seinem System ausgesperrt wird. Gibt es dafür ein zuverlässiges Tool?

Grüße, Michael

Antworten |