MOUNTD(8) دستورات مدیریت سیستم MOUNTD(8)

mountd, rpc.mountd - دیمن درخواستهای اتصال سرور NFS

/usr/sbin/rpc.mountd [options]

دیمن rpc.mountd درخواستهای کلاینتهای NFS برای اتصال فایلسیستمها را دریافت و مجوزهای دسترسی را بررسی میکند.

دیمن rpc.mountd سمت سرور پروتکل NFS MOUNT را پیاده‌سازی می‌کند که یک پروتکل جانبی NFS مورد استفاده در نسخه ۲ [RFC1094] و نسخه ۳ [RFC1813] پروتکل NFS است. این دیمن همچنین به درخواست‌های هسته لینوکس برای احراز هویت کلاینت‌ها پاسخ داده و جزئیات مجوزهای دسترسی را ارائه می‌دهد.

سرور NFS (nfsd) یک حافظه پنهان (cache) از اطلاعات احراز هویت و مجوزها نگهداری می‌کند که برای شناسایی منبع هر درخواست و سپس تعیین دسترسی‌های مجاز آن منبع به هر فایل‌سیستم محلی استفاده می‌شود. هنگامی که اطلاعات مورد نیاز در حافظه پنهان یافت نشود، سرور درخواستی به mountd ارسال می‌کند تا اطلاعات ناقص را پر کند. دیمن Mountd از جدول اطلاعات ذخیره‌شده در /var/lib/nfs/etab که توسط exportfs(8) (احتمالاً بر اساس محتویات exports(5)) مدیریت می‌شود، برای پاسخ به هر درخواست استفاده می‌کند.

پروتکل NFS MOUNT چندین رویه دارد. مهم‌ترین آن‌ها MNT (اتصال یک اشتراک) و UMNT (قطع اتصال یک اشتراک) هستند.

یک درخواست MNT دارای دو آرگومان است: یک آرگومان صریح که شامل مسیر پوشه ریشه اشتراک مورد نظر برای اتصال است، و یک آرگومان ضمنی که نشانی IP فرستنده است.

هنگام دریافت درخواست MNT از یک کلاینت NFS، rpc.mountd هم مسیر و هم نشانی IP فرستنده را با جدول اشتراک‌های خود تطبیق می‌دهد. اگر فرستنده مجاز به دسترسی به اشتراک درخواستی باشد، rpc.mountd یک هندل فایل NFS برای پوشه ریشه آن اشتراک به کلاینت برمی‌گرداند. سپس کلاینت می‌تواند با استفاده از هندل فایل ریشه و درخواست‌های NFS LOOKUP در ساختار پوشه‌های اشتراک پیمایش کند.

دیمن rpc.mountd هر درخواست موفق MNT را با افزودن یک ورودی به فایل /var/lib/nfs/rmtab ثبت می‌کند. هنگام دریافت یک درخواست UMNT از یک کلاینت NFS، rpc.mountd تا زمانی که فهرست کنترل دسترسی آن اشتراک به فرستنده اجازه دسترسی بدهد، به سادگی ورودی منطبق را از /var/lib/nfs/rmtab حذف می‌کند.

کلاینت‌ها می‌توانند با استفاده از دستور showmount(8) از فهرست فایل‌سیستم‌هایی که سرور NFS در حال حاضر به اشتراک گذاشته است، یا فهرست سایر کلاینت‌هایی که اشتراک‌های آن را متصل کرده‌اند، مطلع شوند. دستور showmount(8) از رویه‌های دیگر در پروتکل NFS MOUNT برای گزارش اطلاعات مربوط به فایل‌سیستم‌های صادرشده سرور استفاده می‌کند.

توجه داشته باشید که با این حال، تضمین چندانی برای دقیق بودن محتویات /var/lib/nfs/rmtab وجود ندارد. یک کلاینت ممکن است حتی پس از فراخوانی UMNT به دسترسی به یک اشتراک ادامه دهد. اگر کلاینت بدون ارسال درخواست UMNT راه‌اندازی مجدد شود، ورودی‌های کهنه و منقضی برای آن کلاینت در /var/lib/nfs/rmtab باقی خواهند ماند.

