我对一些互联网文章深信不疑,使用setuid / setgid切换到较低特权用户可能很重要。由于我正在开发一个网络应用程序,我决定去www-data
。
所以我使用userid
NPM模块来确定www-data的用户和组ID,然后更改为它。但是,当我这样做 - 并且完全无关紧要时 - 我得到以下内容(在此示例中,安全处理程序在代码的最底部执行):
2014-09-04T23:07:05.812Z - info: BIRD3 Security -> Changed to www-data:www-data (33:33)
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EACCES
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1023:19)
at listen (net.js:1064:10)
at net.js:1146:9
at dns.js:72:18
at process._tickCallback (node.js:419:13)
at Function.Module.runMain (module.js:499:11)
at startup (node.js:119:16)
at node.js:906:3
正如您所看到的,只要我更改了我的权限级别,它就会降低端口80的可访问性。
我是否有办法实现安全性,但在不使用something like this?
的情况下继续使用端口80答案 0 :(得分:1)
您不需要第三方模块来执行此操作。 process.setgid()
和process.setuid()
都接受ID或组名/用户名。
另外,请确保在 process.setgid()
之前删除 AFTER 在端口80上聆听的权限,并确认之前致电process.setuid()
。
示例:
var net = require('net');
var srv = net.createServer(function(s) {
});
srv.listen(24, function() {
console.log('listening');
});
process.setgid('www-data');
process.setuid('www-data');
答案 1 :(得分:0)
在回调响应中连接后,setgid()和setuid()是否应该运行?
srv.listen(24, function() {
console.log('listening');
process.setgid('www-data');
process.setuid('www-data');
});