如何创build交互式守护进程login?

我在一台debian / linux机器上运行一个服务,在启动时运行一个我可以随时附加的“屏幕”会话。

我想创build一个用户名,我可以运行此服务为。 目前我使用“常规”login帐户。 我希望为这个sevrice增加一个用户名的安全性(类似于'nobody'或'web'和apache一起使用的方式)。

要求:

  • 没有能力login,本地或远程(所以没有密码pipe理)
  • 能够获得批准的用户访问屏幕会话,并与服务进行交互。

我想这个解决scheme将会创造性地使用su / sudo以及如何创build账户的细节。

首先,创buildscreen会话运行的帐户(称为screenimage ),以及一组允许使用它的用户(比如说screenusers ):

 adduser --system --group screenimage addgroup --system screenusers 

然后,允许每个用户使用它,将它们添加到screenusers组:

 adduser USER screenusers 

然后,将已批准的用户添加到/etc/sudoers :运行visudo并添加该行

 %screenusers ALL = (screenimage) /usr/bin/screen 

ETA:为了解决这个问题的其他答案: – 系统创build没有shell或密码的帐户。 sudoers行意味着用户被限制在screen上运行,仅作为screenimage用户。

创build用户是很容易的部分。 只需添加一个adduser脚本的用户(这是debian特定的,但我注意到它在你的标签),然后编辑该用户产生的/ etc / passwd行。 将x更改为! 这使得密码永远不会有效。 将/bin/bash改为/bin/false这样如果有人以这个用户身份login,他们将不会得到shell。

至于其他,这取决于你想要运行什么样的服务,或者你需要如何与之交互。 我觉得在屏幕会话中运行它可能有更好的方法。

好的,如何(在/etc/rc.something中):

 sudo -u user screen -d -m service 

并将用户的 shell设置为/bin/false