Hallo Thomas,
Thomas Schmidt schmidt@netaction.de (Mo 09 Dez 2013 13:50:23 CET):
Hi Heiko!
Ohje, habe ich Ausdrucksschwierigkeiten.
Ich habe folgenes Init-Script: https://github.com/netAction/CUL_FS20/blob/master/CUL_FS20.initscript
Das Mindeste, was Du tun solltest, ist, wenn ein PID-File vorhanden ist, gucken, ob es einen Prozess mit der entsprechenden PID gibt. Wenn nicht, dann kannst Du stillschweigend davon ausgehen, dass es beim letzten Mal übrig geblieben ist.
Genau so stelle ich mir das auch vor.
Teile davon findest Du im status-Teil Deines Scripts. Verwerte doch diesen Teil.
Wo im Script ist der „richtige Nutzer“ zu sehen? Ich hätte ein „su“ erwartet, auf den „richtigen Nutzer“.
Genau, ich würde gerne den Benutzer wechseln im Init-Script. Ein „su“ könnte ich auch selbst hinbekommen, aber da ich nicht quer durch die Distros testen kann, würde ich mich sehr über eine Lösung von einem alten Bash-Hasen freuen.
Na, Moment, „su“ sollte überall gleich funktionieren.
Nicht Bash, Sh :) Die Distros mögen da in den Init-Scripte die Verwendung der Bash nicht wirklich. Wobei ich jetzt die einzelnen Policies nicht kenne…
Und der Script sollte beim start) mal sicherheitshalber ein „cd /“ machen, oder in ein anderes Verzeichnis, das auch tatsächlich vorhanden bleibt. Und vielleicht noch ein „export LC_ALL=POSIX“.
Danke, das habe ich schon mal geändert.
Besser also
LC_ALL=POSIX export LC_ALL
Weil das in einer Zeile abzuwickeln könnte Bashismus sein.
Ich meine, die meisten Distros haben Beispielscripte am Start, mitunter als /etc/init.d/skeleton oder ähnlich.
Da ich nicht weiß, was die User für ein Betriebssystem haben, hätte ich gerne eine etwas allgemeingültigere Lösung. Außerdem hat meine /etc/init.d/skeleton auch keinen Benutzerwechsel drin.
Und vorallem, die meisten Distros verwenden inzwischen etwas wie „startproc“ oder „start-stop-daemon“ um Prozesse im Init-Script zu starten und ggf. die PID irgendwo wiederzufinden.
…
Hoffentlich verstehst du jetzt, was ich meine.
So leidlich. Aber ich denke, ich werde Dir den Script nun doch nicht schreiben, sondern schlage vor, Du schreibst ihn und stellst das dann hier zur Diskussion.
Einen Ausgangspunkt scheinst Du ja schon zu haben, also baust Du noch das mit dem „su“ ein und den Verzeichniswechsel, ebenso noch das Herstellen eines sicheren Environments.
Und dann gucken wir mal weiter.