Mongodb是一个基于networking的软件,用来试用Mongodb。
我已经创build了一些类似的尝试nodejs 。 在nodejs中,我接受用户input,然后对该命令执行eval 。 鉴于nodejs的力量,来自Web控制台的人可以创build文件,删除系统上的文件或执行rm -rf 。
我想知道是否可以将nodejs作为一个名为node的用户来运行。 这个用户节点将不具有任何写入权限,创build任何内容或更新任何内容的权限。 这个用户的唯一访问权限是读访问权限。
这样做还是那么危险呢? 处理这种情况的好策略是什么?
以较less特权的用户身份运行可以提供帮助。 对于额外的偏执狂,你可以在一个最小的chroot jail中运行这个服务,可选地在一个loopback挂载的磁盘映像中来限制磁盘空间的使用 – 如果用户无法访问,用户将无法运行程序或者填充磁盘空间。 把文件和文件系统上需要的文件和空闲空间放在一起。 他们将无法访问其他任何东西。 作为一个额外的好处,你可以使用一个单一的cp命令备份或恢复图像的状态。 另外考虑使用nice和ulimit来控制其他资源的使用。
Hrm,问题是如果他有权访问他拥有的文件,用户可能可以轻松地将权限设置为可编辑的内容。 记住,如果你让用户访问shell命令,你已经打开了一整套的问题。 这通常是一个坏主意。
即使用户不拥有任何文件,只存在运行你的应用程序,你也可以打开自己的东西,如完整的临时目录和邮件假脱机。
有没有办法在受限制的环境中运行V8引擎? 禁止所有的IO? 我会亲自寻找这样的方法。