نسخه ۴ (و نسخه‌های بعدی) NFS از یک پروتکل جداگانه NFS MOUNT استفاده نمی‌کند. در عوض، اتصال با استفاده از درخواست‌های معمولی NFS که توسط سرور NFS در هسته لینوکس (nfsd) مدیریت می‌شوند، انجام می‌گیرد. در نتیجه، /var/lib/nfs/rmtab برای انعکاس فعالیت‌های NFSv4 به‌روزرسانی نمی‌شود.

فعال‌سازی اشکال‌زدایی. انواع مجاز عبارتند از: all ،auth ،call ،general و parse.
فعال‌سازی ثبت گزارش پاسخ‌ها به درخواست‌های احراز هویت و دسترسی از سوی nfsd. هر پاسخ سپس توسط هسته به مدت ۳۰ دقیقه (یا طبق مقدار تعیین‌شده توسط --ttl در زیر) در حافظه پنهان ذخیره می‌شود و پس از ۱۵ دقیقه (نیمی از زمان ttl) در صورت فعال ماندن کلاینت مربوطه بازنشانی خواهد شد. توجه داشته باشید که -l معادل -d auth است و بنابراین می‌تواند در /etc/nfs.conf با "debug = auth" در بخش [mountd] فعال شود.
دیمن rpc.mountd همیشه پاسخ‌های احراز هویت به درخواست‌های MOUNT را در زمان استفاده از NFSv3 ثبت می‌کند، اما برای دریافت گزارش‌های مشابه برای NFSv4، این گزینه الزامی است.
به‌طور معمول هر نشانی IP کلاینت با هر شناسه میزبان (نام، وایلدکارد، netgroup و غیره) موجود در /etc/exports تطبیق داده می‌شود و یک هویت ترکیبی از تمام شناسه‌های منطبق تشکیل می‌گردد. اغلب کلاینت‌های زیادی به یک هویت ترکیبی مشابه نگاشت می‌شوند، بنابراین انجام این نگاشت تعداد جزئیات متمایز دسترسی را که هسته باید ذخیره کند کاهش می‌دهد. مشخص کردن گزینه -i این نگاشت را غیرفعال می‌کند تا دسترسی به هر فایل‌سیستم برای هر نشانی IP کلاینت به‌طور جداگانه درخواست و کش شود. انجام این کار ممکن است بار به‌روزرسانی حافظه پنهان را کمی افزایش دهد، اما خواندن پیام‌های گزارش تولیدشده توسط گزینه -l را آسان‌تر می‌کند.
تعیین زمان حیات (TTL) برای اطلاعات کش‌شده ارسال‌شده به هسته. هسته به‌طور معمول در صورتی که پس از سپری شدن نیمی از این زمان به اطلاعات نیاز باشد، درخواست به‌روزرسانی می‌کند. افزایش مقدار ارائه‌شده (که به ثانیه است) نرخ درخواست‌های به‌روزرسانی حافظه پنهان را کاهش می‌دهد و این امر به‌ویژه زمانی که این درخواست‌ها با -l ثبت می‌شوند مشهود است. با این حال، افزایش آن همچنین به این معنی است که اعمال تغییرات در نگاشت نام میزبان به نشانی ممکن است زمان بیشتری ببرد. مقدار پیش‌فرض TTL برابر ۱۸۰۰ (۳۰ دقیقه) است.
اجرا در پیش‌زمینه (عدم تبدیل به دیمن).
نمایش پیام راهنما.
تنظیم محدودیت تعداد توصیف‌کننده‌های باز پرونده به num. پیش‌فرض، بدون تغییر گذاشتن این محدودیت است.
این گزینه می‌تواند برای درخواست از rpc.mountd جهت عدم ارائه نسخه‌های خاصی از NFS استفاده شود. نسخه فعلی rpc.mountd می‌تواند از نسخه‌های ۲، ۳ و ۴ پروتکل NFS پشتیبانی کند. اگر هر یک از این نسخه‌ها نباید ارائه شود، rpc.mountd باید با گزینه --no-nfs-version <vers> فراخوانی شود.
عدم ارائه TCP برای mount.
شماره پورت مورد استفاده برای سوکت‌های شنونده RPC را مشخص می‌کند. اگر این گزینه مشخص نشود، rpc.mountd تلاش می‌کند با /etc/services مشورت کند؛ اگر دریافت پورت موفقیت‌آمیز باشد، همان پورت برای تمام سوکت‌های شنونده تنظیم می‌شود، در غیر این صورت یک پورت موقت تصادفی برای هر سوکت شنونده انتخاب می‌کند.
این گزینه می‌تواند برای ثابت کردن مقدار پورت شنوندگان rpc.mountd در مواقعی که درخواست‌های NFS MOUNT باید از فایروال بین کلاینت‌ها و سرورها عبور کنند استفاده شود.
تعیین یک برنامه فراخوان دسترسی‌پذیری بالا (HA callout). این برنامه فراخوان‌ها را برای تمام درخواست‌های MOUNT و UNMOUNT دریافت می‌کند. این قابلیت به rpc.mountd اجازه می‌دهد در محیط‌های NFS با دسترسی‌پذیری بالا (HA-NFS) استفاده شود.
برنامه فراخوان با ۴ آرگومان اجرا می‌شود: اولین آرگومان بسته به دلیل فراخوان mount یا unmount است. دومی نام کلاینت انجام‌دهنده اتصال خواهد بود. سومی مسیری است که کلاینت در حال متصل کردن آن است. آرگومان آخر تعداد اتصال‌های همزمانی است که تصور می‌کنیم کلاینت از آن مسیر دارد.
این برنامه فراخوان در هسته‌های نسخه ۲.۶ و بالاتر مورد نیاز نیست. به جای آن، فایل‌سیستم nfsd را روی /proc/fs/nfsd متصل کنید.
تعیین پوشه‌ای برای قرار دادن اطلاعات وضعیت (etab و rmtab). اگر این گزینه مشخص نشود، مقدار پیش‌فرض /var/lib/nfs استفاده می‌شود.
دیمن rpc.mountd نشانی‌های IP را در فایل rmtab ردیابی می‌کند. هنگامی که یک درخواست DUMP ارسال می‌شود (برای مثال توسط کاربری که دستور showmount -a را اجرا می‌کند)، به‌طور پیش‌فرض به جای نام میزبان، نشانی‌های IP را برمی‌گرداند. این گزینه باعث می‌شود rpc.mountd یک جستجوی معکوس (reverse lookup) روی هر نشانی IP انجام داده و به جای آن نام میزبان را بازگرداند. فعال کردن این گزینه در برخی شرایط می‌تواند تأثیر منفی قابل توجهی بر عملکرد بگذارد.
این گزینه تعداد نخ‌های پردازشی که rpc.mountd ایجاد می‌کند را مشخص می‌نماید. پیش‌فرض ۱ نخ است که احتمالاً کافی می‌باشد. نخ‌های بیشتر معمولاً تنها برای سرورهای NFS مورد نیاز است که باید طوفان‌های اتصال شامل صدها اتصال NFS را در عرض چند ثانیه مدیریت کنند، یا زمانی که کارساز DNS شما کند یا غیرقابل اعتماد است.
عدم ارائه UDP برای اتصال.
این گزینه می‌تواند برای درخواست از rpc.mountd جهت ارائه نسخه‌های خاصی از NFS استفاده شود. نسخه فعلی rpc.mountd می‌تواند از هر دو نسخه NFS نسخه ۲ و نسخه جدیدتر ۳ پشتیبانی کند.
چاپ نسخه rpc.mountd و خروج.
پذیرش درخواست‌ها از هسته برای نگاشت شناسه‌های کاربری (UID) به فهرست‌هایی از شناسه‌های گروهی (GID) جهت استفاده در کنترل دسترسی. یک درخواست NFS به‌طور معمول (به جز هنگام استفاده از Kerberos یا سایر روش‌های احراز هویت رمزنگاری‌شده) شامل یک شناسه کاربری و فهرستی از شناسه‌های گروهی است. به دلیل محدودیت در پروتکل NFS، حداکثر ۱۶ شناسه گروه می‌توانند فهرست شوند. اگر از فلگ -g استفاده کنید، فهرست شناسه‌های گروهی دریافت شده از کلاینت با فهرستی از شناسه‌های گروهی جایگزین می‌شود که با یک جستجوی مناسب روی سرور تعیین شده‌اند. توجه داشته باشید که شناسه گروه «اصلی» تحت تأثیر قرار نمی‌گیرد، بنابراین دستور newgroup روی کلاینت همچنان مؤثر خواهد بود. این تابع نیازمند هسته لینوکس با حداقل نسخه ۲.۶.۲۱ است.

