如何以无法删除、更新或创建文件的用户身份运行服务

如何以无法删除、更新或创建文件的用户身份运行服务

Mongodb是一个基于Web的控制台来尝试一下 Mongodb。

我已经创建了一些类似的东西来尝试nodejs。在 nodejs 中,我接受用户输入,然后执行eval该命令。鉴于 nodejs 的强大功能,有人可以从 Web 控制台创建文件、删除系统上的文件或执行rm -rf

我想知道是否可以nodejs以名为 的用户身份运行node。此用户节点将无权写入任何内容、创建任何内容或更新任何内容。此用户的唯一访问权限是读取访问权限。

这样做可行吗?还是风险太大?有什么好的策略可以处理这种情况?

答案1

以较低权限用户身份运行可能会有所帮助。如果要提高警惕,您可以在最低权限下运行该服务chroot 监狱,可选地在回送挂载的磁盘映像限制磁盘空间使用量 - 如果无法访问,用户就无法运行程序或填充磁盘空间。将他们所需的文件和可用空间准确且仅放在文件系统上。他们将无法访问其他任何内容。作为额外的好处,您只需使用单个 cp 命令即可备份或恢复映像的状态。还可以考虑使用 nice 和 ulimit 来控制其他资源的使用。

答案2

嗯,问题是如果他有权访问他拥有的文件,用户可能也可以轻松地将权限设置为可编辑的内容。请记住,如果您授予用户访问 shell 命令的权限,那么您已经将自己置于一系列问题之中。这通常是一个坏主意。

即使用户不拥有任何文件而只是为了运行您的应用程序,您也会面临诸如完整临时目录和邮件假脱机之类的问题。

有没有办法在受限环境中运行 V8 引擎?禁止所有 IO?我个人会寻找这样的方法。

相关内容