سؤال

عندما أحاول ربط المنفذ 80 بمقبس في لغة C، أحصل دائمًا على الخطأ، وهو أنه ليس لدي إذن باستخدام هذا المنفذ.هل هناك طريقة سهلة للحصول على هذا الإذن؟

هل كانت مفيدة؟

المحلول

وعادة فقط الخارق (الجذر) يمكن ربط الموانئ "مميزة" (أي تلك أرقام المنافذ أدناه 1024).

وهذا يعني أن لديك إما لتشغيل البرنامج كما الجذر أو يصبح لديك قابل للتنفيذ "الجذر SUID".

وكل من هذه لها عواقب أمنية لذلك قد ترغب في النظر في استخدام النهج SUID والتخلي عن امتيازات الخارق مرة واحدة أحرز الدعوة مأزق.

نصائح أخرى

وستجد هذا البرنامج التعليمي مفيدة جدا في برمجة الشبكة مع C / C ++.

و، بالمناسبة، <م> ANSI C لديه أي وسيلة للوصول إلى الشبكة. ومن المكتبات OS الموردة (المقبس API BSD، استدار أيضا إلى ويندوز وwinsock) التي توفر هذه القدرة.

وتسمى الموانئ 1024 وتحت موانئ المميز ، ملزم لهذه المنافذ يتطلب إذن مرتفعة.

وتسمى منافذ أعلى من 1024 <م> موانئ Emphemeral . ملزمة لهذه لا تحتاج الى أذونات خاصة.

وأسهل طريقة للوصول إلى الموانئ privilged هي أن يكون المستخدم الجذر.

إذا كنت على نظام مشتركة (مثل جهاز كمبيوتر الجامعة) وليس الجذر ثم ليس هناك "سهلة" طريقة للحصول على هذا الإذن، حسب التصميم.

إنه تمامًا كما قالCharles Bailey ... وأود أن أضيف أن هذا هو السبب وراء استخدام المرء لرؤية عناوين خادم http على 8080 حسب مواصفات المنفذ في عنوان URL كـ http://some.url:8080/

والجذر تقليديا الوحيد يمكن ربط مآخذ إلى الموانئ تحت 1024.

والرد S.Lott قد أثارت ردود فعل سلبية جدا ولكن فكرته هو أبعد من غبي: إذا كان السؤال الأصلي لبرنامج الحقيقي (وليس مهمة المدرسة)، وتطوير ذلك كتطبيق وراء خادم HTTP غالبا ما تكون معقولة خيار. بهذه الطريقة، يمكنك ترك الكثير من التفاصيل ذات المستوى المنخفض لبرنامج جيد وتصحيحه بشكل جيد، وأباتشي.

وليس لدى تطبيق ليكون CGI، يمكن أن يكون وحدة اباتشي. أباتشي، من الإصدار 2، لم يعد مجرد خادم HTTP. وهو الآن منصة لتطوير برامج الشبكة. كتابة وحدة اباتشي قد تكون الإجابة الصحيحة على السؤال الأصلي (انظر أباتشي الوثائق )

والبرامج العادية لا يمكن ربط الموانئ "مميزة" - من هم دون 1024. هذا هو ميزة أمان في معظمها قديمة من أنظمة التشغيل مثل UNIX

والجري كما الخارق، على الرغم من اقترح من قبل العديد من الآخرين هنا، هو حل سيء لهذه المشكلة. إذا كنت تعمل على نظام ديبيان أو أوبونتو، أقترح تثبيت حزمة authbind ، والتي سوف تسمح لك لمنح إذن البرنامج لفتح منافذ مميزة دون الحاجة فعلا لإعطاء البرنامج أية أذونات خاصة أخرى.

إذا كنت تعمل على أي نظام آخر، أقترح تثبيت ديبيان أو أوبونتو، -)

نعم، يمكنك ربط بسهولة إلى المنفذ 80. استخدام أباتشي. إرسال تطبيق ويب. أباتشي يربط منفذ 80 ويعمل تطبيق الويب الخاص بك.

هل تحاول كتابة أباتشي في المرة القادمة؟ إذا كان الأمر كذلك، سوف تحتاج إلى معرفة href="http://www.manpagez.com/man/2/setuid/" rel="nofollow noreferrer"> setuid دعوة API

إذا كنت لا أكتب نسخة جديدة من طراز أباتشي، ومعظم الناس استخدام منفذ غير متميز. 8000 تحظى بشعبية، وذلك هو 8080.

scroll top