यदि आप अपने सर्वर को पोर्ट 80 पर बांधना चाहते हैं तो आपको रूट के रूप में ऐसा करना होगा और बाद में विशेषाधिकारों को छोड़ना होगा।
bind(sockfd, addr, addrlen);
/* process is running as root, drop privileges after bind*/
if (setgid(groupid) != 0)
errx(1, "setgid: Unable to drop group privileges: %s", strerror(errno));
if (setuid(userid) != 0)
errx(1, "setuid: Unable to drop user privileges: %S", strerror(errno));
मैं कैसे पोर्ट 80 करने के लिए बाध्य कर सकते हैं यह इतना है कि सुरक्षा के साथ समझौता नहीं किया जा रहा है (बफर अतिप्रवाह आदि)
जड़ करता है नहीं नहीं चल जड़ न रहने पर भी अपने सिस्टम अधिक सुरक्षित है यह सिर्फ एक और परत शोषण के लिए जोड़ता है। कैसे नहीं रूट के रूप में चलाने के लिए के बारे में सोच के बजाय, कृपया सुनिश्चित करें कि आप strcpy()
, sprintf()
, आदि जैसे किसी भी ज्ञात-असुरक्षित कार्यों का उपयोग नहीं है, लेकिन बजाय bind()
बुला लिए strncpy()
, snprintf()
, आदि
+1, हालांकि वे किसी भी अन्य यूनिक्स के लिए पोर्टेबल नहीं हैं। – dwalter
अधिकांश लोग वैसे भी लिनक्स का उपयोग करते हैं। और मुझे लगता है * बीएसडी में कुछ समान है। – ThiefMaster