Wie kann ich Init-Skripte als Nicht-Root-Benutzer ausführen?

2

Ich habe diese Datei in /etc/init/proxyserver.conf abgelegt, die dieses Skript beim Start ausführt (Ubuntu 11.10):

description "Run code for ProxyServer"
start on runlevel [23]

script
    cd /home/mark/selenium-client
    exec java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111
end script

Das funktioniert gut, aber wenn ich das im Terminal ausführe:

ps aux | grep selenium

Es gibt diesen Bildschirm zurück:

root  783   0.0   2.3  680584   23688   ?   Ssl   Apr18   4:45   java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111

Aber ich möchte das Skript als Nicht-Root-Benutzer ausführen. Wie kann ich das tun?

Vielen Dank!

Mark Design
quelle
Wie wäre es mit su um es als beliebigen Benutzer auszuführen. Sie würden immer noch root brauchen, um das einzurichten, was ich denke
B T

Antworten:

5

Sie könnten es in laufen crontab mit der Option @reboot

crontab -e zum Öffnen der Benutzer-Crontab.

füge die Zeile hinzu @reboot /path/to/script und es sollte Ihr Skript beim Neustart als dieser Benutzer starten

Einige weitere Beispiele von cron hier verwenden

Journeyman Geek
quelle
2

Sie könnten z.B.

sudo -u mark exec java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111

Verwenden Sie die Root-Rechte, um den Prozess als angegebenen Benutzer auszuführen.


BEARBEITEN: Oder vielleicht

exec sudo -u mark java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111

je nachdem was upstart will (ich benutze es nicht selbst).

Daniel Andersson
quelle
2

Verwenden Sie in Upstart die setuid Stichwort:

description "Run code for ProxyServer"
start on runlevel [23]

 setuid mark  chdir / home / mark / selen-client
exec java -jar selenium-server-standalone-2.20.0.jar -role hub -port 1111 

( script ist unnötig.)

Alternativ erstellen Sie eine Benutzerjob anstelle eines Systems ein.

grawity
quelle