从 node.js 脚本禁用 sudo/root 权限
disable sudo/root privilege from node.js script
我需要在我的 node.js 应用程序中对端口 80 上的 运行 服务器或 运行 一些其他启动管理内容的 sudo 特权。
但是当我这样做时,我不再想要这个特权,因为那时我将 运行 来自 node_modules.
的一些外部库
那么,如何从 node.js 脚本中禁用我的管理权限?
您需要使用:
process.setgid('somegroup');
process.setuid('someuser');
查看文档:
- https://nodejs.org/api/process.html#process_process_setgid_id
- https://nodejs.org/api/process.html#process_process_setuid_id
有关详细信息,请参阅本文:
其他选项
另一种无需 运行 以 root 身份绑定到低端口的方法是,如果您的系统支持,则可以绑定到低端口 - 使用例如CAP_NET_BIND_SERVICE 在 Linux 上有类似的东西:
sudo setcap 'cap_net_bind_service=+ep' /path/to/your/program
这样您就不必 运行 以 root 用户身份,以后也不必更改为其他用户。
我需要在我的 node.js 应用程序中对端口 80 上的 运行 服务器或 运行 一些其他启动管理内容的 sudo 特权。 但是当我这样做时,我不再想要这个特权,因为那时我将 运行 来自 node_modules.
的一些外部库那么,如何从 node.js 脚本中禁用我的管理权限?
您需要使用:
process.setgid('somegroup');
process.setuid('someuser');
查看文档:
- https://nodejs.org/api/process.html#process_process_setgid_id
- https://nodejs.org/api/process.html#process_process_setuid_id
有关详细信息,请参阅本文:
其他选项
另一种无需 运行 以 root 身份绑定到低端口的方法是,如果您的系统支持,则可以绑定到低端口 - 使用例如CAP_NET_BIND_SERVICE 在 Linux 上有类似的东西:
sudo setcap 'cap_net_bind_service=+ep' /path/to/your/program
这样您就不必 运行 以 root 用户身份,以后也不必更改为其他用户。