mfsexports.cfg(5) This is part of MooseFS mfsexports.cfg(5)

mfsexports.cfg - کنترل دسترسی MooseFS برای کلاینت‌های mfsmount

پروندهٔ mfsexports.cfg حاوی فهرست کنترل دسترسی MooseFS برای کلاینت‌های mfsmount است.

نحو به این صورت است:

خطوطی که با نویسهٔ # شروع می‌شوند به عنوان توضیح نادیده گرفته می‌شوند.

ADDRESS می‌تواند به چندین شکل مشخص شود:

*	all addresses
n.n.n.n	single IP address
n.n.n.n/b	IP class specified by network address and number of significant bits
n.n.n.n/m.m.m.m	IP class specified by network address and mask
f.f.f.f-t.t.t.t	IP range specified by from-to addresses (inclusive)

DIRECTORY می‌تواند / یا مسیری نسبت به ریشهٔ MooseFS باشد؛ مقدار ویژهٔ . به معنای فایل‌سیستم همراه MFSMETA است.

فهرست OPTIONS:

اکسپورت درخت در حالت فقط‌خواندنی؛ این مقدار پیش‌فرض است
اکسپورت درخت در حالت خواندن-نوشتن
امکان اتصال (mount) هر زیرشاخه از دایرکتوری مشخص‌شده را می‌دهد (مشابه با NFS)
امکان اتصال مجدد کلاینت احراز هویت‌شده از هر نشانی IP را فراهم می‌سازد (پیش‌فرض، بررسی نشانی IP در هنگام اتصال مجدد است)
غیرفعال کردن بررسی دسترسی گروهی در سطح mfsmaster (همچنان در سطح mfsmount انجام می‌شود) - در این حالت مجوزهای "group" و "other" به صورت منطقی جمع (OR) می‌شوند؛ برای کارکرد گروه‌های ثانویه (supplementary groups) لازم است (mfsmaster تنها اطلاعات گروه اصلی کاربر را دریافت می‌کند)
مجوزهای مدیریتی:

تغییر مقادیر سهمیه (quota)

مدیریت کلاس‌های ذخیره‌سازی - افزودن، حذف، ویرایش

مدیریت الگوها - افزودن، حذف

استفاده از کلاس‌های ذخیره‌سازی با پرچم admin (تنظیم، بازنویسی)

دستکاری پرچم‌های UNDELETABLE، APPENDONLY و IMMUTABLE در اشیای فایل‌سیستم

دسترسی‌های root (با شناسه uid=0) را به کاربر و گروه مشخص‌شده نگاشت می‌کند (مشابه با گزینهٔ maproot در اتصالات NFS)؛ USER و GROUP می‌توانند به صورت نام یا شناسه عددی مشخص شوند؛ اگر گروهی مشخص نشود، از گروه اصلی USER استفاده خواهد شد. نام‌ها در سمت mfsmaster تطبیق داده و شناسایی می‌شوند (یادداشت زیر را ببینید).
مشابه مورد بالا، اما دسترسی‌های تمام کاربران غیرممتاز (با شناسه uid!=0) را به کاربر و گروه مشخص‌شده نگاشت می‌کند (یادداشت‌های زیر را ببینید).
این umask با umask کاربر جمع منطقی (OR) شده و umask حاصل در این نقطهٔ اتصال استفاده می‌شود
اگر این گزینه تعریف نشود، کاربر می‌تواند هر کلاس ذخیره‌سازی را در این نقطه اتصال تنظیم کند؛ در صورت تعریف، تنها کلاس‌های ذخیره‌سازی متعلق به گروه‌های فهرست‌شده قابل تنظیم خواهند بود؛ برای تعریف بدون گروه (کاربر نتواند هیچ کلاس ذخیره‌سازی تنظیم کند) از علامت '-' (منها) استفاده کنید؛ برای توضیح دربارهٔ نحوهٔ افزودن کلاس ذخیره‌سازی به گروه، mfsscadmin(1) را ببینید؛ برای توضیحات دقیق‌تر، بخش گروه‌های کلاس ذخیره‌سازی (STORAGE CLASS GROUPS) را ببینید
نیاز به احراز هویت با گذرواژه برای دسترسی به منبع مشخص‌شده
رد کردن دسترسی از کلاینت‌های قدیمی‌تر از نسخهٔ مشخص‌شده
تعیین بازه‌ای که مدت نگهداری سطل زباله می‌تواند توسط کاربران تنظیم شود
گزینه‌های منسوخ‌شده (عملکردی مشابه موارد بالا دارند)
اجازه ندادن به کلاینت برای انجام عملیات‌های مشخص‌شده

گزینه‌های پیش‌فرض عبارتند از: ro, maproot=999:999, mintrashretention=0, maxtrashretention=4294967295.

توجه! مقدار پیش‌فرض maxtrashretention توسط کاربر قابل تنظیم نیست؛ بنابراین در صورتی که مقداری تنظیم نشود، می‌توان آن را نزدیک به بی‌نهایت در نظر گرفت، اما در صورت تنظیم، بیشینهٔ آن ۶۵۵۳۵ ساعت (~۳۹۰ هفته) است.

