我有一个节点应用程序,它是一个worker,在本地机器上执行各种任务,包括许多文件系统操作。该应用程序从单独的控制接收任务指令"应用程序通过HTTPS。
该应用程序以非特权用户身份运行,但有时需要以root权限执行某些操作。
这些操作包括:
这些操作涉及使用child_process.exec()
/ .spawn()
运行命令和使用fs
模块执行文件系统读取操作。
显然,出于安全原因,以root身份运行整个应用程序并不明智。但它有时需要能够升级"它的root权限。
这样做的最佳方式是什么?
我已经在同一台机器上以root用户身份运行了一个单独的节点应用程序,主要的工作者应用程序可以通过HTTP进行通信并向其发送某些需要以root身份执行的命令。但是,这当然会在根应用程序上打开一个新的攻击面。当根操作从文件系统读取大文件(10-100 GB)时,这些文件也必须通过HTTP流回主工作者应用程序。
我想有一种更实用,更安全的方法来实现这一目标,可能使用sudoers
。我无法想象我是第一个遇到这个问题的人,但我在网上找不到任何解决方案。
有什么想法吗?