[linux-l] Benutzerwechsel im Shellscript

Benjamin Schieder blindcoder at scavenger.homeip.net
Fr Apr 6 07:23:08 CEST 2007


On 06.04.2007 01:48:52, Volker Grabsch wrote:
> ich bin beim Schreiben eines init.d-Scriptes über folgendes Problem
> gestoßen: Es soll ein Prozess (Daemon) gestartet werden, aber nicht
> als root, sondern als ein bestimmter User. Die Logdaten landen aber
> in einem Logfile, das root gehört.

Wieso gehoert das Logfile 'root' wenn der Prozess als $USER laeuft?

> Kein Problem, dachte ich mir, und schrieb:
>     su - myuser -c /usr/bin/mydaemon >> /var/log/mydaemon.log &
> oder, um genauer zu sein:
> 
>     su - "$USER" -c "'$DAEMON'" >> "$LOGFILE" &
> 
> 
> Das läuft soweit, aber zwei Details stinken:
> 
> 1) Wenn nicht als root ausgeführt, kommt eine absolut irreführende
>    Fehlermeldung: "stdin is not a tty" bzw. "su: must be run from a
>    terminal".
> 
>         (Wenn su nicht als root gestartet wird, will es ein
>          Passwort, und aus Sicherheitsgründen will es das Passwort
>          nicht von "irgendeinem stdin", sondern von einer Tastatur
>          haben.)

Ein init script wird schon per Definition von niemand anderem als 'root'
ausgefuehrt, von daher ist das Problem keines.

Besides:
root at fuzzy:~# su - blindcoder -c "ls -ld /"
drwxr-xr-x 22 root root 560 Jan  7 12:43 /
root at fuzzy:~# logout
blindcoder at fuzzy:~$ su - blindcoder -c "ls -ld /"
Password:
drwxr-xr-x 22 root root 560 Jan  7 12:43 /
blindcoder at fuzzy:~$

Wenn das init script also per Hand als $USER aufgerufen wird, wird einfach
nach dem Passwort gefragt.


Freundliche Gruesse,
	    Benjamin
-- 
Go away, or I will replace you with a very small shellscript!
	http://shellscripts.org/
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: nicht verfügbar
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20070406/aefa4c54/attachment.sig>


Mehr Informationen über die Mailingliste linux-l