بسیاری از گزینه‌هایی که می‌توان در خط فرمان تنظیم کرد را می‌توان از طریق مقادیر تنظیم‌شده در بخش‌های [mountd] یا در برخی موارد [nfsd] فایل پیکربندی /etc/nfs.conf نیز کنترل نمود. مقادیر شناخته‌شده در بخش [mountd] شامل manage-gids، cache-use-ipaddr، descriptors، port، threads، ttl، reverse-lookup، state-directory-path و ha-callout است که هر کدام همان اثر گزینه هم‌نام خود را دارند.

مقادیر شناخته‌شده در بخش [nfsd] شامل TCP، UDP، vers3 و vers4 است که هر کدام همان معنای ارائه‌شده در rpc.nfsd(8) را دارند.

شما می‌توانید شنوندگان rpc.mountd خود را با استفاده از کتابخانه tcp_wrapper یا iptables(8) محافظت کنید.

توجه داشته باشید که کتابخانه tcp_wrapper تنها از شبکه IPv4 پشتیبانی می‌کند.

نام میزبان همتایان NFS که مجاز به دسترسی به rpc.mountd هستند را به /etc/hosts.allow اضافه کنید. حتی اگر باینری rpc.mountd نام متفاوتی داشته باشد، از نام دیمن mountd استفاده کنید.

