যেহেতু 80/443 পোর্টটি সিস্টেম বন্দর, এর অর্থ তারা কেবল সুবিধাভোগী ব্যবহারকারীরা ব্যবহার করতে পারবেন
আমি মনে করি আপনার এটি ভুল আছে। যে কেউ এই বন্দর ব্যবহার করতে পারেন। তাদের কাছে বাধ্যতামূলক একটি সুবিধাজনক ক্রিয়াকলাপ।
এখানে যুক্তিটি হ'ল কিছু ব্যবহারকারীর জো দূষিত ওয়েব সার্ভার লিখতে এবং তারপরে এমন কিছু হোস্ট তৈরি করা উচিত নয় যার উপর তার কোনও প্রশাসনিক অধিকার নেই। অবশ্যই এটি একটি অত্যন্ত দুর্বল মডেল যা জোকে নিজের কম্পিউটারটি নেটওয়ার্কে লাগানো থেকে বিরত রাখার কিছুই নেই, এবং যে কোনও মেশিনে তার শারীরিক অ্যাক্সেস রয়েছে তার প্রশাসনিক অধিকার থাকতে পারে।
নেটকাট দিয়ে একটি বিক্ষোভ করব।
একটি সাধারণ ব্যবহারকারী হিসাবে, আমি 80 বন্দরটি আবদ্ধ করতে পারি না:
$ nc -l -p 80
Can't grab 0.0.0.0:80 with bind : Permission denied
আমি 8080 বন্দরে বাঁধতে পারি:
$ nc -l -p 8080
অন্যদিকে, অন্য টার্মিনালে আমি ৮০ বন্দরটিতে সংযোগ করতে এবং কিছু ডেটা প্রেরণ করতে পারি এবং এটি সবে শুরু করা সার্ভারের শেষে দেখতে পাওয়া যায়:
$ nc 127.0.0.1 8080 <<<"Hello world"
আমি যদি ৮০ বন্দরটিতে আবদ্ধ হতে চাই তবে আমার মূল হতে হবে:
$ sudo nc -l -p 80
বা আমি বাইনারিটিতে CAP_NET_BIND_SERVICE
ক্ষমতাটি অর্পণ করতে পারি nc
:
$ cp `which nc` .
$ sudo setcap 'cap_net_bind_service=+ep' ./nc
$ ./nc -l -p 80
আরেকটি বিকল্প হ'ল সার্ভার প্রোগ্রামটি লিখতে হবে যা বলা হওয়ার পরে এটি listen()
রুট সুবিধাগুলি বাদ দেয় । এটি একটি দুর্দান্ত সাধারণ সমাধান এবং আপনি এটি বেশিরভাগ ডেমন দিয়ে দেখতে পাবেন। উদাহরণস্বরূপ, অ্যাপাচি রুট হিসাবে আরম্ভ থেকে শুরু হয়, এবং তারপরে রুট সুবিধাগুলি ছাড়বে এবং ব্যবহারকারী www-data
বা পোর্ট 80 এর সাথে আবদ্ধ হওয়ার পরে অনুরূপ কিছু হয়ে যায় /etc/init.d/apache start
root রুট হিসাবে চলার চেষ্টা করুন এবং অ্যাপাচি সম্ভবত আরম্ভ করতে ব্যর্থ হবে।