Jak uruchomić aplikację podczas uruchamiania jako określony użytkownik?

17

Czy istnieje sposób na uruchomienie aplikacji podczas uruchamiania na określonym koncie użytkownika?

Na przykład chciałbym a_small_appuruchomić pod kontem użytkownika bob(który jest w grupie bobsgroup). Czy coś dodaję /etc/init.d?

Uwaga: Nie chcę, aby aplikacja uruchomiła się po zalogowaniu użytkownika, ale raczej po uruchomieniu komputera.

Nathan Osman
źródło
Czy chcesz uruchomić aplikację przed zalogowaniem się w oknie logowania?
Martin Owens -doctormo-
@Martin: Cóż, to naprawdę nie ma znaczenia ... Używam Apache jako przykładu tutaj. Kiedy to się zaczyna?
Nathan Osman

Odpowiedzi:

13

Metoda agnostyczna systemu startowego. Można użyć w /etc/rc.local, a /etc/init.d/...skrypt, plik konfiguracyjny Upstart i prawdopodobnie zbyt Systemd konfigurację.

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

To polecenie zostanie uruchomione jako użytkownik root i sudoprzejdzie do użytkownika „oli”. Oczywiście zmień użytkownika i polecenie do swoich celów.

Powinienem dodać, że istnieje co najmniej tuzin sposobów na zrobienie tego ... Ale z mojego doświadczenia wynika, że ​​wszystkie są w dużej mierze identyczne. Oto przykładowy przykład z jego setuidzwrotką:

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

setuid oli
respawn

exec /full/path/to/application
Oli
źródło
Sugeruję ten przykład
waltinator
Dostajęsudo: unknown group: 1004
ThorSummoner
Również poke : Czas zaktualizować linię o upstart.
muru
@muru będę. Ale grupa nie jest wymagana. sudo użyje domyślnej grupy określonego użytkownika.
Oli
Lepiej to wyedytuj. To polecenie było błędne przez trzy lata, odkąd ktoś je poprawił ! : D
muru
1

Wygląda na to, że pierwsza odpowiedź nie działa już w Ubuntu 14.10.

Tak to robię (umieść to w /etc/rc.local)

su <username> - -c "<command>"
vrodic
źródło
Jeśli potrzebujesz powłoki logowania, odpowiednikiem jest sudo -i -u ....
muru