نام‌های میزبانی که در هر یک از فایل‌های دسترسی استفاده شده‌اند، در صورتی که نتوان آن‌ها را به نشانی‌های IP تفکیک کرد، نادیده گرفته می‌شوند. برای اطلاعات بیشتر، صفحات راهنمای tcpd(8) و hosts_access(5) را ببینید.

پروتکل TI-RPC پیش‌نیازی برای پشتیبانی از NFS در IPv6 است. اگر پشتیبانی از TI-RPC در rpc.mountd کامپایل شده باشد، تلاش می‌کند شنوندگانی را روی ترابری‌های شبکه‌ای که در /etc/netconfig به‌عنوان «visible» علامت‌گذاری شده‌اند راه‌اندازی کند. تا زمانی که حداقل یک شنونده ترابری شبکه با موفقیت شروع به کار کند، rpc.mountd به فعالیت خود ادامه خواهد داد.

/etc/exports
فایل ورودی برای exportfs، شامل فهرست اشتراک‌ها، گزینه‌های اشتراک و لیست‌های کنترل دسترسی.
/var/lib/nfs/rmtab
جدول کلاینت‌هایی که به اشتراک‌های سرور دسترسی دارند.

exportfs(8), exports(5), showmount(8), rpc.nfsd(8), rpc.rquotad(8), nfs(5), nfs.conf(5), tcpd(8), hosts_access(5), iptables(8), netconfig(5)

RFC 1094 - "NFS: Network File System Protocol Specification"
RFC 1813 - "NFS Version 3 Protocol Specification"
RFC 7530 - "Network File System (NFS) Version 4 Protocol"
RFC 8881 - "Network File System (NFS) Version 4 Minor Version 1 Protocol"

Olaf Kirch، H. J. Lu، G. Allan Morris III و جمعی دیگر.

مه ۲۰۲۵ nfs-utils