Это в основном дополнение к ответу от maerics, но поскольку я хочу добавить пример кода, я пишу еще один ответ с дополнительной информацией, как предотвратить проблемы безопасности.
Обычно веб-серверы запускаются с правами администратора, поскольку это необходимо для привязки к портам ниже 1024, но затем они меняют пользователя, которого они запускают, на пользователя с привилегиями.
Вы можете сделать это с помощью node.js, используя process.setuid("username")
.
Следующий пример запускает сервер, а затем падение корневых прав доступа для пользователя «WWW-данных» после того, как она привязала себя к порту 80, когда начался как корень:
function StartServer() {
console.log("Starting server...");
// Initalizations such as reading the config file, etc.
server = http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
try {
server.listen(80, "0.0.0.0", function(){
process.setuid("www-data");
});
}
catch(err) {
console.error("Error: [%s] Call: [%s]", err.message, err.syscall);
process.exit(1);
}
}
Каков номер порта, на котором работал сервер? Возможно, у вас нет разрешения на привязку к порту 80. – Finslicer
Я пробовал 8080, и это работает как шарм. – limlim
Если вы используете Ubuntu, например (или другую систему Unix), вы можете попробовать 'sudo node sample.js'. Это обычно делает трюк. – alessioalex