Re: Das leidige Thema: Wie Kommando als jemand anderes ausführen? (su -m)

From: Peter Wullinger <some-mail-drop(at)gmx.net>
Date: Thu, 19 Aug 2004 00:04:11 +0200

In epistula a Heino Tiedemann, die horaque Wed, Aug 18, 2004 at 11:05:26PM +0200:
> Hallo,

NAbend,
>
> [snip]
>
> Abhilfe: su -m mailnull -c "exim -qff"
>
> Nun, in dieser Liste wurde mir aber schon gesagt: "Lass die Finger
> von 'su -m'".

Naja:

% fgrep "su -m" /etc/*
/etc/rc.subr: _doit="su -m $_user -c 'sh -c \"$_doit\"'"
/etc/rc.subr: _doit="su -m $_user -c 'sh -c \"$_doit\"'"
/etc/rc.subr: _doit="su -m $_user -c 'sh -c \"$_doit\"'"

*hust*

Und nein, da werden vorher nicht die Umgebungsvariablen gekillt ;-).

>
> Frage, wie ist es _richtig_? Wie ist es eine gute lösung im Unix-Sinn?

Gute Frage, mir fallen auf Anhieb mehrere Möglichkeiten ein, das Problem
hier zu lösen. Die Ansätze sind aber alle gleich: Man muß irgendwie
dafür sorgen, daß keine problematischen Umgebungsvariablen
(LD_LIBRARY_PATH und LD_PRELOAD wären gute Kandidaten) gesetzt sind,
die das Laufzeitverhalten des gestarteten Programmes beinflussen
könnten.

Also löscht man einfach mit env(1) alles, was man nicht unbedingt
braucht aus der Umgebung raus:

% /usr/bin/env -i SHELL=/bin/sh /usr/bin/su -m mailnull -c "/usr/local/bin/exim -qff"

Die Frage ist dann, ob das aufgerufene Programm damit zurechtkommt,
schließlich ist seine Umgebung ja fast leer. Das dürfte bei exim aber
keine Probleme machen und im Fall der Fälle, kann man mit env(1)
experimentieren und zusätzliche Variablen übergeben (PATH, HOME, USER,
LOGNAME, usw.)

Eine andere Version, wäre sudo (in den Ports security/sudo) zu installieren
und zu benutzen. Sudo löscht die "problematischen" Umgebungsvariablen
selbsttätig:

% sudo -u mailnull exim -qff

Gruß,
        Peter

-- 
The explanation requiring the fewest assumptions
is the most likely to be correct.
	-- William of Occam
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 19 Aug 2004 - 00:04:34 CEST

search this site