fuse(8) System Manager's Manual fuse(8) نام (NAME) mount.fuse - ابزار سوار کردن فایل سیستم‌های FUSE توضیحات (DESCRIPTION) سامانه FUSE (کوته‌نوشت Filesystem in Userspace یا فایل‌سیستم در فضای کاربری) یک رابط ساده برای برنامه‌های فضای کاربری است تا یک فایل‌سیستم مجازی را به هسته لینوکس صادر کنند. همچنین FUSE در پی فراهم کردن روشی امن برای کاربران غیرممتاز است تا پیاده‌سازی‌های فایل‌سیستم اختصاصی خود را بسازند و سوار کنند. پیکربندی (CONFIGURATION) برخی از گزینه‌های مربوط به سیاست سوار کردن را می‌توان در فایل /etc/fuse.conf تنظیم کرد. در حال حاضر این گزینه‌ها عبارتند از: mount_max = NNN حداکثر تعداد سوار کردن‌های FUSE مجاز برای کاربران غیرریشه را تعیین می‌کند. مقدار پیش‌فرض 1000 است. user_allow_other به کاربران غیرریشه اجازه می‌دهد گزینه‌های سوار کردن allow_other یا allow_root را مشخص کنند (پایین‌تر را ببینید). گزینه‌ها (OPTIONS) بیشتر گزینه‌های عمومی سوار کردن که در mount شرح داده شده‌اند پشتیبانی می‌شوند (ro، rw، suid، nosuid، dev، nodev، exec، noexec، atime، noatime، sync، async، dirsync). فایل‌سیستم‌ها به‌طور پیش‌فرض با nodev,nosuid سوار می‌شوند، که تنها توسط یک کاربر ممتاز قابل لغو و تغییر است. گزینه‌های عمومی سوار کردن (General mount options): این‌ها گزینه‌های اختصاصی سوار کردن FUSE هستند که می‌توانند برای همه فایل‌سیستم‌ها مشخص شوند: default_permissions به‌طور پیش‌فرض FUSE مجوزهای دسترسی به فایل را بررسی نمی‌کند؛ فایل‌سیستم در پیاده‌سازی سیاست دسترسی خود آزاد است یا می‌تواند آن را به سازوکار زیربنایی دسترسی به فایل واگذار کند (برای مثال در مورد فایل‌سیستم‌های شبکه‌ای). این گزینه بررسی مجوزها را فعال می‌کند و دسترسی را بر اساس حالت فایل محدود می‌سازد. این گزینه معمولاً به همراه گزینه سوار کردن allow_other مفید است. allow_other این گزینه تدبیر امنیتی محدودکننده دسترسی فایل به کاربری که فایل‌سیستم را سوار کرده است لغو می‌کند. بنابراین همه کاربران (شامل ریشه) می‌توانند به فایل‌ها دسترسی داشته باشند. این گزینه به‌طور پیش‌فرض تنها برای ریشه مجاز است، اما این محدودیت را می‌توان با یک گزینه پیکربندی که در بخش قبل شرح داده شد برطرف کرد. allow_root این گزینه شبیه به allow_other است اما دسترسی فایل به کاربر سوارکننده فایل‌سیستم و ریشه محدود می‌شود. این گزینه و allow_other مانعة‌الجمع هستند. kernel_cache این گزینه تخلیه حافظه پنهان محتویات فایل در هر فراخوانی open(2) را غیرفعال می‌کند. این گزینه تنها باید روی فایل‌سیستم‌هایی فعال شود که در آن‌ها داده‌های فایل هرگز از خارج تغییر نمی‌کنند (نه از طریق فایل‌سیستم سوارشده FUSE). بنابراین برای فایل‌سیستم‌های شبکه‌ای و سایر فایل‌سیستم‌های واسطه مناسب نیست. نکته: اگر این گزینه (و همچنین direct_io) مشخص نشده باشد، داده‌ها همچنان پس از open(2) در حافظه پنهان ذخیره می‌شوند، بنابراین یک فراخوانی سیستمی read(2) همیشه عملیات خواندن جدیدی را آغاز نمی‌کند. auto_cache این گزینه تخلیه خودکار حافظه پنهان داده‌ها را در هنگام open(2) فعال می‌کند. حافظه پنهان تنها در صورتی تخلیه می‌شود که زمان تغییر یا اندازه فایل تغییر کرده باشد. large_read درخواست‌های خواندن بزرگ صادر می‌کند. این کار می‌تواند کارایی را برای برخی فایل‌سیستم‌ها بهبود بخشد، اما می‌تواند کارایی را کاهش نیز بدهد. این گزینه تنها در هسته‌های سری 2.4.X مفید است، زیرا در هسته‌های سری 2.6 اندازه درخواست‌ها به‌طور خودکار برای کارایی بهینه تعیین می‌شود. direct_io این گزینه استفاده از حافظه پنهان صفحه (page cache، حافظه پنهان محتوای فایل) در هسته را برای این فایل‌سیستم غیرفعال می‌کند. این امر چندین تأثیر دارد: 1. هر فراخوانی سیستمی read(2) یا write(2) یک یا چند عملیات خواندن یا نوشتن را آغاز می‌کند، و داده‌ها در هسته در حافظه پنهان ذخیره نخواهند شد. 2. مقدار بازگشتی فراخوانی‌های سیستمی read() و write() با مقادیر بازگشتی عملیات خواندن و نوشتن مطابقت خواهد داشت. این ویژگی برای مثال در حالتی که اندازه فایل از قبل مشخص نیست (پیش از خواندن آن) مفید است. max_read=N با این گزینه می‌توان حداکثر اندازه عملیات خواندن را تعیین کرد. مقدار پیش‌فرض نامحدود است. توجه داشته باشید که اندازه درخواست‌های خواندن در هر صورت به ۳۲ صفحه (که در i386 برابر ۱۲۸ کیلوبایت است) محدود می‌شود. max_readahead=N حداکثر تعداد بایت‌ها برای پیش‌خوانی (read-ahead) را تعیین می‌کند. مقدار پیش‌فرض توسط هسته تعیین می‌شود. در linux-2.6.22 یا پیش از آن، این مقدار ۱۳۱۰۷۲ (۱۲۸ کیلوبایت) است. max_write=N حداکثر تعداد بایت‌ها در یک عملیات نوشتن منفرد را تعیین می‌کند. مقدار پیش‌فرض ۱۲۸ کیلوبایت است. توجه داشته باشید که به دلیل محدودیت‌های گوناگون، اندازه درخواست‌های نوشتن می‌تواند بسیار کوچک‌تر (۴ کیلوبایت) باشد. این محدودیت در آینده برداشته خواهد شد. async_read عملیات خواندن را به‌صورت ناهمگام انجام می‌دهد. این حالت پیش‌فرض است. sync_read تمام عملیات خواندن (حتی پیش‌خوانی) را به‌صورت همگام انجام می‌دهد. hard_remove رفتار پیش‌فرض این است که اگر فایلی باز باشد و حذف شود، نام آن به یک فایل پنهان (.fuse_hiddenXXX) تغییر می‌یابد و تنها زمانی که فایل در نهایت رها و بسته شود حذف می‌گردد. این کار پیاده‌سازی فایل‌سیستم را از نیاز به مدیریت این مشکل معاف می‌کند. این گزینه رفتار پنهان‌سازی را غیرفعال می‌کند و فایل‌ها بلافاصله در عملیات unlink (یا در عملیات تغییر نامی که روی یک فایل موجود بازنویسی انجام می‌دهد) حذف می‌شوند. توصیه می‌شود از گزینه hard_remove استفاده نکنید. هنگام تنظیم hard_remove، توابع libc زیر روی فایل‌های پیوندزدوده‌شده (unlinked) با شکست مواجه می‌شوند (و کد خطای errno معادل ENOENT برمی‌گردانند): read(2)، write(2)، fsync(2)، close(2)، f*xattr(2)، ftruncate(2)، fstat(2)، fchmod(2)، fchown(2) debug چاپ اطلاعات اشکال‌زدایی توسط کتابخانه را فعال می‌کند. fsname=NAME منبع فایل‌سیستم (فیلد اول در /etc/mtab) را تعیین می‌کند. مقدار پیش‌فرض نام برنامه سوار کردن است. subtype=TYPE نوع فایل‌سیستم (فیلد سوم در /etc/mtab) را تعیین می‌کند. مقدار پیش‌فرض نام برنامه سوار کردن است. اگر هسته از آن پشتیبانی کند، /etc/mtab و /proc/mounts نوع فایل‌سیستم را به‌صورت fuse.TYPE نشان خواهند داد. اگر هسته از زیرنوع‌ها پشتیبانی نکند، فیلد منبع به‌صورت TYPE#NAME خواهد بود، یا اگر گزینه fsname مشخص نشده باشد، فقط TYPE خواهد بود. use_ino فیلد st_ino را در توابع هسته getattr() و fill_dir() رعایت می‌کند. این مقدار برای پر کردن فیلد st_ino در توابع stat(2)، lstat(2)، fstat(2) و فیلد d_ino در تابع readdir(2) استفاده می‌شود. فایل‌سیستم مجبور نیست یکتا بودن را تضمین کند، اما برخی برنامه‌ها به یکتا بودن این مقدار برای کل فایل‌سیستم وابسته هستند. readdir_ino اگر گزینه use_ino داده نشده باشد، باز هم تلاش می‌کند تا فیلد d_ino را در readdir(2) پر کند. اگر نام قبلاً جستجو شده باشد و هنوز در حافظه پنهان باشد، شماره inode یافت‌شده در آنجا استفاده خواهد شد. در غیر این صورت روی -1 تنظیم می‌شود. اگر گزینه use_ino داده شود، این گزینه نادیده گرفته می‌شود. nonempty سوار کردن روی یک فایل یا دایرکتوری غیرخالی را مجاز می‌سازد. به‌طور پیش‌فرض این‌گونه سوار کردن‌ها برای جلوگیری از پوشانده شدن تصادفی داده‌ها (که برای مثال می‌تواند مانع پشتیبان‌گیری خودکار شود) رد می‌شوند. umask=M بیت‌های مجوز در st_mode تعیین‌شده توسط فایل‌سیستم را بازنویسی می‌کند. بیت‌های مجوز حاصل، مواردی هستند که در مقدار umask داده‌شده وجود ندارند. این مقدار در مبنای هشت ارائه می‌شود. uid=N فیلد st_uid تعیین‌شده توسط فایل‌سیستم را بازنویسی می‌کند (N عددی است). gid=N فیلد st_gid تعیین‌شده توسط فایل‌سیستم را بازنویسی می‌کند (N عددی است). blkdev یک فایل‌سیستم مبتنی بر دستگاه بلوکی (block device) را سوار می‌کند. این یک گزینه با امتیاز ویژه است. دستگاه باید با گزینه fsname=NAME مشخص شود. entry_timeout=T مهلت زمانی (بر حسب ثانیه) برای نگهداری نتایج جستجوی نام در حافظه پنهان. مقدار پیش‌فرض 1.0 ثانیه است. برای تمام گزینه‌های مهلت زمانی، مشخص کردن کسری از ثانیه نیز ممکن است (مانند entry_timeout=2.8). negative_timeout=T مهلت زمانی (بر حسب ثانیه) برای نگهداری جستجوی منفی در حافظه پنهان. این بدان معناست که اگر فایلی وجود نداشت (جستجو ENOENT برگرداند)، جستجو تنها پس از این مهلت تکرار خواهد شد و تا آن زمان فرض می‌شود فایل/دایرکتوری وجود ندارد. مقدار پیش‌فرض 0.0 ثانیه است، به این معنی که ذخیره جستجوهای منفی در حافظه پنهان غیرفعال است. attr_timeout=T مهلت زمانی (بر حسب ثانیه) برای نگهداری ویژگی‌های فایل/دایرکتوری در حافظه پنهان. مقدار پیش‌فرض 1.0 ثانیه است. ac_attr_timeout=T مهلت زمانی (بر حسب ثانیه) برای نگهداری ویژگی‌های فایل در حافظه پنهان، با هدف بررسی اینکه آیا auto_cache باید داده‌های فایل را هنگام باز کردن تخلیه کند یا خیر. مقدار پیش‌فرض همان مقدار attr_timeout است. intr اجازه می‌دهد تا درخواست‌ها قطع شوند. اگر فایل‌سیستم از وقفه درخواست‌ها پشتیبانی نکند، فعال کردن این گزینه ممکن است به رفتارهای غیرمنتظره منجر شود. intr_signal=NUM مشخص می‌کند که هنگام قطع شدن یک درخواست، کدام شماره سیگنال به فایل‌سیستم ارسال شود. مقدار پیش‌فرض به‌صورت پیش‌فرض روی USR1 تعیین شده است. modules=M1[:M2...] ماژول‌ها را به پشته فایل‌سیستم اضافه می‌کند. ماژول‌ها به همان ترتیبی که مشخص شده‌اند در پشته قرار می‌گیرند، به‌طوری که فایل‌سیستم اصلی در پایین پشته قرار می‌گیرد. ماژول‌های FUSE (پشته‌سازی) (FUSE MODULES (STACKING)) ماژول‌ها پشتیبانی از پشته‌سازی فایل‌سیستم را برای رابط برنامه‌نویسی سطح بالا (API) فراهم می‌کنند. ماژول‌های فایل‌سیستم می‌توانند درون libfuse ساخته شوند یا از یک شیء اشتراکی (shared object) بارگیری گردند. iconv تبدیل مجموعه نویسه‌های نام فایل را انجام می‌دهد. گزینه‌ها عبارتند از: from_code=CHARSET مجموعه نویسه‌های مبدأ برای تبدیل (برای فهرستی از مقادیر ممکن دستور iconv -l را ببینید). مقدار پیش‌فرض UTF-8 است. to_code=CHARSET مجموعه نویسه‌های مقصد برای تبدیل. مقدار پیش‌فرض بر اساس محلی‌سازی (locale) جاری تعیین می‌شود. subdir دایرکتوری داده‌شده را به ابتدای هر مسیر اضافه می‌کند. گزینه‌ها عبارتند از: subdir=DIR دایرکتوری برای اضافه شدن به ابتدای همه مسیرها. این گزینه الزامی است. rellinks پیوندهای نمادین مطلق را به نسبی تبدیل می‌کند. norellinks پیوندهای نمادین مطلق را به نسبی تبدیل نمی‌کند. این حالت پیش‌فرض است. امنیت (SECURITY) برنامه fusermount با ویژگی set-user-gid برای گروه fuse نصب می‌شود. این کار برای آن انجام می‌گیرد تا کاربران عضو گروه fuse بتوانند پیاده‌سازی‌های فایل‌سیستم خود را سوار کنند. با این حال، برای جلوگیری از انجام کارهای مخرب توسط کاربران نابکار باید محدودیت‌هایی وجود داشته باشد. در حال حاضر این محدودیت‌ها عبارتند از: 1. کاربر تنها می‌تواند روی نقطه سوار کردنی عمل سوار کردن را انجام دهد که مجوز نوشتن روی آن را داشته باشد. 2. نقطه سوار کردن نباید یک دایرکتوری چسبان (sticky directory) باشد که متعلق به کاربر نیست (مانند حالتی که /tmp معمولاً دارد). 3. هیچ کاربر دیگری (شامل ریشه) نتواند به محتویات فایل‌سیستم سوارشده دسترسی پیدا کند. نکته (NOTE) فایل‌سیستم‌های FUSE با استفاده از دستور fusermount(1) جدا می‌شوند (fusermount -u mountpoint). نویسندگان (AUTHORS) نویسنده اصلی FUSE، Miklos Szeredi است. این صفحه راهنما توسط Bastien Roucaries بر اساس فایل README برای توزیع دبیان گنو/لینوکس (Debian GNU/Linux) نوشته شده است (اما دیگران نیز می‌توانند از آن استفاده کنند). همچنین ببینید (SEE ALSO) fusermount(1) mount(8) fuse(8)