نام‌های USER و GROUP (اگر با شماره صریح uid/gid تعیین نشده باشند) روی میزبان mfsmaster تفکیک و حل می‌شوند.

مقدار TDUR (منسوخ) می‌تواند به عنوان یک عدد بدون واحد زمانی (تعداد ثانیه‌ها) یا ترکیبی از اعداد با واحدهای زمانی مشخص شود. واحدهای زمانی عبارتند از: W، D، H، M، S. ترتیب مهم است - واحدهای زمانی با اهمیت کمتر نمی‌توانند قبل از واحدهای با اهمیت بیشتر تعریف شوند.

مقدار TIME می‌تواند به عنوان تعداد ساعت (عدد صحیح) یا به صورت یک دوره زمانی در یکی از دو قالب ممکن مشخص شود: قالب اول: #.#T که در آن T یکی از مقادیر زیر است: h برای ساعت، d برای روز یا w برای هفته؛ کسرهای کوچک‌ترین واحد به یک مقدار صحیح گرد می‌شوند؛ قالب دوم: #w#d#h که در آن هر تعداد از تعاریف می‌تواند حذف شود، اما تعاریف باقی‌مانده باید مرتب باشند (بنابراین #w#h همچنان یک تعریف معتبر است، اما #h#w معتبر نیست)؛ بازه‌ها: h از ۰ تا ۲۳، d از ۰ تا ۶، w نامحدود است و اولین تعریف نیز همیشه نامحدود است (یعنی برای #d#h مقدار d نامحدود خواهد بود).

واحدهای زمانی/دوره‌ها به حروف بزرگ و کوچک حساس نیستند (case insensitive).

گزینهٔ mapall در MooseFS به شیوه‌ای متفاوت از NFS عمل می‌کند، زیرا MooseFS از گزینهٔ "default_permissions" در FUSE استفاده می‌کند. هنگامی که گزینهٔ mapall استفاده می‌شود، کاربران تمام اشیایی را که شناسه uid آن‌ها برابر با uid نگاشت‌شده است متعلق به خود و بقیه را به عنوان اشیای root می‌بینند. به طور مشابه، اشیای با gid برابر با gid نگاشت‌شده به عنوان اشیایی با گروه اصلی کاربر جاری و سایر اشیا به عنوان اشیای متعلق به گروه 0 (معمولاً wheel) دیده می‌شوند. با تنظیم گزینهٔ mapall، کش ویژگی‌ها (attribute cache) در هسته همیشه خاموش است.

گزینهٔ disable می‌تواند چندین پارامتر (عملیات‌های غیرفعال‌شونده) را به دو روش دریافت کند: به صورت فهرستی جداشده با دو نقطه (:) یا با تکرار مکرر گزینه. فهرست عملیاتی که می‌توانند غیرفعال شوند:

chown        - don't allow the client to perform the chown operation
chmod        - don't allow the client to perform the chmod operation
symlink      - don't allow the client to create symbolic links
mkfifo       - don't allow the client to create FIFOs
mkdev        - don't allow the client to create devices
mksock       - don't allow the client to create sockets
mkdir        - don't allow the client to create directories
unlink       - don't allow the client to remove non directory objects (will also deny move/rename operation if target inode already exists!)
rmdir        - don't allow the client to remove directories (will also deny move/rename operation if target inode already exists!)
rename       - don't allow the client to change inodes (files, directories) names
move         - don't allow the client to move inodes (files, directories) to another path
link         - don't allow the client to create hard links
create       - don't allow the client to create new files
readdir      - don't allow the client to list directories ('ls' command will not work)
read         - don't allow the client to read from files
write        - don't allow the client to write to files
truncate     - don't allow the client to shorten the length of a file with truncate command
setlength    - don't allow the client to increase the length of a file with truncate command
appendchunks - don't allow the client to add chunks from one file to another (mfsappendchunks)
snapshot     - don't allow the client to create snapshots
settrash     - don't allow the client to change trash retention time
setsclass    - don't allow the client to set storage classes
seteattr     - don't allow the client to set mfs extra attributes
setxattr     - don't allow the client to set XATTRs
setfacl      - don't allow the client to set ACLs

ممکن است مدیر سیستم به دلایل امنیتی نخواهد کاربران MooseFS بتوانند هر کلاس ذخیره‌سازی (Storage Class) دلخواهی را به داده‌ها اعمال کنند. از این رو، MooseFS روشی را برای مجاز کردن استفاده از تنها کلاس‌های ذخیره‌سازی مشخص در یک نقطهٔ اتصال ارائه می‌دهد.

ابتدا باید کلاس‌های ذخیره‌سازی انتخاب‌شده به یکی از ۱۶ گروه کلاس ذخیره‌سازی (شماره‌گذاری‌شده از ۰ تا ۱۵) اختصاص داده شوند. این کار هنگام ایجاد یا تغییر یک کلاس ذخیره‌سازی با استفاده از ابزار mfsscadmin انجام می‌شود (mfsscadmin(1) را ببینید). پس از تعریف مناسب گروه، هرگاه گزینهٔ sclassgroups در تعریف اکسپورت نقطهٔ اتصال استفاده شود، کاربری که از این نقطهٔ اتصال اکسپورت‌شده استفاده می‌کند تنها می‌تواند هنگام استفاده از ابزار mfssclass، کلاس‌های ذخیره‌سازی گروه تعریف‌شده را اعمال (تنظیم) کند.

