¿Cómo ejecutar una aplicación al inicio como un determinado usuario?

17

¿Hay alguna manera de iniciar una aplicación durante el inicio con una determinada cuenta de usuario?

Por ejemplo, me gustaría haber a_small_appejecutado con la cuenta de usuario bob(que está en el grupo bobsgroup). ¿Añado algo /etc/init.d?

Nota: No quiero que la aplicación se inicie después de que un usuario inicie sesión, sino más bien cuando se inicia la computadora.

Nathan Osman
fuente
¿Desea que la aplicación se inicie antes de iniciar sesión en la ventana de inicio de sesión?
Martin Owens -doctormo-
@ Martin: Bueno, en realidad no importa ... Estoy usando Apache como ejemplo aquí. ¿Cuando inicia?
Nathan Osman

Respuestas:

13

Un método agnóstico del sistema de arranque. Puede usar esto en /etc/rc.localun /etc/init.d/...script, un archivo de configuración Upstart y probablemente también en una configuración systemd.

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

Este comando se ejecutará como usuario root y sudose desplegará hasta el usuario "oli". Obviamente cambie el usuario y el comando para sus propósitos.

Debo agregar que hay al menos una docena de formas de hacer exactamente esto ... Pero, en mi experiencia, todas son en gran medida idénticas en efecto. Aquí hay un ejemplo inicial usando su setuidestrofa:

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

setuid oli
respawn

exec /full/path/to/application
Oli
fuente
Sugiero que el ejemplo
waltinator
Me salesudo: unknown group: 1004
ThorSummoner
Además, poke : es hora de actualizar la línea sobre el arranque.
muru
@muru lo haré. Pero no se requiere grupo. sudo usará el grupo predeterminado del usuario especificado .
Oli
Mejor editarlo, entonces. ¡Ese comando ha estado mal durante tres años desde que alguien lo mejoró ! : D
muru
1

Parece que la primera respuesta ya no funciona en Ubuntu 14.10.

Así es como lo hago allí (ponlo en /etc/rc.local)

su <username> - -c "<command>"
vrodic
fuente
Si necesita un shell de inicio de sesión, el equivalente es sudo -i -u ....
muru