Wie führe ich eine Anwendung beim Start als bestimmter Benutzer aus?

17

Gibt es eine Möglichkeit, eine Anwendung während des Startvorgangs unter einem bestimmten Benutzerkonto zu starten?

Zum Beispiel möchte ich a_small_appunter dem Benutzerkonto bob(das in der Gruppe ist bobsgroup) ausgeführt haben. Füge ich etwas /etc/init.d?

Hinweis: Ich möchte nicht, dass die Anwendung nach dem Anmelden eines Benutzers gestartet wird , sondern erst, wenn der Computer gestartet wird .

Nathan Osman
quelle
Möchten Sie, dass die App vor dem Anmelden im Anmeldefenster gestartet wird?
Martin Owens -doctormo-
@Martin: Nun, das ist eigentlich egal ... Ich verwende hier Apache als Beispiel. Wann geht es los?
Nathan Osman

Antworten:

13

Eine systemunabhängige Startmethode. Sie können dies in /etc/rc.localeinem /etc/init.d/...Skript, einer Upstart-Konfigurationsdatei und wahrscheinlich auch in einer systemd-Konfiguration verwenden.

sudo -u oli /full/path/to/application

Dieser Befehl wird als Root-Benutzer ausgeführt und sudoauf den Benutzer "oli" übertragen. Ändern Sie offensichtlich den Benutzer und den Befehl für Ihre Zwecke.

Ich sollte hinzufügen, dass es mindestens ein Dutzend Möglichkeiten gibt, genau dies zu tun ... Aber meiner Erfahrung nach sind sie alle in ihrer Wirkung weitgehend identisch. Hier ist ein Beispiel für einen Emporkömmling mit seiner setuidZeilengruppe:

start on (filesystem and stopped udevtrigger)
stop on runlevel [06]

setuid oli
respawn

exec /full/path/to/application
Oli
quelle
Ich schlage vor, dass das Beispiel
Waltinator
Ich bekommesudo: unknown group: 1004
ThorSummoner
Außerdem poke : Zeit, die Zeile über den Upstart zu aktualisieren.
Muru
@muru werde ich. Eine Gruppe ist jedoch nicht erforderlich. sudo verwendet die Standardgruppe des angegebenen Benutzers.
Oli
Dann redigiere es besser. Dieses Kommando ist seit drei Jahren falsch, seit es jemand verbessert hat! : D
muru
1

Es scheint, dass die erste Antwort in Ubuntu 14.10 nicht mehr funktioniert.

So mache ich es dort (in /etc/rc.local)

su <username> - -c "<command>"
vrodic
quelle
Wenn Sie eine Login-Shell benötigen, ist das Äquivalent sudo -i -u ....
muru