यह मूल रूप से माताओं से जवाब के लिए एक अतिरिक्त है, लेकिन चूंकि मैं एक कोड उदाहरण जोड़ना चाहता हूं, इसलिए मैं सुरक्षा समस्याओं को रोकने के लिए अतिरिक्त जानकारी के साथ एक और उत्तर लिखता हूं।
आमतौर पर वेब सर्वर रूट के रूप में शुरू होते हैं, क्योंकि 1024 से नीचे बंदरगाहों पर बांधने के लिए इसकी आवश्यकता होती है, लेकिन फिर वे उस उपयोगकर्ता को बदलते हैं जो वे किसी विशेषाधिकार प्राप्त उपयोगकर्ता के अधीन नहीं जाते हैं।
आप process.setuid("username")
का उपयोग करके node.js के साथ ऐसा कर सकते हैं।
निम्न उदाहरण सर्वर शुरू होता है और उसके बाद उपयोगकर्ता "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
यदि आप उदाहरण के लिए उबंटू का उपयोग कर रहे हैं (या अन्य यूनिक्स सिस्टम) तो आप 'sudo node sample.js' आज़मा सकते हैं। यह आम तौर पर चाल है। – alessioalex