【问题标题】:Create a child process which cannot access any files a level above with Node.JS?创建一个无法使用 Node.JS 访问上一级文件的子进程?
【发布时间】:2015-10-16 16:18:58
【问题描述】:

我正在尝试开发一个 Node.JS 应用程序,它允许用户创建自己的 Node 应用程序,这些应用程序作为子进程运行到主 Node.JS 应用程序。我遇到的问题是我不知道如何只授予相应的子进程权限来访问和执行它自己的文件夹中的文件,例如。我不希望子进程能够看到其他用户的文件。

我认为我可以在它自己的文件夹中运行一个子进程,并且只允许从随附的文件和主 Node.JS 应用程序(父级)访问这个文件夹。

我不知道我如何能够做到这一点,但我认为我可以通过使用 chmod 来做到这一点,但我不知道它是如何工作的,我也不确定我怎么能只允许从父进程和封闭文件访问,而不是从其他任何地方访问?

我附上了一张图表,说明我希望数据流如何发生,以防我没有正确解释:

非常感谢!

【问题讨论】:

    标签: javascript node.js permissions file-management


    【解决方案1】:

    您在问题中提到了chmod,所以我假设您使用的是类似 *nix 的操作系统。

    您可以为此使用chroot jail。有一个 npm 模块,chroot,可以提供帮助。这是他们文档中的一个示例:

    在放弃特权之前将 TCP 服务器绑定到特权端口。

    var net = require('net');
    var chroot = require('chroot');
    
    var server = net.createServer();
    server.listen(80, function(err) {
      if (err) { throw err; }
    
      try {
        chroot('/var/empty', 'nobody');
        console.log('changed root to "/var/empty" and user to "nobody"');
      } catch(err) {
        console.error('changing root or user failed', err);
        process.exit(1);
      }
    });
    

    第一个参数是应该被子进程视为“根”的位置。

    【讨论】:

    • 文档中的说明:该过程必须以超级用户身份启动
    猜你喜欢
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2015-08-22
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多