我在一台debian / linux机器上运行一个服务,在启动时运行一个我可以随时附加的“屏幕”会话。
我想创build一个用户名,我可以运行此服务为。 目前我使用“常规”login帐户。 我希望为这个sevrice增加一个用户名的安全性(类似于'nobody'或'web'和apache一起使用的方式)。
要求:
我想这个解决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 。