首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Docker \ Chroot监狱问题- Node.js是一种托管

Docker \ Chroot监狱问题- Node.js是一种托管
EN

Unix & Linux用户
提问于 2018-04-18 16:18:54
回答 1查看 450关注 0票数 0

好的,我正在使用Docker,我还不熟悉w/ Chroot监狱。

我有Docker映像w/安装了Debian / Node.js。但是我希望每个Debian用户都可以在Docker中运行他们自己的Node.js应用程序w/o根访问。

示例:

  1. 用户: jimmy
  2. 家: /home/jimmy
  3. 外壳: /bin/bash

所以吉米现在可以运行Node.js应用程序了,因为他有/bin/bash。但他也可以修改整个系统(例如,他可以做"rm -R /etc")。我说的对吗?

然后,例如,我可以修改jimmy的shell: /usr/sbin/nologin,并给他只从WEB启动/停止Node.js实例的选项.但是在Node.js中,使用fs模块可以对整个系统进行修改。我说的对吗?

,所以如果我是对的,我有两个选择,

  1. 我想我可以为吉米建个“色罗监狱”。所以/家/吉米会被关进监狱。他可以运行他的Node.js应用程序,他不能修改整个系统。Node.js "fs“将仅限于/home/jimmy。我说的对吗?
  2. 别在意,只要给吉米装一个新的码头集装箱.这是很好的选择,但我认为=新容器=新系统=更多的数据MBs

好的,如果你们中有人说,我需要的是第一个选择。那么,如果吉米将使用端口8080运行Node.js web服务器,而另一个用户将使用相同的端口,那么我如何绑定端口?有了码头,我想在集装箱开始之前我就能处理好了。

EN

回答 1

Unix & Linux用户

发布于 2018-04-18 17:12:03

您似乎对用户登录有一些误解。

使用/bin/bash或直接Nodejs访问,用户只能修改他们有权修改的文件。大多数/etc可能无法由jimmy写,因此它们不应该能够对整个目录进行rm

使用/usr/sbin/nologin是正确的,用户将无法登录到系统。在此场景中,运行用于Nodejs访问的web时,仍然需要确保web不允许访问您不希望访问的文件或有访问权限的用户。

无论选择哪种解决方案,都不能在同一个IP地址和端口上运行多个服务。可以将服务绑定到不同IP地址上的同一个端口,也可以使用不同的端口。解决方案可以是让每个用户在其端口上运行,然后构建一个web服务器作为每个服务的代理。

您谈到使用Docker,所以我不知道您为什么不坚持这样做,尽管我不知道您正在使用的可能的用户限制。它最像一个色度与额外的隔离和网络管理。Docker主要用于运行单个服务,因此每个用户都拥有自己的容器,运行Nodejs实例听起来就像这样一个用例。

如果Docker不是一个选项,我建议您使用chroot,如果您有信心,您可以正确地这样做。否则,听起来您的需求可以满足一个单一的系统,提供多用户登录与适当的权限无处不在。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/438551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档