مثال: اگر چهار کلاس ذخیره‌سازی مختلف در کلاستر تعریف شده باشد، دو تا از آن‌ها به گروه 0 و دو تا به گروه 1 اختصاص یافته باشند، و اکسپورت نقطهٔ اتصال فقط اجازهٔ استفاده از کلاس‌های گروه 1 را بدهد، کاربران تنها قادر به تنظیم دو کلاسی خواهند بود که به گروه 1 اختصاص دارند؛ تلاش برای تنظیم کلاس ذخیره‌سازی متعلق به گروه 0 منجر به خطا شده و کلاس فایل تغییر نخواهد کرد. این موضوع قاعدهٔ توارث کلاس ذخیره‌سازی را تحت تأثیر قرار نمی‌دهد؛ به این معنی که اگر کاربری فایلی جدید در دایرکتوری متعلق به یک کلاس در گروه 0 ایجاد کند، این فایل متعلق به همان کلاس در گروه 0 خواهد بود. اما اگر کاربر پس از آن کلاس ذخیره‌سازی فایل را به یکی از کلاس‌های مجاز (از گروه 1) تغییر دهد، دیگر نمی‌تواند آن را به کلاس ذخیره‌سازی اصلی بازگرداند، زیرا آن کلاس متعلق به گروه "ممنوعهٔ" 0 است.

مهم! گروه پیش‌فرض کلاس ذخیره‌سازی 0 است، مگر اینکه در هنگام ایجاد یا تغییر کلاس ذخیره‌سازی صراحتاً گروه دیگری تعیین شود؛ بنابراین به منظور محدود کردن دسترسی کاربران به کلاس‌های ذخیره‌سازی، بهتر است از شماره گروه‌های بزرگتر از ۰ استفاده شود.

سیستم‌های موروثی (Legacy systems): تا نسخهٔ 4.56.6 MooseFS، سازوکار گروه‌های کلاس ذخیره‌سازی وجود نداشت. در عوض، دو گزینهٔ mingoal و maxgoal وجود داشتند که از نسخه‌های قبلی MooseFS به ارث رسیده بودند. اگر هر یک از آن‌ها تنظیم می‌شد، کاربر فقط مجاز به استفاده از کلاس‌های ذخیره‌سازی موروثی (کلاس‌هایی با شناسه‌های ۱ تا ۹، به نام "1" تا "9"، با تعاریف KEEP از *1 تا *9) با نامی نه کمتر از mingoal و نه بیشتر از maxgoal به علاوه هر کلاس تعریف‌شده توسط مدیر (شناسه بزرگتر از ۹) بود. برای شبیه‌سازی این رفتار در صورت ارتقا از نسخه‌ای که هنوز این کلاس‌ها را داشت و همچنین از mingoal و maxgoal در پیکربندی استفاده می‌کرد، سیستم آن کلاس‌های موروثی "1" تا "9" را به ترتیب به گروه‌های ۱ تا ۹ اختصاص می‌دهد و هر عبارت mingoal و maxgoal را به عبارت مناسب sclassgroups تبدیل می‌کند. مثال: اگر mingoal روی 3 و maxgoal روی 5 تنظیم شود، sclassgroups به صورت 0,3,4,5 تنظیم خواهد شد - 0 برای اینکه کاربران بتوانند از کلاس‌های تعریف‌شده توسط مدیر استفاده کنند، 3,4,5 برای اینکه امکان استفاده از کلاس‌های موروثی "3"، "4" و "5" فراهم شود. تنظیمات قدیمی نباید استفاده شوند؛ مدیران سیستم در عوض باید گروه‌های کلاس ذخیره‌سازی مورد نظر خود را تعریف کرده و صراحتاً از گزینهٔ sclassgroups استفاده کنند.

*                    /       ro
192.168.1.0/24       /       rw
192.168.1.0/24       /       rw,alldirs,maproot=0,password=passcode
10.0.0.0-10.0.0.5    /test   rw,maproot=nobody,password=test
10.1.0.0/255.255.0.0 /public rw,mapall=1000:1000
10.2.0.0/16          /       rw,alldirs,maproot=0,mintrashretention=2d12h,maxtrashretention=2w
192.168.1.0/24       /       rw,disable=unlink:rmdir:truncate
192.168.1.0/24       /       rw,disable=unlink,disable=rmdir,disable=truncate

گزارش اشکالات به <bugs@moosefs.com>.

Copyright (C) 2026 Jakub Kruszona-Zawadzki, Saglabs SA

This file is part of MooseFS.

MooseFS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2 (only).

MooseFS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, see https://www.gnu.org/licenses.

mfsmaster(8), mfsmaster.cfg(5)

May 2026 MooseFS 4.59.2-1