[英]Nodejs: Listen on port 80 after using setuid/setgid
我只是被一些互聯網文章深信,使用setuid / setgid切換到特權較低的用戶可能很重要。 由於我正在開發Web應用程序,因此決定選擇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的可訪問性。
您不需要第三方模塊即可執行此操作。 process.setgid()
和process.setuid()
都接受ID或組名/用戶名。
還要確保在偵聽端口80 之后放棄特權,並在process.setgid()
之前調用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');
setgid()和setuid()是否應該在回調響應內連接后運行?
srv.listen(24, function() {
console.log('listening');
process.setgid('www-data');
process.setuid('www-data');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.