มันเป็นพฤติกรรมมาตรฐานที่ผู้ใช้ที่ไม่มีสิทธิพิเศษจะไม่ได้รับอนุญาตให้ผูกกับพอร์ตที่มีสิทธิพิเศษ (หมายเลขพอร์ตต่ำกว่า 1024) ดังนั้นแอปพลิเคชันที่ต้องการผูกกับพอร์ต 80 ตัวอย่างเช่นจะต้องเรียกใช้สิทธิ์พิเศษ (โดยปกติหมายถึงเรียกใช้เป็นรูท) เพื่อเชื่อมโยงกับพอร์ตนี้
วิธีการทั่วไปคือการเรียกใช้กระบวนการ "listener" ขนาดเล็กที่มีผู้ใช้ที่ได้รับสิทธิพิเศษซึ่งยอมรับการเชื่อมต่อจากนั้นจึงวางกระบวนการที่ไม่มีสิทธิพิเศษเพื่อจัดการคำขอ การยกเลิกสิทธิพิเศษสำหรับการดำเนินการตามคำขอจะกระทำเพื่อความปลอดภัย หากใครบางคนสามารถใช้ประโยชน์จากกระบวนการที่จัดการกับคำขอนั้นมักจะช่วยให้ผู้บุกรุกดำเนินการคำสั่งโดยใช้สิทธิ์เช่นเดียวกับกระบวนการประมวลผล ดังนั้นมันจะไม่ดีในการจัดการการร้องขอทั้งหมดโดยใช้กระบวนการพิเศษ
อย่างไรก็ตามสำหรับหลาย ๆ แอปพลิเคชั่นมันเป็นเรื่องธรรมดาในปัจจุบันที่จะทำงานแบบไม่ใช้รูท แต่กระบวนการดังกล่าวแน่นอนไม่สามารถผูกกับพอร์ตที่มีสิทธิ์แล้วในการกำหนดค่ามาตรฐาน ดังนั้นเซิร์ฟเวอร์เช่น Tomcat หรือ JBoss เคยผูกเข้ากับพอร์ตสูงเช่น 8080 แทนดังนั้นพวกเขาจึงไม่ต้องการผู้ฟังที่มีสิทธิพิเศษ
แน่นอนถ้าคุณเปิดเผยกระบวนการดังกล่าวกับอินเทอร์เน็ตคุณอาจจะให้การเข้าถึงบนพอร์ต 80 เนื่องจากเบราว์เซอร์แต่ละตัวจะพยายามเชื่อมต่อกับพอร์ต 80 ก่อนเมื่อใช้โปรโตคอล HTTP การแก้ไขปัญหาทั่วไปเพื่อให้สิ่งนี้คือการใช้ไฟร์วอลล์หรือตัวแปลพอร์ตระหว่างแอปพลิเคชันและอินเทอร์เน็ตสาธารณะ ดังนั้นการร้องขอจะเข้าสู่ไฟร์วอลล์ที่ร้องขอพอร์ต 80 แต่ไฟร์วอลล์จะส่งต่อการร้องขอไปยังโฮสต์ภายในบางแห่งที่พอร์ต 8080 ด้วยวิธีนี้เว็บเซิร์ฟเวอร์จริงสามารถทำงานบนพอร์ตสูงได้ในขณะที่มีการเปิดเผยต่อสาธารณะในพอร์ต 80
- (internet request) ----> (port 80)[Firewall] ------> (port 8080)[Webserver]
บางครั้งการเปลี่ยนเส้นทางนี้ทำได้โดยใช้iptables
กฎ NAT:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
สิ่งนี้ช่วยให้เรียกใช้แอปพลิเคชั่นที่ไม่มีสิทธิพิเศษบนพอร์ต 8080 ในขณะที่คำร้องขอขาเข้าทั้งหมดสำหรับพอร์ต 80 ถูกเปลี่ยนเส้นทางไปยังพอร์ต 8080
อย่างไรก็ตามการใช้เมล็ด Linux ที่ทันสมัยมีความเป็นไปได้อื่น: ใช้ความสามารถ
setcap CAP_NET_BIND_SERVICE=+ep /some/webserver/binary
สิ่งนี้จะอนุญาตให้binary
ผูกกับพอร์ตที่มีสิทธิพิเศษแม้เมื่อเริ่มต้นจากผู้ใช้ที่ไม่ใช่รูท ดูman capabilities
รายละเอียดเพิ่มเติมได้ที่