我在 debian/linux 机器上运行一项服务,该机器在启动时运行一个“屏幕”会话,我总是可以附加到该会话。
我想创建一个可以运行此服务的用户名。目前我使用“常规”登录帐户。我想增加一个专用于这个服务的用户名的安全性(类似于 'nobody' 或 'web' 与 apache 一起使用的方式)。
要求:
- 无法在本地或远程登录(因此无需管理密码)
- 获得批准的用户能够访问屏幕会话并与服务交互。
我想该解决方案将创造性地使用 su/sudo 以及如何创建帐户的详细信息。
我在 debian/linux 机器上运行一项服务,该机器在启动时运行一个“屏幕”会话,我总是可以附加到该会话。
我想创建一个可以运行此服务的用户名。目前我使用“常规”登录帐户。我想增加一个专用于这个服务的用户名的安全性(类似于 'nobody' 或 'web' 与 apache 一起使用的方式)。
要求:
我想该解决方案将创造性地使用 su/sudo 以及如何创建帐户的详细信息。
首先,创建
screen
会话运行的帐户(例如称为screenimage
),以及允许使用它的一组用户(例如screenusers
):然后对于每个允许使用它的用户,将它们添加到
screenusers
组中:然后,将批准的用户添加到
/etc/sudoers
:运行visudo
并添加该行ETA:解决这篇文章的其他答案:
--system
创建没有外壳或密码的帐户。这sudoers
条线意味着用户只能screen
以用户身份运行screenimage
。创建用户是最容易的部分。只需使用 adduser 脚本添加一个用户(这是 debian 特定的,但我注意到它在您的标签中),然后为该用户编辑生成的 /etc/passwd 行。将 更改
x
为 a!
这使得密码永远不会匹配为有效。更改/bin/bash
为/bin/false
,如果有人确实以该用户身份登录,他们将不会获得 shell。至于其余的,这实际上取决于您尝试运行的服务或您需要如何与之交互。我觉得可能有比在屏幕会话中运行它更好的方法来解决这个问题。
好的,怎么样(在 /etc/rc.something 中):
并将用户的外壳设置为
/bin/false
.