.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.0102 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "INNBIND 8" .TH INNBIND 8 2022-07-10 "INN 2.7.4" "InterNetNews Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" innbind \- اتصال سوکت‌های ممتاز برای INN .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" \&\fBinnbind\fR [\fB\-p\fR] \fIfd\fR,\fIfamily\fR,\fIaddress\fR,\fIport\fR [...] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" برنامه کمکی \&\fBinnbind\fR برای اجرای مستقیم در نظر گرفته نشده است. در عوض، \&\fBinnd\fR و \&\fBnnrpd\fR از آن به‌صورت داخلی برای اتصال به درگاه‌هایی که نیاز به دسترسی‌های ریشه (root) دارند، استفاده می‌کنند. .PP این برنامه باید به‌صورت setuid root نصب شود تا \&\fBinnd\fR یا \&\fBnnrpd\fR بتوانند به درگاه‌های زیر ۱۰۲۴ متصل شوند. تنها عملکردهایی که این برنامه مایل به انجام آن‌هاست، اتصال یک توصیف‌گر فایل باز به نشانی و درگاه مشخص‌شده، یا ایجاد یک سوکت جدید، متصل کردن آن، و بازگرداندن سوکت متصل‌شده به فراخواننده است. این برنامه فقط توسط کاربر news (همان‌طور که در زمان configure تعیین شده) قابل اجرا است و فقط به درگاه‌های ۱۱۹، ۴۳۳، ۵۶۳، یک درگاه اضافی که با آرگومان \&\fB\-\-with\-innd\-port\fR در configure مشخص شده است، یا درگاه‌های شماره ۱۰۲۴ و بالاتر متصل خواهد شد. .PP هر آرگومان ورودی \&\fBinnbind\fR باید فهرستی از چهار جزء جداشده با کاما باشد. جزء اول شماره توصیف‌گر فایل است که باید متصل شود، جزء دوم خانواده عددی سوکت (AF_INET یا AF_INET6) است، جزء سوم نشانی محلی برای اتصال است (در قالب چهارگانه با نقطه برای IPv4 و در قالب نشانی جداشده با دونقطه برای IPv6)، و جزء چهارم شماره درگاه است. برای اتصال به تمامی نشانی‌ها با IPv4، از \&\f(CW\*(C`0.0.0.0\*(C'\fR به‌عنوان نشانی استفاده کنید. برای اتصال به تمامی نشانی‌ها با IPv6، از \&\f(CW\*(C`::\*(C'\fR به‌عنوان نشانی استفاده کنید. .PP می‌توان چندین آرگومان را مشخص کرد تا به \&\fBinnbind\fR دستور دهد چندین سوکت را به‌طور هم‌زمان متصل کند. هرگونه خطایی (به‌جز عدم اجازه دسترسی \-\- پایین‌تر را ببینید) که رخ دهد، باعث متوقف شدن \&\fBinnbind\fR می‌شود، و پیام‌های خطا به syslog و خروجی استاندارد خطا ارسال خواهند شد. .PP به‌طور پیش‌فرض، \&\fBinnbind\fR صرفاً تلاش می‌کند توصیف‌گر فایل از قبل باز را که از فراخواننده خود به ارث برده متصل کند. به ازای هر توصیف‌گر فایل با موفقیت متصل‌شده (به ترتیبی که در خط فرمان داده شده است)، \&\fBinnbind\fR رشته \&\f(CW\*(C`ok\*(C'\fR و یک خط جدید را در خروجی استاندارد خود چاپ می‌کند. .PP با این حال در برخی سیستم‌ها (ظاهراً فقط سیستم‌های مبتنی بر STREAMS)، حتی یک برنامه setuid root نمی‌تواند سوکتی را که توسط فرآیندی بدون دسترسی ایجاد شده است، به یک درگاه ممتاز متصل کند. اگر \&\fBinnbind\fR هنگام تلاش برای اتصال سوکت با خطای عدم اجازه دسترسی مواجه شود، رشته \&\f(CW\*(C`no\*(C'\fR و یک خط جدید را در خروجی استاندارد خود چاپ می‌کند. سپس یک سوکت جدید می‌سازد، آن را طبق مشخصات متصل می‌کند، و سپس سعی می‌کند با استفاده از ioctl متعلق به STREAMS با نام I_SENDFD آن سوکت را به فراخواننده بازگرداند. فراخواننده باید آن توصیف‌گر فایل را با I_RECVFD دریافت کرده و به جای توصیف‌گری که خودش ساخته بود، از آن استفاده کند. .PP توجه داشته باشید که انتقال توصیف‌گر فایل فقط در سیستم‌های مبتنی بر STREAMS پشتیبانی می‌شود، چرا که از طریق ioctl بر روی لوله (pipe) انجام می‌گیرد. با این حال تصور می‌شود آن سیستم‌ها دقیقاً همان سیستم‌هایی هستند که نمی‌توانند توصیف‌گر فایل به ارث رسیده را به سادگی متصل کنند. اگر نادرست بودن این فرض ثابت شود، روش سنتی BSD برای انتقال توصیف‌گر فایل از طریق سوکت دامنه یونیکس باید اضافه شود. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" .IP \fB\-p\fR 4 .IX Item "-p" اگر به‌عنوان نخستین آرگومان خط فرمان داده شود، هیچ تلاشی برای اتصال توصیف‌گر فایل به ارث رسیده انجام نمی‌شود و \&\fBinnbind\fR تنها برای ایجاد یک توصیف‌گر فایل جدید و بازگرداندن آن از طریق خروجی استاندارد تلاش خواهد کرد. این گزینه در درجه اول برای آزمایش مفید است. .SH "امنیت (SECURITY)" .IX Header "SECURITY" از آن‌جا که \&\fBinnbind\fR معمولاً به‌صورت setuid root نصب می‌شود، امنیت برای آن مسئله‌ای حتی حساس‌تر از سایر بخش‌های INN است. این برنامه نسبتاً کوتاه است و چنانچه زبان C را می‌دانید، تشویق می‌شوید که خودتان آن را بازبینی کنید تا مطمئن شوید فقط همان کاری را انجام می‌دهد که باید انجام دهد. تنها توابع کتابخانه‌ای INN که استفاده می‌کند شامل توابع vector، توابع message برای گزارش خطا، و xstrdup است. .PP درگاه‌هایی که متصل خواهند شد محدود شده‌اند تا از حملات احتمالی که از طریق قابلیت اتصال به درگاه‌های با شماره پایین امکان‌پذیر می‌شوند (مانند آسیب‌پذیری‌های خانواده دستورات \&\fBrsh\fR(1) در برخی سیستم‌ها) جلوگیری شود. اگر \&\fBinnbind\fR به‌صورت setuid root نصب شده باشد، فقط توسط کاربر news قابل اجراست تا از توانایی سایر کاربران سیستم برای اتصال حتی به همان تعداد معدود درگاه‌های ممتاز مجاز جلوگیری کند. .PP دستور \&\fBinnbind\fR از هیچ فایل پیکربندی خارجی استفاده نمی‌کند؛ تنها فایل‌هایی که ممکن است باز کند از طریق سرویس سیستمی \&\fBgetpwnam\fR(3) برای به‌دست آوردن UID کاربر news است. تنها ورودی کاربری که می‌پذیرد، آرگومان‌های خط فرمان آن است. .SH "تشخیص خطا (DIAGNOSTICS)" .IX Header "DIAGNOSTICS" دستور \&\fBinnbind\fR ممکن است پیام‌های زیر را در syslog ثبت کرده و آن‌ها را در خروجی استاندارد خطا چاپ کند. .IP "cannot create socket for %s: %s" 4 .IX Item "cannot create socket for %s: %s" (مهلک) \&\fBinnbind\fR به تلاش برای ساخت یک سوکت جدید جهت اتصال برای آرگومان ارائه‌شده متوسل شد، اما ایجاد سوکت شکست خورد. .IP "cannot bind socket for %s: %s" 4 .IX Item "cannot bind socket for %s: %s" (مهلک) فراخوانی bind برای سوکت مربوط به آرگومان ارائه‌شده با خطای سیستمی شکست خورد. اگر خطا نشان‌دهنده عدم اجازه دسترسی (permission denied) باشد، مطمئن شوید که \&\fBinnbind\fR به‌صورت setuid root تنظیم شده است. این خطا همچنین می‌تواند ناشی از تلاش برای استفاده از IPv6 روی سیستمی باشد که هسته آن از IPv6 پشتیبانی نمی‌کند. .IP "cannot bind to restricted port %hu in %s" 4 .IX Item "cannot bind to restricted port %hu in %s" (مهلک) بخش شماره درگاه در آرگومان خط فرمان ارائه‌شده، مربوط به درگاهی کمتر از ۱۰۲۴ است که ۱۱۹، ۴۳۳، ۵۶۳ یا درگاه داده‌شده به \&\fB\-\-with\-innd\-port\fR در زمان configure نیست. سایر درگاه‌ها به دلایل امنیتی مجاز نیستند. .IP "cannot get socket options for file descriptor %d: %s" 4 .IX Item "cannot get socket options for file descriptor %d: %s" (مهلک) \&\fBinnbind\fR نتوانست گزینه‌های سوکت را برای آن توصیف‌گر فایل دریافت کند. محتمل‌ترین دلیل این خطا ارسال شماره توصیف‌گر فایل اشتباه به \&\fBinnbind\fR است (توصیف‌گر فایلی که باز نیست، یا به جای یک سوکت شبکه، به یک فایل معمولی مربوط می‌شود). .IP "cannot get UID for %s" 4 .IX Item "cannot get UID for %s" (مهلک) \&\fBinnbind\fR نتوانست UID کاربر news را که هنگام configure مشخص شده بود (و به‌طور پیش‌فرض \&\f(CW\*(C`news\*(C'\fR است) دریافت کند. این حالت معمولاً به این معنی است که کاربر در فایل \&\fIpasswd\fR سیستم وجود ندارد. .IP "cannot mark socket reusable for %s: %s" 4 .IX Item "cannot mark socket reusable for %s: %s" (مهلک) \&\fBinnbind\fR یک سوکت جدید برای آرگومان ارائه‌شده ایجاد کرد اما نتوانست نشانی اتصال آن را به‌عنوان قابل استفاده مجدد علامت‌گذاری کند (گزینه سوکت SO_REUSEADDR). .IP "cannot pass file descriptor: %s" 4 .IX Item "cannot pass file descriptor: %s" (مهلک) \&\fBinnbind\fR یک توصیف‌گر فایل جدید ایجاد و متصل کرد، اما نتوانست آن را با استفاده از ioctl متعلق به STREAMS با نام I_SENDFD، از طریق خروجی استاندارد خود به فراخواننده بازگرداند. .IP "invalid file descriptor %d: not SOCK_STREAM" 4 .IX Item "invalid file descriptor %d: not SOCK_STREAM" (مهلک) توصیف‌گر فایل ارائه‌شده یک سوکت SOCK_STREAM نیست. \&\fBinnbind\fR فقط می‌تواند سوکت‌های SOCK_STREAM را متصل کند. .IP "invalid IPv4 address %s in %s" 4 .IX Item "invalid IPv4 address %s in %s" (مهلک) نشانی IPv4 مشخص‌شده در گزینه خط فرمان ارائه‌شده نتوانست توسط \&\fBinet_aton\fR(3) تجزیه شود. نشانی‌های IPv4 باید در قالب استاندارد چهارگانه با نقطه (10.2.3.4) مشخص شوند. .IP "invalid IPv6 address %s in %s" 4 .IX Item "invalid IPv6 address %s in %s" (مهلک) نشانی IPv6 مشخص‌شده در گزینه خط فرمان ارائه‌شده نتوانست توسط \&\fBinet_pton\fR(3) تجزیه شود. نشانی‌های IPv6 باید در قالب RFC\ 4291 (مانند 1080:0:0:0:8:800:200C:417A یا 1080::8:800:200C:417A) مشخص شوند. .IP "invalid command-line argument %s" 4 .IX Item "invalid command-line argument %s" (مهلک) آرگومان خط فرمان مشخص‌شده قابل تجزیه نبود یا در قالب صحیحی قرار نداشت. .IP "invalid file descriptor %s in %s" 4 .IX Item "invalid file descriptor %s in %s" (مهلک) بخش توصیف‌گر فایل در آرگومان خط فرمان ارائه‌شده، یک عدد صحیح غیرمنفی نیست. .IP "invalid port number %s in %s" 4 .IX Item "invalid port number %s in %s" (مهلک) بخش شماره درگاه در آرگومان خط فرمان ارائه‌شده، یک عدد صحیح غیرمنفی نیست. .IP "invalid protocol family %s in %s" 4 .IX Item "invalid protocol family %s in %s" (مهلک) بخش خانواده پروتکل در آرگومان خط فرمان ارائه‌شده، یک عدد صحیح غیرمنفی نیست. این مقدار در سیستمی که \&\fBinnbind\fR روی آن اجرا می‌شود باید برابر با AF_INET یا AF_INET6 باشد. .IP "must be run by user %s (%lu), not %lu" 4 .IX Item "must be run by user %s (%lu), not %lu" (مهلک) در حالت setuid root، به دلایل امنیتی \&\fBinnbind\fR تنها توسط کاربر news همان‌طور که در زمان configure تعیین شده (به‌طور پیش‌فرض \&\f(CW\*(C`news\*(C'\fR) قابل اجرا است. .IP "no addresses specified" 4 .IX Item "no addresses specified" (مهلک) هیچ آرگومانی در خط فرمان داده نشده است (به‌جز شاید \&\fB\-p\fR). .IP "port may not be zero in %s" 4 .IX Item "port may not be zero in %s" (مهلک) بخش شماره درگاه در آرگومان خط فرمان ارائه‌شده، صفر بوده است. .IP "unknown protocol family %s in %s" 4 .IX Item "unknown protocol family %s in %s" (مهلک) بخش شماره پروتکل در آرگومان خط فرمان ارائه‌شده، نه AF_INET و نه AF_INET6 است. .SH "مثال‌ها (EXAMPLES)" .IX Header "EXAMPLES" همان‌طور که در بالا ذکر شد، \&\fBinnbind\fR هرگز مستقیماً اجرا نمی‌شود، بلکه تنها توسط \&\fBinnd\fR و سایر برنامه‌هایی که نیاز به اتصال و گوش فرا دادن به درگاه‌های شبکه دارند اجرا می‌شود. فراخوانی‌های نمونه توسط \&\fBinnd\fR به صورت زیر خواهد بود: .PP .Vb 1 \& innbind 3,10,::,119 .Ve .PP برای اتصال سوکت IPv6 روی توصیف‌گر فایل ۳ به درگاه ۱۱۹ و تمامی نشانی‌ها، یا: .PP .Vb 1 \& innbind 6,2,10.0.0.3,433 .Ve .PP برای اتصال سوکت IPv4 روی توصیف‌گر فایل ۶ به درگاه ۴۳۳ در نشانی 10.0.0.3. .SH "تاریخچه (HISTORY)" .IX Header "HISTORY" نوشته‌شده توسط Russ Allbery برای InterNetNews. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBinet_aton\fR(3)، \&\fBinet_pton\fR(3)، \&\fBinnd\fR(8)، \&\fBnnrpd\fR(8).