Como executar um aplicativo na inicialização como um determinado usuário?

17

Existe uma maneira de iniciar um aplicativo durante a inicialização em uma determinada conta de usuário?

Por exemplo, eu gostaria de ter a_small_appexecutado sob a conta de usuário bob(que está no grupo bobsgroup). Eu adiciono algo a /etc/init.d?

Nota: não quero que o aplicativo inicie após o login de um usuário, mas quando o computador iniciar.

Nathan Osman
fonte
Deseja que o aplicativo inicie antes do login na janela de login?
precisa saber é o seguinte
@ Martin: Bem, isso realmente não importa ... Estou usando o Apache como exemplo aqui. Quando começa?
Nathan Osman

Respostas:

13

Um método independente de sistema de inicialização. Você pode usar isso em /etc/rc.local, um /etc/init.d/...script, um arquivo de configuração do Upstart e provavelmente também uma configuração do systemd.

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

Este comando será executado como usuário root e sudoserá suspenso no usuário "oli". Obviamente, altere o usuário e o comando para seus propósitos.

Devo acrescentar que existem pelo menos uma dúzia de maneiras de fazer exatamente isso ... Mas, na minha experiência, todas são em grande parte idênticas. Aqui está um exemplo inicial usando sua setuidestrofe:

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

setuid oli
respawn

exec /full/path/to/application
Oli
fonte
Sugiro que o exemplo
waltinator 28/09/11
Eu recebosudo: unknown group: 1004
ThorSummoner 4/04
Além disso, picar : Hora de atualizar a linha sobre o iniciante.
Muru
@muru eu vou. Mas o grupo não é obrigatório. O sudo usará o grupo padrão do usuário especificado .
Oli
Melhor editá-lo, então. Esse comando está errado há três anos desde que alguém o melhorou ! : D
muru
1

Parece que a primeira resposta não funciona mais no Ubuntu 14.10.

É assim que eu faço lá (coloque em /etc/rc.local)

su <username> - -c "<command>"
vrodic
fonte
Se você precisar de um shell de login, o equivalente é sudo -i -u ....
Muru