如何在启动时以特定用户身份运行应用程序?


17

有没有一种方法可以在启动期间以特定用户帐户启动应用程序?

例如,我想以a_small_app该用户帐户bob(在组中bobsgroup)运行。我要添加一些东西/etc/init.d吗?

注意:我不希望应用程序在用户登录后启动而是在计算机启动时启动。


您要在登录窗口中登录之前启动应用程序吗?
Martin Owens -doctormo- 2011年

@Martin:嗯,这并不重要……我在这里以Apache为例。何时开始?
内森·奥斯曼

Answers:


13

启动系统不可知方法。您可以使用此在/etc/rc.local,一个/etc/init.d/...剧本,一个暴发户配置文件,并可能是一个systemd的配置了。

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

该命令将以root用户身份运行,并sudo下拉至“ oli”用户。显然,请根据您的目的更改用户和命令。

我应该补充一点,至少有十几种方法可以做到这一点……但是以我的经验,它们实际上在很大程度上是相同的。这是一个使用其setuid节的暴发户示例:

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

setuid oli
respawn

exec /full/path/to/application

我建议举个例子
waltinator 2011年

我知道了sudo: unknown group: 1004
ThorSummoner 2014年

另外,:是时候更新关于暴发户的行了。
muru

@muru我会的。但是不需要分组。sudo将使用指定用户的默认组。
奥利(Oli)

最好将其编辑掉。自有人改进以来,该命令已经错误了三年!:D
muru 2015年

1

似乎第一个答案不再适用于Ubuntu 14.10。

这就是我在那里做的(将其放在/etc/rc.local中)

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

如果您需要登录外壳,则等效为sudo -i -u ...
muru
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.