web-dev-qa-db-fra.com

Comment exécuter une application au démarrage sous un certain utilisateur?

Existe-t-il un moyen de lancer une application au démarrage sous un compte utilisateur donné?

Par exemple, j'aimerais que a_small_app soit exécuté sous le compte d'utilisateur bob (qui appartient au groupe bobsgroup). Est-ce que j'ajoute quelque chose à /etc/init.d?

Remarque: je ne veux pas que l'application démarre après qu'un utilisateur se soit connecté, mais plutôt au démarrage de l'ordinateur.

17
Nathan Osman

Une méthode agnostique du système de démarrage. Vous pouvez utiliser cela dans /etc/rc.local, un script /etc/init.d/..., un fichier de configuration Upstart et probablement aussi une configuration systemd.

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

Cette commande s'exécutera en tant qu'utilisateur root et Sudo sera redirigé vers l'utilisateur "oli". Évidemment, changez l'utilisateur et la commande pour vos besoins.

Je devrais ajouter qu'il existe au moins une douzaine de façons de faire cela ... Mais d'après mon expérience, elles ont toutes un effet identique. Voici un exemple récent utilisant sa strophe setuid:

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

setuid oli
respawn

exec /full/path/to/application
13
Oli

Il semble que la première réponse ne fonctionne plus dans Ubuntu 14.10.

Voici comment je le fais ici (mettez-le dans /etc/rc.local)

su <username> - -c "<command>"
1
vrodic