| MOUNT(8) | دستورات مدیریت سیستم | MOUNT(8) |
نام (NAME)
mount - سوار کردن و اتصال یک سیستم پرونده
خلاصه دستور (SYNOPSIS)
mount [-h|-V]
mount [-l] [-t fstype]
mount -a [-fFnrsvw] [-t fstype] [-O optlist]
mount [-fnrsvw] [-o options] device|mountpoint
mount [-fnrsvw] [-t fstype] [-o options] device mountpoint
mount --bind|--rbind|--move olddir newdir
mount --make-[shared|slave|private|unbindable|rshared|rslave|rprivate|runbindable] mountpoint
توضیحات (DESCRIPTION)
دستور mount سیستمهای پرونده موجود بر روی دستگاههای مختلف را به درخت دایرکتوری لینوکس متصل میکند.
تمام پروندههای قابل دسترسی در یک سیستم یونیکس در یک درخت واحد بزرگ، یعنی سلسلهمراتب فایلها، که ریشه آن / است، چیده شدهاند. این پروندهها میتوانند در میان چندین دستگاه پخش شده باشند. دستور mount برای پیوست کردن سیستم پرونده موجود روی یک دستگاه به این درخت بزرگ فایلها به کار میرود. در مقابل، دستور umount(8) مجدداً آن را جدا میکند. سیستم پرونده برای کنترل نحوه ذخیرهسازی دادهها روی دستگاه یا ارائه آنها به شکل مجازی از طریق شبکه یا سایر سرویسها استفاده میشود.
شکل استاندارد دستور mount به صورت زیر است:
mount -t type device dir
این دستور به هسته لینوکس اعلام میکند که سیستم پرونده موجود بر روی device (که از نوع type است) را به دایرکتوری dir متصل کند. گزینه -t type اختیاری است. دستور mount معمولاً قادر است نوع سیستم پرونده را به صورت خودکار تشخیص دهد. به طور پیشفرض دسترسیهای ریشه (root) برای اتصال یک سیستم پرونده الزامی است. برای جزئیات بیشتر به بخش «اتصالات کاربران غیر ریشه» در ادامه مراجعه کنید. محتویات قبلی (در صورت وجود)، مالک و حالت دسترسی دایرکتوری dir نامرئی میشوند، و تا زمانی که این سیستم پرونده متصل بماند، مسیر dir به ریشه سیستم پرونده روی device اشاره میکند.
اگر فقط دایرکتوری یا فقط دستگاه داده شود، برای مثال:
mount /dir
آنگاه mount به دنبال یک نقطه اتصال (و در صورت نیافتن، به دنبال یک دستگاه) در پرونده /etc/fstab میگردد. میتوان از گزینههای --target یا --source برای جلوگیری از تفسیر مبهم آرگومان دادهشده استفاده کرد. برای مثال:
mount --target /mountpoint
یک سیستم پرونده ممکن است بیش از یک بار متصل شود، و در برخی موارد (مانند سیستمهای پرونده شبکهای) همان سیستم پرونده ممکن است چندین بار روی یک نقطه اتصال سوار شود. دستور mount هیچ سیاستی را برای کنترل این رفتار اعمال نمیکند. تمامی این رفتارها توسط هسته کنترل شده و معمولاً وابسته به درایور سیستم پرونده است. استثنا گزینه --all است؛ در این حالت سیستمهای پروندهای که هماکنون متصل هستند نادیده گرفته میشوند (برای جزئیات بیشتر به --all در زیر مراجعه کنید).
فهرست کردن اتصالات (Listing the mounts)
حالت فهرست کردن فقط برای سازگاری با نسخههای گذشته حفظ شده است.
برای خروجی پایدارتر و قابل سفارشیسازیتر، از findmnt(8) استفاده کنید، بهویژه در اسکریپتهای خود. توجه داشته باشید که نویسههای کنترلی در نام نقطه اتصال با '?' جایگزین میشوند.
دستور زیر تمام سیستمهای پرونده متصلشده (از نوع type) را فهرست میکند:
mount [-l] [-t type]
گزینه -l برچسبها را به این فهرست اضافه میکند. در زیر مشاهده کنید.
مشخص کردن دستگاه و سیستم پرونده (Indicating the device and filesystem)
بیشتر دستگاهها با یک نام پرونده (یک دستگاه ویژه بلوکی) مانند /dev/sda1 مشخص میشوند، اما گزینههای دیگری نیز وجود دارد. برای مثال در اتصال NFS، ممکن است device به شکل knuth.cwi.nl:/dir باشد.
نام دستگاههای پارتیشنهای دیسک ناپایدار هستند؛ بازپیکربندی سختافزار و افزودن یا حذف دستگاه میتواند موجب تغییر نامها شود. به همین دلیل اکیداً توصیه میشود از شناسههای سیستم پرونده یا پارتیشن مانند UUID یا LABEL استفاده شود. شناسههای پشتیبانیشده کنونی (تگها):
LABEL=label
UUID=uuid
توجه داشته باشید که mount از UUIDها به عنوان رشته متنی استفاده میکند. مقادیر UUID از خط فرمان یا از fstab(5) به نمایش دودویی داخلی تبدیل نمیشوند. نمایش رشتهای UUID باید با حروف کوچک باشد.
PARTLABEL=label
PARTUUID=uuid
ID=id
دستور lsblk --fs نمای کلی سیستمهای پرونده، برچسبها و UUIDهای دستگاههای بلوکی موجود را فراهم میکند. دستور blkid -p <device> جزئیات مربوط به یک سیستم پرونده روی دستگاه مشخصشده را ارائه میدهد.
فراموش نکنید که هیچ تضمینی برای یکتا بودن واقعی UUIDها و برچسبها وجود ندارد، به ویژه اگر دستگاه را جابهجا، به اشتراکگذاری یا کپی کنید. از lsblk -o +UUID,PARTUUID برای بررسی یکتایی واقعی UUIDها در سیستم خود استفاده کنید.
پیکربندی توصیهشده، استفاده از تگها (مانند UUID=uuid) به جای پیوندهای نمادین udev در مسیر /dev/disk/by-{label,uuid,id,partuuid,partlabel} در پرونده /etc/fstab است. تگها خواناتر، مقاومتر و قابل حملتر هستند. دستور mount(8) در لایههای درونی خود از پیوندهای نمادین udev استفاده میکند، بنابراین استفاده از پیوندهای نمادین در /etc/fstab مزیتی نسبت به تگها ندارد. برای اطلاعات بیشتر libblkid(3) را ببینید.
سیستم پرونده proc به هیچ دستگاه خاصی مرتبط نیست و هنگام اتصال آن، میتوان از هر کلمه کلیدی دلخواه - برای مثال proc - به جای مشخصات دستگاه استفاده کرد. (انتخاب مرسوم none چندان مناسب نیست: پیام خطای «none already mounted» از سوی mount میتواند گیجکننده باشد.)
فایلهای /etc/fstab و /etc/mtab و /proc/mounts (The files /etc/fstab, /etc/mtab and /proc/mounts)
پرونده /etc/fstab (به fstab(5) مراجعه کنید) ممکن است شامل خطوطی باشد که توصیف میکنند چه دستگاههایی معمولاً در کجا و با چه گزینههایی متصل میشوند. مکان پیشفرض پرونده fstab(5) را میتوان با گزینه خط فرمان --fstab path بازنویسی کرد (برای جزئیات بیشتر به ادامه مراجعه کنید).
دستور
mount -a [-t type] [-O optlist]
(که معمولاً در اسکریپت بوت سیستم اجرا میشود) باعث میشود تمام سیستمهای پرونده ذکرشده در fstab (از نوع مناسب و/یا دارای یا فاقد گزینههای مربوطه) همانطور که مشخص شده متصل شوند، به جز مواردی که خط آنها حاوی کلمه کلیدی noauto است. افزودن گزینه -F باعث فورک شدن mount میشود تا سیستمهای پرونده به صورت موازی سوار شوند.
هنگام اتصال سیستم پروندهای که در fstab یا mtab ذکر شده است، کافی است در خط فرمان فقط دستگاه یا فقط نقطه اتصال را مشخص کنید.
برنامههای mount و umount(8) به طور سنتی فهرستی از سیستمهای پرونده متصلشده کنونی را در پرونده /etc/mtab نگهداری میکردند. پشتیبانی از پرونده معمولی کلاسیک /etc/mtab به طور پیشفرض در زمان کامپایل کاملاً غیرفعال شده است، زیرا در سیستمهای لینوکس امروزی بهتر است /etc/mtab به جای آن یک پیوند نمادین به /proc/mounts باشد. پرونده معمولی mtab که در فضای کاربری نگهداری میشود نمیتواند به طور قابل اعتماد با فضاهای نام (namespaces)، کانتینرها و سایر ویژگیهای پیشرفته لینوکس کار کند. اگر پشتیبانی سنتی mtab فعال باشد، میتوان هم از پرونده معمولی و هم از پیوند نمادین استفاده کرد.
اگر هیچ آرگومانی به mount داده نشود، فهرست سیستمهای پرونده متصلشده چاپ میشود.
اگر میخواهید گزینههای اتصال را از /etc/fstab بازنویسی کنید، باید از گزینه -o استفاده کنید:
mount device|dir -o options
و سپس گزینههای اتصال خط فرمان به انتهای فهرست گزینههای /etc/fstab اضافه خواهند شد. این رفتار پیشفرض را میتوان با استفاده از گزینه خط فرمان --options-mode تغییر داد. رفتار معمول این است که در صورت وجود گزینههای متناقض، آخرین گزینه اعمال میشود.
اگر هر دو پارامتر device (یا LABEL، UUID، ID، PARTUUID یا PARTLABEL) و dir مشخص شده باشند، برنامه mount پرونده /etc/fstab را نمیخواند. برای مثال، برای اتصال دستگاه foo در /dir:
mount /dev/foo /dir
این رفتار پیشفرض را میتوان با استفاده از گزینه خط فرمان --options-source-force تغییر داد تا همیشه پیکربندی از fstab خوانده شود. برای کاربران غیر ریشه، mount همیشه پیکربندی fstab را میخواند.
اتصالات کاربران غیر ریشه (Non-superuser mounts)
به طور معمول، تنها کاربر ارشد (superuser) میتواند سیستمهای پرونده را متصل کند. با این حال، اگر fstab شامل گزینه user در یک خط باشد، هر کاربری میتواند سیستم پرونده مربوطه را متصل کند.
بنابراین، با داشتن خطی مانند
/dev/cdrom /cd iso9660 ro,user,noauto,unhide
هر کاربری میتواند با استفاده از دستور زیر سیستم پرونده iso9660 موجود در یک CDROM درجشده را متصل کند:
mount /cd
توجه داشته باشید که mount در مورد کاربران غیر ریشه بسیار سختگیر است و تمام مسیرهای مشخصشده در خط فرمان قبل از پردازش fstab یا اجرای برنامههای کمکی بررسی و اعتبارسنجی میشوند. اکیداً توصیه میشود برای تعیین سیستم پرونده از یک نقطه اتصال معتبر استفاده کنید، در غیر این صورت ممکن است mount با شکست مواجه شود. برای مثال، استفاده از منبع NFS یا CIFS در خط فرمان برای کاربران غیر ریشه ایده مناسبی نیست.
از نسخه util-linux 2.35، در صورتی که دسترسیهای کاربر طبق قوانین امنیتی داخلی libmount ناکافی باشد، mount خارج نمیشود. در عوض، دسترسیهای suid را کنار گذاشته و به عنوان کاربر عادی غیر ریشه ادامه میدهد. این رفتار از سناریوهایی پشتیبانی میکند که در آنها مجوزهای ریشه ضروری نیستند (مانند سیستمهای پرونده fuse، فضاهای نام کاربری و غیره).
برای جزئیات بیشتر به fstab(5) مراجعه کنید. تنها کاربری که یک سیستم پرونده را متصل کرده میتواند آن را جدا کند. اگر لازم است هر کاربری بتواند آن را جدا کند، به جای user در خط fstab از users استفاده کنید. گزینه owner شبیه به گزینه user است، با این محدودیت که کاربر باید مالک پرونده دستگاه ویژه باشد. این امر مثلاً برای /dev/fd در صورتی که اسکریپت ورود کاربر کنسول را مالک این دستگاه کند، مفید است. گزینه group نیز مشابه است، با این محدودیت که کاربر باید عضو گروه پرونده دستگاه ویژه باشد.
گزینه اتصال user در صورتی که هیچ نام کاربری مشخص نشده باشد پذیرفته میشود. در صورت استفاده در قالب user=someone، گزینه نادیده گرفته شده و فقط برای برنامههای کمکی خارجی اتصال (/sbin/mount.<type>) جهت سازگاری با برخی سیستمهای پرونده شبکهای قابل مشاهده است.
هشدار
هنگام استفاده از فراخوانی سیستمی سنتی mount(2) (در هستههای قدیمیتر بدون رابط برنامهنویسی اتصال جدید)، مسیر مقصد اتصال در زمان فراخوانی سیستم توسط هسته تحلیل میشود. این بدان معناست که یک پنجره آسیبپذیری ذاتی بین زمان بررسی و زمان استفاده (TOCTOU) بین بررسی مجوز و عملیات واقعی اتصال وجود دارد. اگر یک دایرکتوری والد مقصد اتصال توسط کاربر غیرمجاز قابل نوشتن باشد، میتوان یک بخش مسیر را تعویض کرد تا اتصال به مکانی ناخواسته هدایت شود. رابط برنامهنویسی جدید اتصال (موجود از لینوکس 5.2) این مشکل را با استفاده از تفکیک مقصد مبتنی بر توصیفگر پرونده (file descriptor) برطرف کرده است. مدیران سیستم باید اطمینان حاصل کنند که مسیرهای مقصد برای اتصالات user از دایرکتوریهای قابل نوشتن توسط کاربران غیرمجاز عبور نمیکند.
برای مسیرهای منبع اتصال، mount(8) فقط مسیرهایی را که با /dev/ شروع میشوند برای کاربران غیرمجاز متعارفسازی (حل پیوندهای نمادین) میکند و بررسی میکند که نتیجه در داخل /dev/ باقی بماند. مسیرهای منبع خارج از /dev/ (مانند ایمیجهای دیسک در دایرکتوریهای قابل نوشتن توسط کاربر) دقیقاً همانطور که در fstab آمده حفظ میشوند.
تشخیص خودکار نوع سیستم پرونده برای کاربران غیرمجاز منحصراً متکی به فرادادههای udev است تا کاوش مستقیم دستگاه؛ این بدان معناست که ایمیجهای پروندهای که در udev ثبت نشدهاند، نیازمند نوع سیستم پرونده صریح در fstab هستند.
عملیات اتصال اتصالی (Bind mount operation)
اتصال مجدد بخشی از سلسلهمراتب فایلها در مکانی دیگر. فراخوانی به صورت زیر است:
mount --bind olddir newdir
یا با استفاده از این مدخل در fstab:
/olddir /newdir none bind
پس از این فراخوانی، همان محتویات در دو مکان قابل دسترسی هستند.
درک این نکته مهم است که «bind» هیچ گره درجه دو یا ویژهای در VFS هسته ایجاد نمیکند. «bind» صرفاً یک عملیات دیگر برای پیوست کردن سیستم پرونده است. هیچ جا این اطلاعات ذخیره نمیشود که سیستم پرونده با یک عملیات «bind» متصل شده است. مسیرهای olddir و newdir مستقل هستند و olddir میتواند جدا (unmount) شود.
همچنین میتوان یک تکپرونده را (بر روی یک تکپرونده دیگر) متصل کرد. علاوه بر این، میتوان از bind mount برای ایجاد نقطه اتصال از یک دایرکتوری معمولی استفاده کرد، برای مثال:
mount --bind foo foo
فراخوانی bind mount فقط (بخشی از) یک سیستم پرونده واحد را متصل میکند، نه اتصالات فرعی احتمالی را. کل سلسلهمراتب فایلها شامل اتصالات فرعی را میتوان با دستور زیر در مکان دوم متصل کرد:
mount --rbind olddir newdir
توجه داشته باشید که گزینههای اتصال سیستم پرونده نگهداریشده توسط هسته همانند نقطه اتصال اولیه باقی خواهند ماند. گزینههای اتصال فضای کاربری (مانند _netdev) توسط mount کپی نمیشوند و لازم است گزینهها را به طور صریح در خط فرمان mount مشخص کنید.
از نسخه util-linux 2.27، دستور mount اجازه میدهد گزینههای اتصال را با ارسال گزینههای مربوطه همراه با --bind تغییر دهید. برای مثال:
mount -o bind,ro foo foo
این ویژگی توسط هسته لینوکس پشتیبانی نمیشود؛ بلکه در فضای کاربری با یک فراخوانی سیستمی اتصال مجدد اضافی mount(2) پیادهسازی شده است. این راهحل اتمیک (اتمی) نیست.
روش جایگزین (کلاسیک) برای ایجاد یک اتصال bind فقطخواندنی، استفاده از عملیات اتصال مجدد (remount) است، برای مثال:
mount --bind olddir newdir
mount -o remount,bind,ro olddir newdir
توجه داشته باشید که یک bind فقطخواندنی یک نقطه اتصال فقطخواندنی (مدخل VFS) ایجاد میکند، اما ابربلوک (superblock) سیستم پرونده اصلی همچنان قابل نوشتن خواهد بود، به این معنی که olddir قابل نوشتن است، اما newdir فقطخواندنی خواهد بود.
همچنین میتوان فلگهای مدخل VFS شامل nosuid، nodev، noexec، noatime، nodiratime، relatime و nosymfollow را از طریق عملیات "remount,bind" تغییر داد. سایر فلگها (برای مثال فلگهای خاص سیستم پرونده) نادیده گرفته میشوند. فراخوانی سیستمی سنتی mount(2) اجازه تغییر بازگشتی گزینههای اتصال را نمیدهد (مثلاً با -o rbind,ro). معناشناسی بازگشتی با فراخوانی سیستمی جدید هسته mount_setattr(2) امکانپذیر است و از زمان libmount در util-linux v2.39 با یک آرگومان گزینهای آزمایشی جدید "recursive" پشتیبانی میشود (مثلاً -o rbind,ro=recursive). برای جزئیات بیشتر به بخش گزینههای اتصال مستقل از سیستم پرونده مراجعه کنید.
از نسخه util-linux 2.31، دستور mount فلگ bind از /etc/fstab را در عملیات remount نادیده میگیرد (در صورتی که -o remount در خط فرمان مشخص شده باشد). این برای کنترل کامل گزینههای اتصال در هنگام اتصال مجدد از طریق خط فرمان ضروری است. در نسخههای قبلی، فلگ bind همیشه اعمال میشد و بازتعریف گزینههای اتصال بدون تداخل با مفهوم bind غیرممکن بود. این رفتار mount تأثیری بر وضعیتهایی که "remount,bind" در پرونده /etc/fstab مشخص شده باشد ندارد.
از نسخه util-linux 2.39، دستور mount در صورت در دسترس بودن از رابط کاربری جدید اتصال هسته استفاده میکند. این رابط جدید هسته روش دقیقتری را برای کار با ویژگیهای نقطه اتصال فراهم میکند. برای مثال، عملیات -o bind,rw یک گره خواندنی-نوشتنی ایجاد میکند حتی اگر گره اصلی فقطخواندنی بوده باشد. این کار با فراخوانی سیستمی سنتی mount(2) که در آن فلگ VFS فقطخواندنی از گره اصلی به ارث برده میشد، غیرممکن بود.
عملیات انتقال (The move operation)
انتقال یک درخت متصلشده به مکانی دیگر (به صورت اتمیک). فراخوانی به صورت زیر است:
mount --move olddir newdir
این دستور باعث میشود محتویاتی که قبلاً زیر olddir ظاهر میشدند، اکنون زیر newdir قابل دسترسی باشند. مکان فیزیکی پروندهها تغییری نمیکند. توجه داشته باشید که olddir باید یک نقطه اتصال باشد.
همچنین توجه داشته باشید که انتقال یک اتصال واقع در زیر یک اتصال اشتراکی (shared mount) نامعتبر و غیرپشتیبانیشده است. از findmnt -o TARGET,PROPAGATION برای مشاهده فلگهای انتشار کنونی استفاده کنید.
عملیات زیردرختهای اشتراکی (Shared subtree operations)
از نسخه لینوکس 2.6.15 امکان علامتگذاری یک اتصال و اتصالات فرعی آن به عنوان shared (اشتراکی)، private (اختصاصی)، slave (پیرو) یا unbindable (غیرقابل اتصال) فراهم شده است. یک اتصال اشتراکی امکان ایجاد آینههایی از آن اتصال را فراهم میکند، به طوری که اتصالات و جداسازیها در هر یک از آینهها به آینه دیگر منتشر میشود. یک اتصال پیرو (slave) انتشارات را از ارباب (master) خود دریافت میکند، اما نه برعکس. یک اتصال اختصاصی هیچ قابلیت انتشاری ندارد. یک اتصال غیرقابل پیوند یک اتصال اختصاصی است که نمیتوان آن را از طریق عملیات bind شبیهسازی کرد. معناشناسی دقیق در پرونده Documentation/filesystems/sharedsubtree.txt در درخت منابع هسته مستند شده است؛ همچنین mount_namespaces(7) را ببینید.
عملیاتهای پشتیبانیشده عبارتند از:
mount --make-shared mountpoint mount --make-slave mountpoint mount --make-private mountpoint mount --make-unbindable mountpoint
دستورات زیر امکان تغییر بازگشتی نوع تمام اتصالات زیر یک نقطه اتصال معین را فراهم میکنند:
mount --make-rshared mountpoint mount --make-rslave mountpoint mount --make-rprivate mountpoint mount --make-runbindable mountpoint
دستور mount هنگام درخواست عملیات --make-* پرونده fstab(5) را نمیخواند. تمام اطلاعات لازم باید در خط فرمان مشخص شوند.
توجه داشته باشید که هسته لینوکس اجازه تغییر چندین فلگ انتشار را با یک فراخوانی سیستمی mount(2) نمیدهد و این فلگها را نمیتوان با سایر گزینهها و عملیاتهای اتصال ترکیب کرد.
از نسخه util-linux 2.23، دستور mount میتواند برای انجام تغییرات انتشار (توپولوژی) بیشتری با یک فراخوانی mount(8) و همچنین انجام آن همراه با سایر عملیاتهای اتصال استفاده شود. فلگهای انتشار با فراخوانیهای سیستمی اضافی mount(2) پس از موفقیت عملیاتهای اتصال پیشین اعمال میشوند. توجه داشته باشید که این کاربرد اتمیک نیست. امکان مشخص کردن فلگهای انتشار در fstab(5) به عنوان گزینههای اتصال وجود دارد (private، slave، shared، unbindable، rprivate، rslave، rshared، runbindable).
برای مثال:
mount --make-private --make-unbindable /dev/sda1 /foo
معادل است با:
mount /dev/sda1 /foo mount --make-private /foo mount --make-unbindable /foo
گزینههای خط فرمان (COMMAND-LINE OPTIONS)
مجموعه کامل گزینههای اتصال که توسط یک فراخوانی mount استفاده میشود، ابتدا با استخراج گزینههای سیستم پرونده از جدول fstab، سپس اعمال هر گزینهای که با آرگومان -o مشخص شده است، و در نهایت اعمال گزینه -r یا -w (در صورت وجود) تعیین میشود.
دستور mount تمام گزینههای خط فرمان را به برنامههای کمکی اتصال /sbin/mount.suffix منتقل نمیکند. رابط بین mount و برنامههای کمکی اتصال در ادامه در بخش کمککنندههای خارجی (EXTERNAL HELPERS) شرح داده شده است.
گزینههای خط فرمان موجود برای دستور mount عبارتند از:
-a, --all
عملکرد صحیح به /proc (برای تشخیص سیستمهای پرونده متصلشده) و به /sys (برای ارزیابی تگهای سیستم پرونده مانند UUID= یا LABEL=) وابسته است. اکیداً توصیه میشود سیستمهای پرونده /proc و /sys پیش از اجرای mount -a متصل شوند، یا در ابتدای fstab نگهداری شوند.
امکان استفاده از گزینه --all برای عملیات اتصال مجدد (remount) نیز وجود دارد. در این حالت تمام فیلترها (-t و -O) بر روی جدول سیستمهای پرونده از قبل متصلشده اعمال میشوند.
از نسخه 2.35 امکان استفاده از گزینه خط فرمان -o برای تغییر گزینههای اتصال از fstab وجود دارد (همچنین --options-mode را ببینید).
توجه داشته باشید که استفاده از mount -a برای بررسی صحت fstab روش نامناسبی است. راهکار توصیهشده استفاده از findmnt --verify میباشد.
-B, --bind
-c, --no-canonicalize
توجه داشته باشید که mount این گزینه را به برنامههای کمکی /sbin/mount.type ارسال نمیکند.
-F, --fork
-f, --fake
پرونده /etc/mtab دیگر در فضای کاربری نگهداری نمیشود، و با شروع از نسخه 2.39، عملیات اتصال میتواند زنجیرهای پیچیده از عملیاتها با وابستگیهای میان فراخوانیهای سیستم باشد. گزینه --fake برنامه libmount را مجبور میکند از تمام مراحل آمادهسازی منبع، تحلیل گزینهها و فرآیند اتصال واقعی صرفنظر کند.
تفاوت بین اجرای ساختگی (fake) و غیرساختگی بسیار زیاد است. به همین دلیل گزینه --fake اهمیت بسیار ناچیزی برای پیادهسازی کنونی mount(8) دارد و بیشتر برای سازگاری با گذشته حفظ شده است.
-i, --internal-only
-L, --label label
-l, --show-labels
-M, --move
-m, --mkdir[=mode]
--map-groups, --map-users inner:_outer_:_count_
--map-users /proc/PID/ns/user
-n, --no-mtab
-N, --namespace ns
دستور mount هنگام خواندن /etc/fstab، نوشتن در /etc/mtab (یا نوشتن در /run/mount) و فراخوانی mount(2) به فضای نام اتصال تغییر وضعیت میدهد، در غیر این صورت در فضای نام اتصال اصلی اجرا میشود. این بدان معناست که فضای نام مقصد نیازی به داشتن کتابخانهها یا پیشنیازهای دیگر برای اجرای فراخوانی mount(2) ندارد.
برای اطلاعات بیشتر mount_namespaces(7) را ببینید.
-O, --test-opts opts
mount -a -O no_netdev
تمام سیستمهای پرونده به جز آنهایی را که گزینه netdev در فیلد گزینههای پرونده /etc/fstab آنها مشخص شده است متصل میکند.
این گزینه با -t متفاوت است زیرا هر گزینه دقیقاً مطابقت داده میشود؛ وجود no در ابتدای یک گزینه، بقیه گزینهها را نفی نمیکند.
گزینههای -t و -O اثر تجمعی دارند؛ یعنی دستور:
mount -a -t ext2 -O _netdev
تمام سیستمهای پرونده ext2 دارای گزینه _netdev را متصل میکند، نه تمام سیستمهای پروندهای را که یا ext2 هستند یا گزینه _netdev دارند.
-o, --options opts
mount LABEL=mydisk -o noatime,nodev,nosuid
توجه داشته باشید که ترتیب گزینهها مهم است، زیرا در صورت وجود گزینههای متناقض، آخرین گزینه برنده است. همچنین گزینههای خط فرمان به طور پیشفرض گزینههای fstab را بازنویسی میکنند.
برای جزئیات بیشتر به بخشهای گزینههای اتصال مستقل از سیستم پرونده و گزینههای اتصال ویژه سیستمهای پرونده مراجعه کنید.
--onlyonce
--options-mode mode
--options-source source
--options-source-force
-R, --rbind
-r, --read-only
توجه داشته باشید که بسته به نوع سیستم پرونده، وضعیت آن و رفتار هسته، ممکن است سیستم همچنان بر روی دستگاه بنویسد. برای مثال ext3 و ext4 در صورت کثیف بودن سیستم پرونده، ژورنال را بازپخش میکنند. برای جلوگیری از این نوع دسترسی نوشتن، میتوانید سیستم پرونده ext3 یا ext4 را با گزینههای ro,noload متصل کنید یا خود دستگاه بلوکی را روی حالت فقطخواندنی تنظیم کنید، به دستور blockdev(8) مراجعه کنید.
-s
--source device
--target directory
--target-prefix directory
mount --all --target-prefix /chroot -o X-mount.mkdir
همه موارد را از fstab سیستم به /chroot متصل میکند و تمام نقاط اتصال ناموجود ایجاد میشوند (به لطف X-mount.mkdir). همچنین --fstab را برای استفاده از یک fstab جایگزین ببینید.
-T, --fstab path
توجه داشته باشید که mount گزینه --fstab را به برنامههای کمکی /sbin/mount.type ارسال نمیکند، به این معنی که پروندههای fstab جایگزین برای برنامههای کمکی نامرئی خواهند بود. این امر برای اتصالات عادی مشکلی ایجاد نمیکند، اما اتصالات کاربری (غیر ریشه) همیشه برای تایید حقوق کاربر نیازمند fstab هستند.
-t, --types fstype
برنامههای mount و umount(8) از زیرنوعهای سیستم پرونده پشتیبانی میکنند. زیرنوع با یک پسوند '.subtype' مشخص میشود. برای مثال 'fuse.sshfs'. توصیه میشود به جای افزودن هرگونه پیشوند به منبع اتصال از نشانهگذاری زیرنوع استفاده کنید (برای مثال 'sshfs#example.com' منسوخ شده است).
اگر هیچ گزینه -t داده نشود، یا نوع auto مشخص شده باشد، mount سعی میکند نوع مورد نظر را حدس بزند. نوع سیستم پرونده ابتدا با استفاده از فرادادههای udev و سپس با کاوش مستقیم دستگاه از طریق libblkid(3) برای کاربران ریشه تعیین میشود. اگر هیچیک از این روشها نوع را مشخص نکند، mount به عنوان راهکار جایگزین تمام نوعهای فهرستشده در /etc/filesystems یا در صورت عدم وجود آن پرونده، در /proc/filesystems را امتحان میکند. نوعهای برچسبخورده با "nodev" (مانند devpts، proc و nfs) نادیده گرفته میشوند. اگر انتهای /etc/filesystems خطی با یک ستاره تنها (*) باشد، mount پس از آن /proc/filesystems را میخواند. در هنگام امتحان، تمام نوعهای سیستم پرونده با گزینه اتصال silent متصل میشوند.
برای کاربران غیرمجاز (غیر ریشه)، کاوش مستقیم دستگاه از طریق libblkid(3) غیرفعال است و تشخیص نوع سیستم پرونده منحصراً متکی بر فرادادههای udev است. این بدان معناست که ایمیجهای پروندهای که در udev ثبت نشدهاند نیازمند تعیین صریح نوع سیستم پرونده در fstab هستند.
ایجاد یک پرونده /etc/filesystems میتواند برای تغییر ترتیب کاوش (مثلاً امتحان vfat قبل از msdos یا ext3 قبل از ext2) یا در صورت استفاده از بارگذار خودکار ماژول هسته مفید باشد.
بیش از یک نوع را میتوان در یک فهرست جداشده با کاما، هم برای گزینه -t و هم در مدخل /etc/fstab مشخص کرد. فهرست انواع سیستم پرونده برای گزینه -t میتواند با پیشوند no همراه باشد تا سیستمهای پروندهای را که نباید عملیاتی روی آنها انجام شود مشخص کند. پیشوند no در صورت درج در یک مدخل /etc/fstab هیچ اثری ندارد.
پیشوند no میتواند همراه با گزینه -a معنیدار باشد. برای مثال دستور:
mount -a -t nomsdos,smbfs
تمام سیستمهای پرونده به جز آنهایی که از نوع msdos و smbfs هستند را متصل میکند.
برای بیشتر نوعها، تمام کاری که برنامه mount باید انجام دهد اجرای یک فراخوانی سیستمی ساده mount(2) است و هیچ دانش دقیقی درباره نوع سیستم پرونده لازم نیست. با این حال برای چند نوع معدود (مانند nfs، nfs4، cifs، smbfs، ncpfs) کدهای ویژهای لازم است. سیستمهای پرونده nfs، nfs4، cifs، smbfs و ncpfs یک برنامه اتصال جداگانه دارند. به منظور فراهم ساختن امکان برخورد یکسان با همه نوعها، mount هنگام فراخوانی با نوع type برنامه /sbin/mount.type را (در صورت وجود) اجرا میکند. از آنجا که نسخههای مختلف برنامه smbmount قواعد فراخوانی متفاوتی دارند، ممکن است /sbin/mount.smbfs لازم باشد یک اسکریپت شل باشد که فراخوانی مورد نظر را تنظیم میکند.
-U, --uuid uuid
-v, --verbose
-w, --rw, --read-write
مترادف آن -o rw است.
توجه داشته باشید که مشخص کردن -w در خط فرمان، دستور mount را مجبور میکند که هرگز اتصال فقطخواندنی را روی دستگاههای محافظتشده در برابر نوشتن یا سیستمهای پرونده فقطخواندنی متصلشده امتحان نکند.
-h, --help
-V, --version
گزینههای اتصال مستقل از سیستم پرونده (FILESYSTEM-INDEPENDENT MOUNT OPTIONS)
برخی از این گزینهها تنها زمانی کاربرد دارند که در پرونده /etc/fstab درج شده باشند.
برخی از این گزینهها ممکن است به طور پیشفرض در هسته سیستم فعال یا غیرفعال باشند. برای بررسی تنظیمات کنونی گزینههای موجود در /proc/mounts را مشاهده کنید. توجه داشته باشید که سیستمهای پرونده همچنین دارای گزینههای اتصال پیشفرض مخصوص به خود هستند (برای مثال خروجی tune2fs -l را برای سیستمهای پرونده extN ببینید).
نکات سیستم پرونده مجازی (Virtual Filesystem Notes)
سیستم پرونده مجازی (VFS) لایه انتزاعی در هسته است که رابط سیستم پرونده را برای برنامههای فضای کاربری فراهم میکند. همچنین یک لایه انتزاعی درون هسته فراهم میسازد که به پیادهسازیهای مختلف سیستم پرونده امکان همزیستی میدهد. برخی از گزینههای اتصال فقط به این لایه اعمال میشوند.
گزینههای nosuid، noexec، nodiratime، relatime، noatime، strictatime و nosymfollow فقط توسط لایه هسته سیستم پرونده مجازی تفسیر میشوند و به جای خود سیستم پرونده، بر روی گره نقطه اتصال اعمال میگردند. برای مشاهده نمای کلی کاملی از سیستمهای پرونده و گزینههای VFS، دستور زیر را امتحان کنید:
findmnt -o TARGET,VFS-OPTIONS,FS-OPTIONS
از نسخه 2.39، libmount میتواند از رابط جدید اتصال هسته برای تنظیم ویژگیهای VFS به صورت بازگشتی استفاده کند. جهت حفظ سازگاری با گذشته، این ویژگی به طور پیشفرض فعال نیست، حتی اگر عملیات بازگشتی (مانند rbind) درخواست شده باشد. میتوان آرگومان گزینهای جدید "recursive" را مشخص کرد، برای مثال:
mount -orbind,ro=recursive,noexec=recursive,nosuid /foo /bar
این دستور سیستمهای پرونده را از /foo به /bar به صورت بازگشتی متصل میکند، و باعث میشود /bar و تمام اتصالات فرعی آن فقطخواندنی و noexec شوند، اما تنها خود /bar دارای ویژگی "nosuid" خواهد بود. آرگومان اختیاری "recursive" برای گزینههای اتصال VFS یک ویژگی آزمایشی (EXPERIMENTAL) است.
نکات تنظیم فقطخواندنی (Read-only Setting Notes)
تنظیم فقطخواندنی (ro یا rw) توسط سیستم پرونده مجازی و خود سیستم پرونده تفسیر میشود، و به نحوه تعیین گزینه در خط فرمان mount(8) بستگی دارد. برای سازگاری با گذشته، پیشفرض این است که در طول عملیاتهای استاندارد اتصال برای هر دو لایه اعمال شود.
عملیات "-o bind,remount,ro" فقط بر روی نقطه اتصال VFS اعمال میشود، در حالی که عملیات "-o remount,ro" هم بر روی VFS و هم بر روی ابربلوک سیستم پرونده اعمال میگردد. این معناشناسی امکان ایجاد یک نقطه اتصال فقطخواندنی را فراهم میکند در حالی که سیستم پرونده از طریق نقطه اتصال دیگر همچنان قابل نوشتن باقی میماند.
از نسخه 2.41، کتابخانه libmount امکان استفاده از آرگومانهای اختیاری vfs و fs (مانند ro=fs) را برای مشخص کردن لایه اعمال تنظیم فقطخواندنی داراست. برای مثال با استفاده از دستور:
mount -o ro=vfs /dev/sdc1 /A
سیستم پرونده در سطح ابربلوک به صورت خواندنی-نوشتنی متصل میشود، اما گره /A روی حالت فقطخواندنی تنظیم خواهد شد. در نسخههای قبلی، برای دستیابی به همین نتیجه به یک عملیات اضافی "-o bind,remount,ro" نیاز بود.
گزینههای عمومی اتصال (Generic Mount Options)
گزینههای زیر برای هر سیستم پروندهای که متصل میشود اعمال میشوند، اما همه سیستمهای پرونده لزوماً از آنها پشتیبانی نمیکنند. برای مثال گزینه sync فقط بر روی سیستمهای پرونده ext2، ext3، ext4، fat، vfat، ufs و xfs اثر دارد.
async
atime
noatime
auto
noauto
context=context, fscontext=context, defcontext=context, and rootcontext=context
یک گزینه پرکاربرد برای رسانههای جداشدنی context="system_u:object_r:removable_t است.
گزینه fscontext= برای همه سیستمهای پرونده، بدون توجه به پشتیبانی آنها از xattr کار میکند. گزینه fscontext برچسب فراگیر سیستم پرونده را بر روی یک بافت امنیتی خاص تنظیم میکند. این برچسب سیستم پرونده از برچسبهای جداگانه روی پروندهها مجزاست. این گزینه کل سیستم پرونده را برای انواع خاصی از بررسیهای مجوز، مانند زمان اتصال یا ایجاد پرونده، نمایندگی میکند. برچسبهای پروندههای مجزا همچنان از xattrهای روی خود پروندهها به دست میآیند. گزینه context در واقع بافت مجموعهای را که fscontext فراهم میکند تنظیم کرده و علاوه بر آن همان برچسب را به پروندههای مجزا نیز اعمال میکند.
میتوانید با استفاده از گزینه defcontext= بافت امنیتی پیشفرض را برای پروندههای بدون برچسب تعیین کنید. این مقدار تنظیمشده برای پروندههای بدون برچسب در خطمشی (policy) را لغو میکند و نیازمند سیستم پروندهای است که از برچسبگذاری xattr پشتیبانی کند.
گزینه rootcontext= به شما امکان میدهد اینود ریشه سیستم پرونده در حال اتصال را قبل از اینکه آن سیستم پرونده یا اینود برای فضای کاربری قابل مشاهده شود، به طور صریح برچسبگذاری کنید. این ویژگی برای مواردی مانند لینوکس بدون حالت (stateless Linux) مفید شناخته شده است. مقدار ویژه @target میتواند برای انتساب بافت کنونی مکان نقطه اتصال مقصد استفاده شود.
توجه داشته باشید که هسته هرگونه درخواست اتصال مجدد (remount) را که شامل گزینه context باشد رد میکند، حتی اگر نسبت به بافت کنونی تغییری نکرده باشد.
هشدار: مقدار context ممکن است شامل کاما باشد، که در این صورت مقدار باید به درستی درون علامت نقلقول قرار گیرد، در غیر این صورت mount کاما را به عنوان جداکننده میان گزینههای اتصال تفسیر خواهد کرد. فراموش نکنید که پوسته علامتهای نقلقول را حذف میکند و بنابراین نقلقول دوگانه الزامی است. برای مثال:
mount -t tmpfs none /mnt -o \ 'context="system_u:object_r:tmp_t:s0:c127,c456",noexec'
برای جزئیات بیشتر selinux(8) را ببینید.
defaults
توجه داشته باشید که مجموعه واقعی تمام گزینههای اتصال پیشفرض به هسته و نوع سیستم پرونده بستگی دارد. برای اطلاعات بیشتر ابتدای این بخش را ببینید.
dev
nodev
diratime
nodiratime
dirsync
exec
noexec
group
iversion
noiversion
mand
nomand
_netdev
nofail
relatime
از لینوکس 2.6.30، هسته به رفتاری که توسط این گزینه ارائه میشود پیشفرض است (مگر اینکه noatime مشخص شده باشد)، و گزینه strictatime برای به دست آوردن رفتار سنتی لازم است. علاوه بر این، از لینوکس 2.6.30، اگر آخرین زمان دسترسی پرونده بیش از ۱ روز قبل باشد، همیشه بهروزرسانی میشود.
norelatime
strictatime
nostrictatime
lazytime
این گزینه اتصال به طور چشمگیری عملیات نوشتن در جدول اینود را برای بارهای کاری که نوشتن تصادفی مکرر روی پروندههای از پیش تخصیصیافته انجام میدهند کاهش میدهد.
برچسبهای زمانی روی دیسک تنها زمانی بهروزرسانی میشوند که:
nolazytime
suid
nosuid
silent
loud
owner
remount
عملیات اتصال مجدد همراه با فلگ bind معناشناسی خاصی دارد. بخش بالا تحت عنوان عملیات اتصال اتصالی (Bind mount operation) را ببینید.
رفتار پیشفرض هسته برای فلگهای اتصال VFS (nodev, nosuid, noexec, ro) این است که تمام فلگهای نامشخص را هنگام اتصال مجدد بازنشانی کند. به همین دلیل mount(8) تلاش میکند تنظیمات کنونی را طبق fstab یا /proc/self/mountinfo حفظ کند. این رفتار پیشفرض را میتوان با --options-mode تغییر داد. تغییر بازگشتی فلگهای اتصال (پشتیبانیشده از v2.39 در سیستمهای دارای فراخوانی سیستمی mount_setattr(2))، برای مثال mount -o remount,ro=recursive، از رفتار بازنشانی نامشخصها استفاده نمیکند و به عنوان یک عملیات ساده افزودن/حذف عمل میکند و فلگهای نامشخص تغییر نمییابند.
قابلیت اتصال مجدد از روش استاندارد دستور mount در کار با گزینههای fstab پیروی میکند. این بدان معناست که mount تنها زمانی fstab (یا mtab) را نمیخواند که هر دو پارامتر device و dir مشخص شده باشند.
mount -o remount,rw /dev/foo /dir
پس از این فراخوانی تمام گزینههای اتصال قدیمی جایگزین میشوند و اطلاعات دلخواه از fstab (یا mtab) نادیده گرفته میشوند، به جز گزینه loop= که به صورت داخلی توسط دستور mount تولید و نگهداری میشود.
mount -o remount,rw /dir
پس از این فراخوانی، mount پرونده fstab را میخواند و این گزینهها را با گزینههای خط فرمان (-o) ادغام میکند. اگر هیچ نقطه اتصالی در fstab یافت نشود، به گزینههای اتصال از /proc/self/mountinfo ارجاع میدهد.
دستور mount امکان استفاده از --all را برای اتصال مجدد تمام سیستمهای پرونده از قبل متصلشده که با فیلتر مشخصشده (-O و -t) مطابقت دارند، فراهم میسازد. برای مثال:
mount --all -o remount,ro -t vfat
تمام سیستمهای پرونده vfat از قبل متصلشده را در حالت فقطخواندنی مجدداً متصل میکند. هر یک از سیستمهای پرونده با معناشناسی mount -o remount,ro /dir مجدداً متصل میشوند. این بدان معناست که دستور mount پرونده fstab یا mtab را خوانده و این گزینهها را با گزینههای خط فرمان ادغام میکند.
ro[=(recursive|vfs|fs)]
آرگومان recursive ویژگی VFS را مجبور میکند به صورت بازگشتی اعمال شود.
آرگومانهای vfs و fs لایهای را مشخص میکنند که فلگ فقطخواندنی باید بر روی آن اعمال شود. گزینه fs ابربلوک سیستم پرونده (نمونه منحصربهفرد سیستم پرونده در هسته) و vfs گره اتصال را مشخص میکند. اگر هیچ ویژگی مشخص نشود، هر دو لایه روی فقطخواندنی تنظیم میشوند.
برای جزئیات بیشتر به بخش نکات تنظیم فقطخواندنی مراجعه کنید.
rw[=(recursive|vfs|fs)]
آرگومان recursive ویژگی VFS را مجبور میکند به صورت بازگشتی اعمال شود.
آرگومانهای vfs و fs لایهای را مشخص میکنند که فلگ خواندنی-نوشتنی باید بر روی آن اعمال شود. گزینه fs ابربلوک سیستم پرونده و vfs گره اتصال را مشخص میکند. اگر هیچ ویژگی مشخص نشود، هر دو لایه روی خواندنی-نوشتنی تنظیم میشوند.
برای جزئیات بیشتر به بخش نکات تنظیم فقطخواندنی مراجعه کنید.
sync
user
nouser
users
X-*
x-*
توجه داشته باشید که پیش از util-linux v2.30 گزینههای x-* توسط libmount نگهداری و در فضای کاربری ذخیره نمیشدند (عملکرد آنها همانند X-* کنونی بود)، اما به دلیل افزایش کاربردها (در initrd، systemd و غیره) این قابلیت گسترش یافته تا پیکربندیهای موجود fstab بدون تغییر قابل استفاده بمانند.
X-mount.auto-fstypes=list
آرگومان list فهرستی جداشده با کاما از نامهای سیستم پرونده است. تشخیص خودکار سیستم پرونده با نوع سیستم پرونده "auto" یا زمانی که نوع سیستم پرونده مشخص نشده باشد فعال میشود.
آرگومان list از نحوه ارزیابی الگوهای نوع توسط mount پیروی میکند (برای جزئیات بیشتر به -t مراجعه کنید). تنها نوعهای مشخصشده سیستم پرونده مجاز خواهند بود، یا اگر فهرست با "no" شروع شود، تمام نوعهای مشخصشده ممنوع خواهند بود.
برای مثال X-mount.auto-fstypes="ext4,btrfs" تنها ext4 و btrfs را میپذیرد و X-mount.auto-fstypes="novfat,xfs" تمام سیستمهای پرونده را به جز vfat و xfs میپذیرد.
توجه داشته باشید که کاما به عنوان جداکننده میان گزینههای اتصال استفاده میشود، بدین معنی که مقادیر auto-fstypes باید به درستی نقلقول شوند؛ فراموش نکنید که پوسته علامتهای نقلقول را حذف میکند و بنابراین نقلقول دوگانه لازم است. برای مثال:
mount -t auto
-o’X-mount.auto-fstypes="noext2,ext3"' /dev/sdc1 /mnt/test
X-mount.mkdir[=mode]
X-mount.nocanonicalize[=type]
گزینه خط فرمان --no-canonicalize این گزینه اتصال را بازنویسی میکند و بر تمام تبدیلهای مسیر و تگ در همه شرایط اثر میگذارد، اما برای سازگاری با گذشته، فلگهای فراخوانی سیستمی open_tree را تغییر نمیدهد و مورد کاربرد bind-mount روی یک پیوند نمادین را مجاز نمیسازد.
توجه داشته باشید که mount(8) این گزینه را برای کاربران غیرمجاز (غیر ریشه) نادیده میگیرد. مسیرهای مقصد همیشه در حالت محدودشده متعارفسازی میشوند تا تفکیک امن تضمین گردد. مسیرهای منبع تنها زمانی متعارفسازی میشوند که با /dev/ شروع شوند.
X-mount.noloop
X-mount.subdir=directory
در حال حاضر، این قابلیت با اتصال موقت دایرکتوری ریشه سیستم پرونده در یک فضای نام غیراشتراکی و سپس bind کردن زیردایرکتوری به نقطه اتصال نهایی و جدا کردن ریشه سیستم پرونده پیادهسازی شده است. اتصال زیردایرکتوری به صورت اتمیک برای بقیه سیستم نمایان میشود هرچند با چندین فراخوانی سیستمی mount(2) پیاده شده است.
توجه داشته باشید که این قابلیت در نشستهایی با فضای نام اتصال اختصاصی غیراشتراکی (پس از unshare --mount) در هستههای قدیمی یا با mount(8) بدون پشتیبانی از API اتصال هسته مبتنی بر توصیفگر پرونده کار نخواهد کرد. در این حالت به unshare --mount --propagation shared نیاز دارید.
برای کاربران غیرمجاز (غیر ریشه)، این قابلیت نیازمند لینوکس 6.15 یا جدیدتر است که در آن زیردایرکتوری مستقیماً روی درخت اتصال جداشده باز میشود.
این قابلیت یک ویژگی آزمایشی (EXPERIMENTAL) است.
X-mount.owner=username|UID, X-mount.group=group|GID
X-mount.mode=mode
X-mount.idmap=id-type:id-mount:id-host:id-range [id-type:id-mount:id-host:id-range], X-mount.idmap=file
نگاشت شناسه باید با ساختار id-type:id-mount:id-host:id-range مشخص شود. مشخص کردن u به عنوان پیشوند id-type یک نگاشت UID ایجاد میکند، g یک نگاشت GID ایجاد میکند و حذف id-type یا مشخص کردن b هم نگاشت UID و هم GID ایجاد میکند. پارامتر id-mount شناسه شروع را در اتصال جدید نشان میدهد. پارامتر id-host شناسه شروع را در سیستم پرونده نشان میدهد. پارامتر id-range نشان میدهد چه تعداد شناسه باید نگاشت شوند. امکان مشخص کردن چندین نگاشت شناسه وجود دارد.
نگاشتهای شناسهای مجزا باید با فاصله از هم جدا شوند. لطفاً توجه داشته باشید که در پرونده /etc/fstab، فاصلهها به عنوان جداکننده فیلدها تفسیر میشوند. برای جلوگیری از این موضوع، باید آنها را با استفاده از \040 اسکیپ کنید. برای مثال: X-mount.idmap=0:0:1\040500:1000:1.
برای مثال نگاشت شناسه X-mount.idmap=u:1000:0:1 g:1001:1:2 5000:1000:2 یک اتصال نگاشتشده ایجاد میکند که در آن: UID 0 به UID 1000، شناسه GID 1 به GUID 1001، شناسه GID 2 به GID 1002، شناسههای UID و GID 1000 به 5000، و UID و GID 1001 به 5001 در این اتصال نگاشت میشوند.
هنگامی که نگاشت شناسه مستقیماً مشخص شود، یک فضای نام کاربری جدید با نگاشت درخواستی اختصاص داده خواهد شد. فضای نام کاربری تازه ایجادشده به این اتصال پیوست خواهد شد.
سپس فضای نام کاربری به اتصال پیوست شده و نگاشت شناسه فضای نام کاربری به نگاشت شناسه اتصال تبدیل خواهد شد.
برای مثال، X-mount.idmap=/proc/PID/ns/user فضای نام کاربری فرآیند PID را به این اتصال پیوست خواهد کرد.
nosymfollow
گزینههای اتصال ویژه سیستمهای پرونده (FILESYSTEM-SPECIFIC MOUNT OPTIONS)
این بخش گزینههایی را فهرست میکند که مختص سیستمهای پرونده خاصی هستند. در صورت امکان، ابتدا باید به صفحات راهنمای اختصاصی هر سیستم پرونده مراجعه کنید. برخی از آن صفحات در جدول زیر فهرست شدهاند.
| سیستم(های) پرونده | صفحه راهنما |
| btrfs | btrfs(5) |
| cifs | mount.cifs(8) |
| ext2, ext3, ext4 | ext4(5) |
| fuse | fuse(8) |
| nfs | nfs(5) |
| tmpfs | tmpfs(5) |
| xfs | xfs(5) |
توجه داشته باشید که برخی از صفحات فهرستشده در بالا ممکن است تنها پس از نصب ابزارهای فضای کاربری مربوطه در دسترس باشند.
گزینههای زیر تنها بر سیستمهای پرونده خاصی اعمال میشوند. ما آنها را بر اساس سیستم پرونده مرتب کردهایم. تمام گزینهها پس از فلگ -o قرار میگیرند.
اینکه چه گزینههایی پشتیبانی میشوند تا حدی به هسته در حال اجرا بستگی دارد. اطلاعات بیشتر ممکن است در پروندههای اختصاصی هر سیستم پرونده در زیردایرکتوری Documentation/filesystems در سورس هسته موجود باشد.
گزینههای اتصال برای adfs
uid=value و gid=value
ownmask=value و othmask=value
گزینههای اتصال برای affs
uid=value و gid=value
setuid=value و setgid=value
mode=value
protect
usemp
verbose
prefix=string
volume=string
reserved=value
root=value
bs=value
grpquota|noquota|quota|usrquota
گزینههای اتصال برای debugfs
سیستم پرونده debugfs یک سیستم پرونده شبهمجازی است که به طور سنتی در /sys/kernel/debug متصل میشود. از نگارش هسته 3.4، گزینههای زیر را دارد:
uid=n, gid=n
mode=value
گزینههای اتصال برای devpts
سیستم پرونده devpts یک سیستم پرونده شبهمجازی است که به طور سنتی در /dev/pts متصل میشود. برای دستیابی به یک شبهترمینال، یک فرآیند /dev/ptmx را باز میکند؛ سپس شماره شبهترمینال در اختیار فرآیند قرار میگیرد و پیرو شبهترمینال به عنوان /dev/pts/<number> قابل دسترسی خواهد بود.
uid=value و gid=value
mode=value
newinstance
تمام اتصالات devpts بدون این گزینه newinstance مجموعه شاخصهای یکسانی از شبهترمینالها را به اشتراک میگذارند (حالت سنتی). هر اتصال devpts همراه با گزینه newinstance دارای مجموعهای اختصاصی از شاخصهای شبهترمینال خواهد بود.
این گزینه عمدتاً برای پشتیبانی از کانتینرها در هسته لینوکس استفاده میشود. این قابلیت در هستههای لینوکس با شروع از نسخه 2.6.29 پیادهسازی شده است. علاوه بر این، این گزینه اتصال تنها در صورتی معتبر است که CONFIG_DEVPTS_MULTIPLE_INSTANCES در پیکربندی هسته فعال باشد.
برای استفاده موثر از این گزینه، /dev/ptmx باید یک پیوند نمادین به pts/ptmx باشد. برای جزئیات به Documentation/filesystems/devpts.txt در درخت سورس لینوکس مراجعه کنید.
ptmxmode=value
با پشتیبانی از نمونههای چندگانه devpts (گزینه newinstance در بالا را ببینید)، هر نمونه دارای یک گره اختصاصی ptmx در ریشه سیستم پرونده devpts است (معمولاً /dev/pts/ptmx).
برای سازگاری با نسخههای قدیمی هسته، حالت پیشفرض گره جدید ptmx برابر با 0000 است. گزینه ptmxmode=value حالتی مفیدتر را برای گره ptmx مشخص میکند و هنگام تعیین گزینه newinstance اکیداً توصیه میشود.
این گزینه فقط در نگارشهای هسته لینوکس از 2.6.29 پیادهسازی شده و نیازمند فعال بودن CONFIG_DEVPTS_MULTIPLE_INSTANCES در هسته است.
گزینههای اتصال برای fat
(توجه: fat یک سیستم پرونده جداگانه نیست، بلکه بخش مشترکی از سیستمهای پرونده msdos، umsdos و vfat است.)
blocksize={512|1024|2048}
uid=value و gid=value
umask=value
dmask=value
fmask=value
allow_utime=value
20
2
پیشفرض از گزینه 'dmask' تنظیم میشود. (اگر دایرکتوری قابل نوشتن باشد، utime(2) نیز مجاز است، یعنی dmask & 022~).
به طور معمول utime(2) بررسی میکند که فرآیند جاری مالک پرونده باشد یا قابلیت CAP_FOWNER را داشته باشد. اما سیستمهای پرونده FAT شناسه UID/GID را روی دیسک ندارند، بنابراین بررسی عادی بیش از حد انعطافناپذیر است. با این گزینه میتوانید آن را تعدیل کنید.
check=value
r[elaxed]
n[ormal]
s[trict]
codepage=value
conv=mode
cvf_format=module
cvf_option=option
debug
discard
dos1xfloppy
errors={panic|continue|remount-ro}
fat={12|16|32}
iocharset=value
nfs={stale_rw|nostale_ro}
stale_rw: شاخصی از اینودهای دایرکتوری نگهداری میکند که توسط کدهای مرتبط با NFS برای بهبود جستجو استفاده میشود.
nostale_ro: شماره اینود و دستگیره فایل را بر اساس مکان روی دیسک تعیین میکند. برای جلوگیری از خراب شدن دادهها، این گزینه سیستم پرونده را به صورت فقطخواندنی متصل میکند.
جهت حفظ سازگاری با گذشته، -o nfs نیز پذیرفته میشود که پیشفرض آن stale_rw است.
tz=UTC
time_offset=minutes
quiet
rodir
showexec
sys_immutable
flush
usefree
dots, nodots, dotsOK=[yes|no]
گزینههای اتصال برای hfs
creator=cccc, type=cccc
uid=n, gid=n
dir_umask=n, file_umask=n, umask=n
session=n
part=n
quiet
گزینههای اتصال برای hpfs
uid=value و gid=value
umask=value
case={lower|asis}
conv=mode
nocheck
گزینههای اتصال برای iso9660
استاندارد ISO 9660 ساختار سیستم پرونده مورد استفاده در CD-ROMها را توصیف میکند. (همچنین در برخی DVDها دیده میشود؛ سیستم پرونده udf را نیز ببینید.)
نام پروندههای استاندارد iso9660 در قالب 8.3 ظاهر میشوند و تمام نویسهها با حروف بزرگ هستند. هیچ فیلدی برای مالکیت، دسترسیها، تعداد پیوندها و غیره وجود ندارد.
پروتکل Rock Ridge یک پسوند برای iso9660 است که تمام ویژگیهای شبهیونیکس را فراهم میکند و سیستم پرونده شبیه یک سیستم پرونده یونیکسی معمولی (اما فقطخواندنی) میشود.
norock
nojoliet
check={r[elaxed]|s[trict]}
uid=value و gid=value
map={n[ormal]|o[ff]|a[corn]}
mode=value
unhide
block={512|1024|2048}
conv=mode
cruft
session=x
sbsector=xxx
گزینههای زیر مشابه vfat هستند و برای دیسکهای دارای فرمت Joliet کاربرد دارند:
iocharset=value
utf8
گزینههای اتصال برای jfs
iocharset=name
resize=value
nointegrity
integrity
errors={continue|remount-ro|panic}
noquota|quota|usrquota|grpquota
گزینههای اتصال برای msdos
گزینههای اتصال fat را ببینید. اگر سیستم پرونده msdos ناهمخوانی تشخیص دهد، خطا گزارش کرده و سیستم پرونده را فقطخواندنی میکند.
گزینههای اتصال برای ncpfs
همانند nfs، پیادهسازی ncpfs انتظار یک آرگومان دودویی به فراخوانی سیستمی mount(2) را دارد که توسط ncpmount(8) ساخته میشود.
گزینههای اتصال برای ntfs
iocharset=name
nls=name
utf8
uni_xlate={0|1|2}
posix=[0|1]
uid=value, gid=value و umask=value
گزینههای اتصال برای overlay
از لینوکس 3.18، سیستم پرونده شبهمجازی overlay یک اتصال اشتراکی (union mount) را برای سایر سیستمهای پرونده پیادهسازی میکند.
یک سیستم پرونده overlay دو سیستم پرونده را ترکیب میکند: یک سیستم پرونده بالایی (upper) و یک سیستم پرونده پایینی (lower). هنگامی که یک نام در هر دو سیستم پرونده وجود دارد، شیء موجود در سیستم پرونده بالایی قابل مشاهده است در حالی که شیء موجود در سیستم پرونده پایینی یا پنهان میشود یا در مورد دایرکتوریها، با شیء بالایی ادغام میگردد.
سیستم پرونده پایینی میتواند هر سیستم پرونده پشتیبانیشده توسط لینوکس باشد و نیازی به قابل نوشتن بودن ندارد. سیستم پرونده پایینی حتی میتواند یک overlayfs دیگر باشد. سیستم پرونده بالایی معمولاً قابل نوشتن خواهد بود و اگر چنین باشد، باید از ایجاد صفات گسترده trusted.* پشتیبانی کند و یک d_type معتبر در پاسخهای readdir ارائه دهد، بنابراین NFS مناسب نیست.
یک overlay فقطخواندنی از دو سیستم پرونده فقطخواندنی میتواند از هر نوع سیستم پروندهای استفاده کند. گزینههای lowerdir و upperdir با دستور زیر در یک دایرکتوری ادغامشده ترکیب میشوند:
mount -t overlay overlay \ -olowerdir=/lower,upperdir=/upper,workdir=/work /merged
lowerdir=directory
upperdir=directory
workdir=directory
userxattr
redirect_dir={on|off|follow|nofollow}
on
off
follow
nofollow
index={on|off}
uuid={on|off}
nfs_export={on|off}
xino={on|off|auto}
metacopy={on|off}
volatile
گزینههای اتصال برای reiserfs
سیستم پرونده Reiserfs یک سیستم پرونده ژورنالی است.
conv
hash={rupasov|tea|r5|detect}
hashed_relocation و no_unhashed_relocation
noborder
nolog
notail
replayonly
resize=number
user_xattr
acl
barrier=none / barrier=flush
گزینههای اتصال برای ubifs
سیستم پرونده UBIFS یک سیستم پرونده فلش است که روی جلدهای UBI کار میکند. توجه داشته باشید که atime پشتیبانی نمیشود و همیشه خاموش است.
نام دستگاه را میتوان به صورت ubiX_Y، ubiY، ubiX:NAME یا ubi:NAME مشخص کرد.
گزینههای اتصال موجود عبارتند از:
bulk_read
no_bulk_read
chk_data_crc
no_chk_data_crc
compr={none|lzo|zlib}
گزینههای اتصال برای udf
سیستم پرونده UDF یا «Universal Disk Format» برای DVD-ROMها، دیسکهای نوری، فلشمموریها و دستگاههای بلوکی دیگر استفاده میشود.
uid= و gid=
umask=، mode= و dmode=
bs=
unhide و undelete
adinicb / noadinicb
shortad / longad
nostrict
iocharset= و utf8
گزینههای اتصال برای اشکالزدایی و بازیابی پس از حادثه
novrs
session=
anchor=
lastblock=
گزینههای منسوخ و تاریخی اتصال که ممکن است دیده شوند و باید حذف شوند
گزینههای uid=ignore، gid=ignore، volume=، partition=، fileset= و rootdir= پیادهسازی نشدهاند و نادیده گرفته میشوند.
گزینههای اتصال برای ufs
ufstype=value
old (قالب قدیمی و پیشفرض، فقطخواندنی)، 44bsd (برای سیستمهای بر پایه BSD)، ufs2 یا 5xbsd (در FreeBSD 5.x به صورت خواندنی-نوشتنی)، sun (برای SunOS یا سولاریس در Sparc)، sunx86 (سولاریس x86)، hp (برای HP-UX)، nextstep، nextstep-cd و openstep (مورد استفاده در macOS نیز هست).
onerror=value
گزینههای اتصال برای umsdos
گزینههای اتصال msdos را ببینید. گزینه dotsOK صریحاً توسط umsdos غیرفعال میشود.
گزینههای اتصال برای vfat
ابتدا گزینههای اتصال fat شناخته میشوند. گزینه dotsOK صریحاً توسط vfat غیرفعال میشود. علاوه بر این:
uni_xlate
posix
nonumtail
utf8
shortname=mode
گزینههای اتصال برای usbfs
devuid=، devgid= و devmode=
busuid=، busgid= و busmode=
listuid=، listgid= و listmode=
پشتیبانی از DM-VERITY (DM-VERITY SUPPORT)
مقصد verity در دِوایسمپر (device-mapper) امکان بررسی شفاف و فقطخواندنی یکپارچگی دستگاههای بلوکی را با استفاده از API رمزنگاری هسته فراهم میسازد. دستور mount میتواند دستگاه dm-verity را باز کرده و اعتبارسنجی یکپارچگی را پیش از اتصال سیستم پرونده دستگاه انجام دهد. نیازمند libcryptsetup در libmount است (اختیاراً از طریق dlopen(3)). اگر libcryptsetup از استخراج هش ریشه دستگاه از قبل متصلشده پشتیبانی کند، دستگاههای موجود در صورت تطابق به طور خودکار مجدداً استفاده خواهند شد. گزینههای اتصال برای dm-verity:
verity.hashdevice=path
verity.roothash=hex
verity.roothashfile=path
verity.hashoffset=offset
verity.fecdevice=path
verity.fecoffset=offset
verity.fecroots=value
verity.roothashsig=path
verity.oncorruption=ignore|restart|panic
پشتیبانیشده از util-linux v2.35.
برای مثال از دستورات:
mksquashfs /etc /tmp/etc.raw veritysetup format /tmp/etc.raw /tmp/etc.verity --root-hash-file=/tmp/etc.roothash openssl smime -sign -in /tmp/etc.roothash -nocerts -inkey private.key \ -signer private.crt -noattr -binary -outform der -out /tmp/etc.roothash.p7s mount -o verity.hashdevice=/tmp/etc.verity,verity.roothashfile=/tmp/etc.roothash,\ verity.roothashsig=/tmp/etc.roothash.p7s /tmp/etc.raw /mnt
یک ایمیج squashfs از دایرکتوری /etc، دستگاه هش verity ایجاد میکند و ایمیج اعتبارسنجیشده سیستم پرونده را در /mnt متصل مینماید. در صورت استفاده از roothashsig، هسته بررسی خواهد کرد که هش ریشه با کلیدی از دستهکلید هسته امضا شده باشد.
پشتیبانی از دستگاه لوپ (LOOP-DEVICE SUPPORT)
یک حالت ممکن دیگر، اتصال از طریق دستگاه لوپ (loop device) است. برای مثال دستور:
mount /tmp/disk.img /mnt -t vfat -o loop=/dev/loop3
دستگاه لوپ /dev/loop3 را به گونهای تنظیم میکند که متناظر با پرونده /tmp/disk.img باشد، و سپس این دستگاه را در /mnt متصل میکند.
اگر هیچ دستگاه لوپ صریحی ذکر نشود (و فقط گزینه '-o loop' داده شود)، آنگاه mount سعی میکند یک دستگاه لوپ استفادهنشده را یافته و از آن استفاده کند، برای مثال:
mount /tmp/disk.img /mnt -o loop
دستور mount در صورتی که نوع سیستم پرونده مشخص نشده باشد یا برای libblkid شناختهشده باشد، به طور خودکار یک دستگاه لوپ از یک پرونده معمولی ایجاد میکند، برای مثال:
mount /tmp/disk.img /mnt
mount -t ext4 /tmp/disk.img /mnt
این نوع اتصال سه گزینه به نامهای loop، offset و sizelimit را میشناسد که در واقع گزینههای متعلق به losetup(8) هستند. (این گزینهها را میتوان علاوه بر گزینههای خاص سیستم پرونده به کار برد.)
از لینوکس 2.6.25، تخریب خودکار دستگاههای لوپ پشتیبانی میشود، به این معنی که هر دستگاه لوپی که توسط mount تخصیص داده شود، مستقل از /etc/mtab توسط umount آزاد خواهد شد.
شما همچنین میتوانید یک دستگاه لوپ را به صورت دستی با استفاده از losetup -d یا umount -d آزاد کنید.
از نسخه util-linux v2.29، اگر همان پرونده پشتیبان قبلاً برای یک دستگاه لوپ با همان مقدار offset و sizelimit استفاده شده باشد، دستور mount به جای راهاندازی یک دستگاه جدید، از همان دستگاه لوپ مجدداً استفاده میکند. این امر برای جلوگیری از آسیب دیدن سیستم پرونده ضروری است.
وضعیت خروج (EXIT STATUS)
دستور mount مقادیر وضعیت خروج زیر را بازمیگرداند (بیتها میتوانند با یکدیگر OR شوند):
0
1
2
4
8
16
32
64
دستور mount -a مقادیر 0 (همه موفق)، 32 (همه ناموفق) یا 64 (برخی ناموفق، برخی موفق) را بازمیگرداند.
126
کمککنندههای خارجی (EXTERNAL HELPERS)
نحو برنامههای کمکی خارجی اتصال به صورت زیر است:
/sbin/mount.suffix spec dir [-sfnv] [-N namespace] [-o options] [-t type.subtype]
که در آن suffix نوع سیستم پرونده است و گزینههای -sfnvoN همان معنای گزینههای عادی اتصال را دارند. گزینه -t برای سیستمهای پروندهای با پشتیبانی از زیرنوع به کار میرود (برای مثال /sbin/mount.fuse -t fuse.sshfs).
دستور mount گزینههای اتصال unbindable، runbindable، private، rprivate، slave، rslave، shared، rshared، auto، noauto، comment، x-*، loop، offset و sizelimit را به برنامههای کمکی mount.<suffix> ارسال نمیکند. تمام گزینههای دیگر در یک فهرست جداشده با کاما به عنوان آرگومان گزینه -o استفاده میشوند.
مقدار وضعیت خروج برنامه کمکی به عنوان وضعیت خروج mount(8) بازگردانده میشود. در صورتی که برنامه کمکی پیدا شود اما فراخوانی ()execl با شکست مواجه گردد، مقدار 126 بازگردانده میشود.
متغیرهای محیطی (ENVIRONMENT)
LIBMOUNT_FORCE_MOUNT2={always|never|auto}
LIBMOUNT_FSTAB=<path>
LIBMOUNT_DEBUG=all
LIBBLKID_DEBUG=all
LOOPDEV_DEBUG=all
فایلها (FILES)
همچنین بخش «فایلهای /etc/fstab و /etc/mtab و /proc/mounts» را در بالا ببینید.
/etc/fstab
/run/mount
/etc/mtab
/etc/mtab~
/etc/mtab.tmp
/etc/filesystems
تاریخچه (HISTORY)
یک دستور mount در نسخه ۵ سیستمعامل یونیکس AT&T وجود داشت.
اشکالات (BUGS)
این احتمال وجود دارد که یک سیستم پرونده آسیبدیده موجب خرابی (crash) سیستم شود.
برخی از سیستمهای پرونده لینوکس از -o sync و -o dirsync پشتیبانی نمیکنند (سیستمهای پرونده ext2، ext3، ext4، fat و vfat هنگامی که با گزینه sync متصل شوند، از بهروزرسانیهای همگام پشتیبانی میکنند).
گزینه -o remount ممکن است قادر به تغییر پارامترهای اتصال نباشد (برای مثال، تمام پارامترهای خاص ext2fs به جز sb با remount قابل تغییر هستند، اما نمیتوانید gid یا umask را برای fatfs تغییر دهید).
این احتمال وجود دارد که پروندههای /etc/mtab و /proc/mounts در سیستمهای دارای پرونده عادی mtab با هم تطابق نداشته باشند. پرونده اول تنها بر اساس گزینههای دستور mount است، اما محتوای پرونده دوم به هسته و سایر تنظیمات نیز بستگی دارد (مثلاً در یک سرور دوردست NFS). این دلیل دیگری برای جایگزینی پرونده mtab با پیوند نمادین به /proc/mounts است.
بررسی پروندهها در سیستمهای پرونده NFS که با توصیفگر پرونده ارجاع داده شدهاند ممکن است به دلیل عدم بررسی سازگاری در هسته حتی در صورت استفاده از گزینه noac به نتایج ناسازگار منجر شود.
گزینه loop همراه با گزینههای offset یا sizelimit ممکن است در هستههای قدیمیتر در صورتی که دستور mount نتواند پیکربندی صحیح اندازه دستگاه بلوکی را تایید کند با شکست مواجه شود. این وضعیت را میتوان با استفاده دستی از دستور losetup(8) قبل از فراخوانی mount حل کرد.
نویسندگان (AUTHORS)
Karel Zak <kzak@redhat.com>
همچنین ببینید (SEE ALSO)
mount(2), umount(2), filesystems(5), fstab(5), nfs(5), xfs(5), mount_namespaces(7), xattr(7), e2label(8), findmnt(8), losetup(8), lsblk(8), mke2fs(8), mountd(8), nfsd(8), swapon(8), tune2fs(8), umount(8), xfs_admin(8)
گزارش باگها (REPORTING BUGS)
برای گزارش باگها از سامانه پیگیری مشکلات استفاده کنید: پیگیری مشکلات https://github.com/util-linux/util-linux/issues.
در دسترس بودن (AVAILABILITY)
دستور mount بخشی از بسته util-linux است که میتواند از پیوند زیر دریافت شود: آرشیو کرنل لینوکس https://www.kernel.org/pub/linux/utils/util-linux.
| مه ۲۰۲۵ | util-linux |