[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