| SMB.CONF(5) | File Formats and Conventions | SMB.CONF(5) |
نام (NAME)
smb.conf - فایل پیکربندی مجموعه نرمافزاری سامبا (Samba)
خلاصه دستور (SYNOPSIS)
فایل smb.conf یک فایل پیکربندی برای مجموعه نرمافزاری Samba است. فایل smb.conf شامل اطلاعات پیکربندی زمان اجرای برنامههای Samba است. توضیحات کامل قالب فایل و پارامترهای احتمالی موجود در آن جهت ارجاع در اینجا آورده شده است.
نحوه اعمال تغییرات پیکربندی (HOW CONFIGURATION CHANGES ARE APPLIED)
مجموعه نرمافزاری Samba شامل چندین برنامه مختلف است. برخی از آنها در حالت کلاینت عمل میکنند، و برخی دیگر دیمنهای سرور هستند که سرویسهای مختلفی را به کلاینتهای خود ارائه میدهند. فایل smb.conf به روش زیر پردازش میشود:
برای درخواست از دیمنهای سرور Samba جهت بهروزرسانی و بارگذاری مجدد پیکربندی خود، لطفاً از ابزار کاربردی smbcontrol(1) استفاده کنید.
قالب فایل (FILE FORMAT)
این فایل از بخشها (sections) و پارامترها (parameters) تشکیل شده است. یک بخش با نام بخش درون قلابها (کروشهها) آغاز میشود و تا شروع بخش بعدی ادامه مییابد. بخشها شامل پارامترهایی به شکل زیر هستند:
name = value
این فایل مبتنی بر خط است - به این معنی که هر خطِ پایانیافته با نویسه خط جدید، نشاندهنده یک توضیح، نام یک بخش یا یک پارامتر است.
نامهای بخشها و پارامترها به حروف بزرگ و کوچک حساس نیستند (case-insensitive).
تنها اولین علامت مساوی در یک پارامتر دارای اهمیت است. فاصلههای خالی قبل یا بعد از اولین علامت مساوی نادیده گرفته میشوند. فاصلههای خالی در ابتدا، انتها و داخل نام بخشها و پارامترها بیاهمیت هستند. فاصلههای خالی ابتدا و انتهای مقدار یک پارامتر حذف میشوند. فاصلههای خالی داخلی در مقدار یک پارامتر دقیقاً همانطور که هستند حفظ میشوند.
هر خطی که با نویسه نقطه-ویرگول (“;”) یا هش (“#”) آغاز شود، و همچنین خطوطی که فقط حاوی فاصلههای خالی هستند، نادیده گرفته میشوند.
هر خطی که به “\” ختم شود، طبق روال مرسوم در UNIX در خط بعدی ادامه مییابد.
مقادیر پس از علامت مساوی در پارامترها همگی یا یک رشته متنی هستند (نیازی به علامت نقلقول نیست) یا یک مقدار بولی (boolean)، که میتواند به صورت yes/no ،1/0 یا true/false مشخص شود. حروف بزرگ و کوچک در مقادیر بولی اهمیتی ندارند، اما در مقادیر رشتهای حفظ میشوند. برخی موارد مانند create masks مقادیر عددی هستند.
شرح بخشها (SECTION DESCRIPTIONS)
هر بخش در فایل پیکربندی (به جز بخش [global]) یک منبع به اشتراک گذاشته شده (که به عنوان یک “اشتراک” یا “share” شناخته میشود) را توصیف میکند. نام بخش همان نام منبع اشتراکی است و پارامترهای درون بخش ویژگیهای آن اشتراک را مشخص میکنند.
سه بخش ویژه وجود دارد: [global] ،[homes] و [printers] که در ذیل بخشهای ویژه (special sections) شرح داده شدهاند. نکات زیر برای شرح بخشهای معمولی صدق میکنند.
یک اشتراک متشکل از یک دایرکتوری است که دسترسی به آن فراهم میشود، به همراه شرحی از مجوزهای دسترسی که به کاربر آن سرویس اعطا میگردد. برخی از گزینههای نگهداری و مدیریتی نیز قابل تعیین هستند.
بخشها یا سرویسهای اشتراک فایل هستند (که توسط کلاینت به عنوان امتدادی از سیستمهای فایل محلی خود استفاده میشوند) یا سرویسهای چاپی (که کلاینت برای دسترسی به سرویسهای چاپ روی میزبانی که سرور را اجرا میکند از آنها استفاده میکند).
بخشها ممکن است به عنوان سرویسهای مهمان (guest) تعیین شوند، که در این حالت برای دسترسی به آنها نیازی به گذرواژه نیست. در این حالت از یک حساب مهمان (guest account) مشخصشده در UNIX برای تعیین مجوزهای دسترسی استفاده میشود.
بخشهایی غیر از سرویسهای مهمان برای دسترسی به آنها نیاز به گذرواژه خواهند داشت. کلاینت نام کاربری را ارائه میدهد. از آنجا که کلاینتهای قدیمیتر فقط گذرواژهها را ارسال میکردند و نه نامهای کاربری را، میتوانید با استفاده از گزینه user = در تعریف اشتراک، فهرستی از نامهای کاربری را برای اعتبارسنجی در برابر گذرواژه مشخص کنید. برای کلاینتهای مدرن مانند Windows 95/98/ME/NT/2000، این کار نباید لازم باشد.
مجوزهای دسترسی اعطا شده توسط سرور، توسط مجوزهای دسترسی اعطا شده به کاربر مشخص یا مهمان UNIX از سوی سیستم میزبان محدود (mask) میشوند. سرور دسترسی بیشتری نسبت به آنچه سیستم میزبان اعطا میکند، فراهم نمیسازد.
بخش نمونه زیر یک اشتراک فضای فایل را تعریف میکند. کاربر دسترسی نوشتن به مسیر /home/bar را دارد. دسترسی به این اشتراک از طریق نام اشتراک foo انجام میشود:
[foo] path = /home/bar read only = no
بخش نمونه زیر یک اشتراک چاپی را تعریف میکند. این اشتراک فقطخواندنی است، اما قابل چاپ (printable) میباشد. به این معنی که تنها دسترسی نوشتن مجاز، از طریق فراخوانیهای باز کردن، نوشتن در و بستن یک فایل قرقره چاپ (spool file) است. پارامتر guest ok بدین معنا است که دسترسی به عنوان کاربر مهمان پیشفرض (که در جای دیگری مشخص شده) مجاز خواهد بود:
[aprinter] path = /var/tmp read only = yes printable = yes guest ok = yes
بخشهای ویژه (SPECIAL SECTIONS)
بخش [global]
پارامترهای موجود در این بخش بر کل کارساز (سرور) اعمال میشوند، یا به عنوان مقادیر پیشفرض برای بخشهایی که موارد خاصی را به طور صریح تعریف نکردهاند در نظر گرفته میشوند. برای اطلاعات بیشتر، یادداشتهای موجود در بخش PARAMETERS را ببینید.
بخش [homes]
اگر بخشی با نام [homes] در فایل پیکربندی گنجانده شود، سرویسهایی که کلاینتها را به دایرکتوریهای خانگی (home directories) آنها متصل میکنند میتوانند به صورت بلادرنگ و پویا توسط سرور ایجاد شوند.
هنگام ارسال درخواست اتصال، بخشهای موجود بررسی میشوند. اگر تطابقی یافت شود، از آن استفاده میشود. اگر تطابقی پیدا نشود، نام بخش درخواستی به عنوان نام کاربری در نظر گرفته شده و در فایل گذرواژه محلی جستجو میشود. اگر این نام وجود داشته باشد و گذرواژه درست ارائه شده باشد، با شبیهسازی بخش [homes] یک اشتراک ایجاد میشود.
سپس برخی تغییرات بر روی اشتراک تازهتاسیس اعمال میشود:
اگر تصمیم دارید از خط path = در بخش [homes] خود استفاده کنید، ممکن است استفاده از ماکروی %S مفید باشد. به عنوان مثال:
path = /data/pchome/%S
زمانی کاربرد دارد که دایرکتوریهای خانگی متفاوتی برای PCها نسبت به دسترسی یونیکس (UNIX) داشته باشید.
این یک روش سریع و ساده است تا بدون دردسر و پیچیدگی، به تعداد زیادی از کلاینتها امکان دسترسی به دایرکتوریهای خانگیشان داده شود.
روند مشابهی در صورتی رخ میدهد که نام بخش درخواستی “homes” باشد، با این تفاوت که نام اشتراک به نام کاربر درخواستکننده تغییر نمیکند. این شیوه استفاده از بخش [homes] زمانی که کاربران مختلف به طور مشترک از یک PC کلاینت استفاده میکنند، به خوبی کار میکند.
بخش [homes] میتواند تمامی پارامترهایی را که یک بخش سرویس عادی مشخص میکند در بر داشته باشد، هرچند برخی از آنها کاربردیتر و منطقیتر از بقیه هستند. در ادامه یک بخش [homes] متداول و مناسب آورده شده است:
[homes] read only = no
نکته مهم این است که اگر دسترسی مهمان (guest access) در بخش [homes] مشخص شود، تمام دایرکتوریهای خانگی بدون نیاز به گذرواژه برای همه کلاینتها قابل مشاهده خواهند بود. در حالت بسیار نادری که این امر واقعاً مطلوب باشد، عاقلانه است که دسترسی را نیز به صورت فقطخواندنی (read only) تنظیم کنید.
فلگ browseable برای دایرکتوریهای خانگی خودکار، از فلگ سراسری browseable به ارث برده میشود، نه از فلگ browseable در بخش [homes]. این ویژگی مفید است زیرا بدین معناست که تنظیم browseable = no در بخش [homes]، خودِ اشتراک [homes] را مخفی میکند اما دایرکتوریهای خانگی خودکار را قابل مشاهده نگه میدارد.
بخش [printers]
این بخش عملکردی مشابه [homes] دارد، اما برای چاپگرها (printers).
اگر بخش [printers] در فایل پیکربندی وجود داشته باشد، کاربران میتوانند به هر چاپگری که در فایل printcap میزبان محلی مشخص شده است متصل شوند.
هنگام ایجاد یک درخواست اتصال، بخشهای موجود بررسی میشوند. اگر تطابقی یافت شود، از آن استفاده میشود. اگر تطابقی پیدا نشود اما بخش [homes] وجود داشته باشد، همانطور که در بالا توضیح داده شد عمل میشود. در غیر این صورت، نام بخش درخواستی به عنوان نام چاپگر در نظر گرفته شده و فایل printcap مناسب اسکن میشود تا بررسی گردد آیا نام بخشِ درخواستی، یک نام معتبر برای اشتراک چاپگر است یا خیر. در صورت یافتن تطابق، با شبیهسازی بخش [printers] یک اشتراک چاپگر جدید ایجاد میشود.
سپس چند تغییر بر روی اشتراک تازهتاسیس اعمال میشود:
سرویس [printers] حتماً باید قابل چاپ (printable) باشد - اگر خلاف این را مشخص کنید، سرور از بارگذاری فایل پیکربندی خودداری خواهد کرد.
به طور معمول، مسیر مشخصشده (path) یک دایرکتوری spool با قابلیت نوشتن همگانی (world-writeable) است که بیت sticky bit بر روی آن فعال شده باشد. یک مدخل معمول [printers] به این صورت است:
[printers] path = /var/tmp guest ok = yes printable = yes
تمام نامهای مستعاری (aliases) که در فایل printcap برای یک چاپگر ارائه شدهاند، از نظر سرور نامهای معتبر چاپگر به شمار میروند. اگر زیرسیستم چاپ شما به این شکل کار نمیکند، باید یک pseudo-printcap راهاندازی کنید. این فایلی شامل یک یا چند خط به شکل زیر است:
alias|alias|alias|alias...
هر نام مستعار باید نام چاپگری پذیرفتهشده برای زیرسیستم چاپ شما باشد. در بخش [global]، فایل جدید را به عنوان printcap خود مشخص کنید. سرور تنها نامهای موجود در pseudo-printcap شما را شناسایی خواهد کرد، که البته میتواند شامل هر نام مستعاری باشد که مایلید. همین روش میتواند برای محدود کردن سادهٔ دسترسی به زیرمجموعهای از چاپگرهای محلی شما به کار رود.
به هر حال، یک نام مستعار به عنوان هر مؤلفهای از نخستین مدخل یک رکورد printcap تعریف میشود. رکوردها با خطوط جدید (newlines) از هم جدا میشوند، و مؤلفهها (در صورت وجود بیش از یکی) با علامت خط عمودی (|) از یکدیگر تفکیک میگردند.
نکته
در سیستمهای SYSV که از lpstat برای تشخیص چاپگرهای تعریفشده روی سیستم استفاده میکنند، ممکن است بتوانید از printcap name = lpstat برای دریافت خودکار فهرست چاپگرها استفاده کنید. برای جزئیات بیشتر، گزینه printcap name را ببینید.
اشتراکهای کاربران (USERSHARES)
از نسخهٔ 3.0.23 سامبا (Samba)، قابلیت افزودن، ویرایش و حذف تعاریف اشتراک توسط کاربران غیر ریشه (non-root) اضافه شده است. این قابلیت usershares نام دارد و توسط مجموعهای از پارامترها در بخش [global] فایل smb.conf کنترل میشود. پارامترهای مربوطه عبارتند از:
usershare allow guests
usershare max shares
usershare owner only
usershare path
usershare prefix allow list
usershare prefix deny list
usershare template share
برای اینکه به اعضای گروه یونیکسی foo اجازه دهید اشتراکهای تعریفشده توسط کاربر بسازند، دایرکتوریِ حاوی تعاریف اشتراک را به صورت زیر ایجاد کنید:
تبدیل شدن به کاربر ریشه (root):
mkdir /usr/local/samba/lib/usershares chgrp foo /usr/local/samba/lib/usershares chmod 1770 /usr/local/samba/lib/usershares
سپس پارامترهای
usershare path = /usr/local/samba/lib/usershares usershare max shares = 10 # (یا تعداد اشتراکهای مورد نظر)
را به بخش global در فایل smb.conf خود اضافه نمایید. سپس اعضای گروه foo میتوانند با استفاده از دستورهای زیر، اشتراکهای تعریفشده توسط کاربر را مدیریت کنند.
net usershare add sharename path [comment] [acl] [guest_ok=[y|n]]
net usershare delete sharename
net usershare list wildcard-sharename
net usershare info wildcard-sharename
پارامترها (PARAMETERS)
پارامترها ویژگیهای خاص هر بخش را تعریف میکنند.
برخی پارامترها مختص بخش [global] هستند (مانند security). برخی پارامترها در تمام بخشها قابل استفادهاند (مانند create mask). سایر پارامترها فقط در بخشهای عادی مجاز میباشند. در توضیحات زیر، بخشهای [homes] و [printers] به عنوان بخش عادی در نظر گرفته میشوند. حرف G در پرانتز نشان میدهد که یک پارامتر مختص بخش [global] است. حرف S نشان میدهد که یک پارامتر میتواند در یک بخش خاصِ سرویس مشخص شود. تمام پارامترهای S همچنین میتوانند در بخش [global] نیز تعیین شوند - که در این حالت، رفتار پیشفرض را برای تمام سرویسها تعریف میکنند.
پارامترها در اینجا به ترتیب الفبایی مرتب شدهاند - شاید این چیدمان همیشه کنار هم قرار گرفتن بهترین موارد را رقم نزند، اما دستکم یافتن آنها آسان است! در جایی که مترادفهایی وجود داشته باشد، مترادف ترجیحی توضیح داده شده و سایر موارد به آن ارجاع میدهند.
جایگزینی متغیرها (VARIABLE SUBSTITUTIONS)
بسیاری از رشتههایی که در فایل پیکربندی قابل تنظیم هستند، میتوانند جایگزینی متغیرها را بپذیرند. به عنوان مثال، گزینهٔ “path = /tmp/%u” در صورتی که کاربر با نام کاربری john متصل شود، به صورت “path = /tmp/john” تفسیر میشود.
این جایگزینیها عمدتاً در توضیحات زیر آورده شدهاند، اما برخی جایگزینیهای عمومی وجود دارند که هر جا مرتبط باشند اعمال میشوند. این موارد عبارتند از:
%U
%G
%h
%m
این پارامتر زمانی که سامبا روی درگاه (پورت) 445 گوش میدهد در دسترس نیست، چرا که کلاینتها دیگر این اطلاعات را ارسال نمیکنند. اگر از این ماکرو در یک دستور include روی دامنهای با کنترلکننده دامنهٔ (Domain Controller) سامبا استفاده میکنید، حتماً در بخش [global] مقدار server smb transports = 139 را تنظیم کنید. این کار باعث میشود سامبا روی پورت 445 گوش ندهد و عملکرد include مانند سامبا 2.x به کار خود ادامه دهد.
%L
%M
%R
%d
%a
%I
قبل از نسخهٔ 4.0.0 این مقدار میتوانست شامل آدرسهای IPv6 نگاشتشده به IPv4 باشد، اکنون فقط شامل آدرسهای IPv4 یا IPv6 است.
%J
%i
قبل از نسخهٔ 4.0.0 این مقدار میتوانست شامل آدرسهای IPv6 نگاشتشده به IPv4 باشد، اکنون فقط شامل آدرسهای IPv4 یا IPv6 است.
%j
%T
%t
%D
%w
%$(envvar)
جایگزینیهای زیر تنها برای برخی از گزینههای پیکربندی اعمال میشوند (فقط گزینههایی که هنگام برقراری اتصال استفاده میشوند):
%S
%P
%u
%g
%H
%N
کارهای بسیار خلاقانهای وجود دارد که میتوان با استفاده از این متغیرهای جایگزین و سایر گزینههای smb.conf انجام داد.
تغییر شکل نامها (NAME MANGLING)
سامبا از تغییر شکل نامها (name mangling) پشتیبانی میکند تا کلاینتهای DOS و Windows بتوانند از فایلهایی استفاده کنند که با قالب 8.3 سازگار نیستند. همچنین میتوان آن را طوری تنظیم کرد که بزرگی و کوچکی حروف در نامهای فایل با قالب 8.3 را تنظیم کند.
چندین گزینه وجود دارند که نحوه انجام تغییر شکل نامها را کنترل میکنند، و به جای فهرست شدن جداگانه، در اینجا با هم گروهبندی شدهاند. برای مشاهده مقادیر پیشفرض به خروجی برنامه testparm نگاه کنید.
این گزینهها میتوانند بهطور جداگانه برای هر سرویس تنظیم شوند.
این گزینهها عبارتند از:
case sensitive = yes/no/auto
default case = upper/lower
preserve case = yes/no
short preserve case = yes/no
بهطور پیشفرض، سامبا 3.0 معناشناسی یکسانی با سرور Windows NT دارد، به این معنا که به بزرگی و کوچکی حروف حساس نیست اما حالت حروف را حفظ میکند (case preserving). به عنوان یک حالت خاص برای دایرکتوریهای با تعداد زیادی فایل، اگر گزینههای حالت حروف بهصورت "case sensitive = yes" و "case preserve = no" و "short preserve case = no" تنظیم شوند، آنگاه گزینه "default case" اعمال خواهد شد و تمام نامهای فایل ارسالی از کلاینت را در هنگام دسترسی به این اشتراک تغییر خواهد داد.
پیکربندی مبتنی بر رجیستری (REGISTRY-BASED CONFIGURATION)
با شروع از نگارش 3.2.0 سامبا، قابلیت ذخیره پیکربندی سامبا در رجیستری فراهم شده است. این پیکربندی در کلید رجیستری HKLM\Software\Samba\smbconf ذخیره میشود. دو سطح از پیکربندی رجیستری وجود دارد:
اشتراکهای رجیستری هنگام بالا آمدن بارگذاری نمیشوند، بلکه بر حسب نیاز در زمان اجرا توسط smbd بارگذاری میگردند. اشتراکهای تعریفشده در smb.conf نسبت به اشتراکهای همنام تعریفشده در رجیستری اولویت دارند.
نخست، یک پیکربندی فقط-رجیستری با تنظیم config backend = registry در بخش [global] از smb.conf فعال میشود. این کار هر آنچه را که تا این نقطه از فایلهای پیکربندی خوانده شده است بازنشانی میکند و محتوای بخش پیکربندی سراسری را از رجیستری میخواند. این روشِ توصیهشده برای استفاده از پیکربندی مبتنی بر رجیستری است.
دوم، یک پیکربندی ترکیبی میتواند توسط یک مفهوم ویژه و جدید از پارامتر include = registry در بخش [global] از smb.conf فعال شود. این کار گزینههای سراسری را از رجیستری با همان اولویتهای include کردن یک فایل متنی میخواند. این ویژگی ممکن است بهویژه در مواردی مفید باشد که برای دسترسی به رجیستری به یک پیکربندی اولیه نیاز است.
فعالسازی گزینههای سراسری رجیستری بهطور خودکار اشتراکهای رجیستری را نیز فعال میکند. بنابراین در حالت فقط-رجیستری، اشتراکها تنها بر حسب نیاز بارگذاری میشوند.
نکته: برای اینکه پیکربندیهای مبتنی بر رجیستری دستکم تا حد معینی خطاناپذیر (foolproof) شوند، استفاده از lock directory و config backend در داخل پیکربندی رجیستری غیرفعال شده است: بهویژه با تغییر lock directory در داخل پیکربندی رجیستری، یک راهاندازی معیوب ایجاد خواهد شد که در آن دیمنها پس از فعال شدن پیکربندی، پیکربندیای را که بارگذاری کردهاند نمیبینند.
پیکربندی رجیستری با ابزارهایی مانند regedit یا net (rpc) registry در کلید HKLM\Software\Samba\smbconf قابل دسترسی است. به شکل راحتتر، زیردستور conf از ابزار net(8) یک رابط اختصاصی برای خواندن و نوشتن محلی پیکربندی مبتنی بر رجیستری، یعنی دسترسی مستقیم به فایل پایگاه داده بدون درگیر کردن سرور، ارائه میدهد.
ملاحظات نگاشت هویت (IDENTITY MAPPING CONSIDERATIONS)
در پروتکل SMB، کاربران، گروهها و ماشینها با شناسههای امنیتی (SIDها) نمایش داده میشوند. در یک سیستم POSIX، فرآیندهای Samba باید تحت هویتهای کاربری متناظر در POSIX و با گروههای تکمیلی POSIX اجرا شوند تا دسترسی به فایلهای متعلق به آن کاربران و گروهها مجاز شود. فرآیند نگاشت SIDها به کاربران و گروههای POSIX به عنوان نگاشت هویت (IDENTITY MAPPING) یا بهطور خلاصه نگاشت شناسه (ID MAPPING) نامیده میشود.
سامبا (Samba) از چندین روش مختلف برای نگاشت SIDها به کاربران و گروههای POSIX پشتیبانی میکند. این پیکربندی توسط گزینهٔ idmap config DOMAIN : OPTION هدایت میشود که امکان تعیین گزینههای نگاشت هویت (idmap) را برای هر دامنه بهصورت جداگانه فراهم میآورد.
ماژولهای نگاشت هویت راهبردهای متفاوتی را برای نگاشت SIDها به هویتهای کاربری و گروهی POSIX پیادهسازی میکنند. آنها برای موارد کاربرد و سناریوهای مختلفی مناسب هستند. توصیه میشود پیش از انتخاب سناریوی مدنظر برای استفاده، مستندات هر یک از ماژولهای نگاشت هویت را مطالعه کنید. هر یک از ماژولهای مدیریت هویت در یک صفحهٔ راهنمای جداگانه مستند شده است. بکاندهای استاندارد idmap عبارتند از: tdb (idmap_tdb(8))، tdb2 (idmap_tdb2(8))، ldap (idmap_ldap(8))، rid (idmap_rid(8))، hash (idmap_hash(8))، autorid (idmap_autorid(8))، ad (idmap_ad(8))، nss (idmap_nss(8)) و rfc2307 (idmap_rfc2307(8)).
بهطور کلی، پیکربندی ID mapping باید با دقت فراوان تعیین شود. ایجاد تغییرات در پیکربندی ID mapping که از قبل مستقر و اعمال شده است، میتواند خطر از دست رفتن دسترسی به دادهها یا افشای دادهها برای افراد نامربوط را به همراه داشته باشد.
این مثال نحوهٔ پیکربندی دو دامنه با idmap_rid(8) (دامنهٔ اصلی و یک دامنهٔ مورد اعتماد) را نشان میدهد، در حالی که طرح نگاشت شناسهٔ پیشفرض بر روی tdb باقی میماند.
[global] security = domain workgroup = MAIN idmap config * : backend = tdb idmap config * : range = 1000000-1999999 idmap config MAIN : backend = rid idmap config MAIN : range = 5000000-5999999 idmap config TRUSTED : backend = rid idmap config TRUSTED : range = 6000000-6999999
توضیح هر پارامتر (EXPLANATION OF EACH PARAMETER)
abort shutdown script (G)
اگر کاربر متصل دارای امتیاز SeRemoteShutdownPrivilege باشد، این دستور با دسترسی root اجرا خواهد شد.
Default: abort shutdown script = ""
Example: abort shutdown script = /sbin/shutdown -c
access based share enum (S)
Default: access based share enum = no
acl allow execute always (S)
اگر این پارامتر روی "True" تنظیم شود، Samba مجوزهای اجرا را هنگام درخواست «باز کردن برای اجرا» بررسی نمیکند و در نتیجه رفتار Samba 3.6 دوباره برقرار میگردد. این امر میتواند برای سهولت در ارتقا از نسخههای قدیمیتر Samba به 4.0 و جدیدتر مفید باشد. هدف از این پیکربندی استفاده دائمی نیست، بلکه یک چاره موقت است: توصیه میشود مجوزها را در ACLها تصحیح کرده و پس از یک دوره گذار معین، این پارامتر را به مقدار پیشفرض بازگردانید.
Default: acl allow execute always = no
acl check permissions (S)
این پارامتر بولی کنترل میکند که smbd(8) هنگام دریافت درخواست پروتکل مبنی بر «باز کردن برای حذف» ("open for delete") از یک کلاینت ویندوز چه کاری انجام دهد. اگر یک کلاینت ویندوز مجوز حذف فایل را نداشته باشد، انتظار دارد که این درخواست در زمان باز کردن فایل رد شود. سیستمهای POSIX معمولاً محدودیتهای حذف را فقط هنگام اقدام واقعی برای حذف فایل یا دایرکتوری شناسایی میکنند. از آنجایی که کلاینتهای ویندوز میتوانند (و در عمل چنین میکنند) با برداشتن بیت «delete on close» از درخواست حذف خود صرفنظر کنند، Samba نمیتواند فایل را بلافاصله پس از درخواست «باز کردن برای حذف» پاک کند، زیرا امکان بازیابی چنین فایل حذفشدهای وجود ندارد. با تنظیم این پارامتر روی true (پیشفرض)، smbd مجوزهای سیستم فایل را مستقیماً هنگام «باز کردن برای حذف» بررسی میکند و در صورتی که به نظر برسد مجوزهای سیستم فایل آن را منع میکنند، درخواست را بدون حذف واقعی فایل رد میکند. این روش بینقص نیست، زیرا ممکن است کاربری بتواند فایلی را بدون اینکه Samba امکان بررسی درست مجوزها را داشته باشد حذف کند، اما برای یک رفتار عمدتاً صحیح، به اندازه کافی به مفاهیم ویندوز نزدیک است. Samba در این حالت قواعد POSIX ACL را به درستی بررسی خواهد کرد.
اگر این پارامتر روی "false" تنظیم شود، Samba مجوزها را در زمان «باز کردن برای حذف» بررسی نکرده و باز کردن فایل را مجاز میداند. اگر کاربر مجوز حذف فایل را نداشته باشد، این موضوع تنها در زمان بستن فایل مشخص میشود، که برای ابزارهای کاربری ویندوز جهت نمایش پیام خطا به کاربر خیلی دیر است. نشانه این وضعیت فایلهایی است که به نظر میرسد حذف شدهاند اما با بازآوری (refresh) در مرورگر فایل ویندوز (Windows Explorer) به شکلی جادویی دوباره ظاهر میشوند. این یک گزینه پروتکلی فوقالعاده پیشرفته است که نیازی به تغییر آن نیست. این پارامتر در شکل نهایی خود در نسخه 3.0.21 معرفی شد؛ نسخهای قبلی با مفاهیمی کمی متفاوت در 3.0.20 معرفی شده بود که آن نسخه قدیمی در اینجا مستند نشده است.
Default: acl check permissions = yes
acl claims evaluation (G)
قابلیت Active Directory claims در Samba 4.20 جدید است. از آنجایی که این ادعاها (claims) در برابر یک زبان عبارت بسیار منعطف در توصیفکننده امنیتی ارزیابی میشوند، این گزینه سازوکاری فراهم میکند تا در صورت نیاز مدیر سیستم، این منطق غیرفعال گردد.
رفتار پیشفرض بدین صورت است که ارزیابی ادعاها تنها در AD DC فعال است. علاوه بر این، ارزیابی ادعاها در AD DC تنها در صورتی فعال است که سطح عملکردی DC (یا functional level) نسخه 2012 یا بالاتر باشد. ببینید: ad dc functional level.
مقادیر ممکن عبارتند از:
acl flag inherited canonicalization (S)
از سوی دیگر، زمانی که یک Security Descriptor به طور صریح روی یک فایل تنظیم شود، فلگ DI پاک میشود، مگر اینکه فلگ «DACL Inheritance Required» (یا DR) نیز در Security Descriptor جدید تنظیم شده باشد (جهت اطلاع، DR هرگز روی دیسک ذخیره نمیشود).
این رفتار پیشفرض در هنگام فعال بودن این گزینه (پیشفرض) است. هنگام تنظیم این گزینه روی no، مقدار حاصل از فلگ DI روی دیسک مستقیماً از مقدار DI توصیفکننده امنیتیِ در حال تنظیم گرفته میشود. این حالت میتواند به ابزارهای پشتیبانگیری مانند rsync که بلوکهای داده را از ویژگیهای گسترده (xattrs) نمایانگر ACLهای ساختهشده توسط ماژول VFS با نام acl_xattr کپی میکنند اجازه دهد رونوشتهایی از ACL بسازند که دقیقاً مشابه مبدأ باشد. بدون این گزینه، تمام ACLهای رونوشتبرداریشده فلگ DI را در صورت وجود در مبدأ از دست میدهند.
Default: acl flag inherited canonicalization = yes
acl group control (S)
در یک سرور ویندوز، گروهها میتوانند مالک یک فایل یا دایرکتوری باشند؛ بنابراین هر فردی در آن گروه اجازه دارد مجوزهای آن را اصلاح کند. این قابلیت امکان تفویض کنترلهای امنیتی در نقطهای از سیستم فایل را به گروه مالک یک دایرکتوری و تمام موارد زیرمجموعه آن که متعلق به همان گروه هستند، میدهد. این به معنی آن است که افراد متعددی مجوز ویرایش ACLهای یک فایل یا دایرکتوری را دارند و مدیریت سیستم آسانتر میشود.
این پارامتر به Samba اجازه میدهد تا کنترل روی نقطهای از ساختار سلسلهمراتبی دایرکتوری به اشتراکگذاشتهشده را تقریباً به همان روش ویندوز تفویض کند. این کار به همه اعضای یک گروه UNIX امکان میدهد مجوزهای فایل یا دایرکتوریای را که مالکیت گروهی آن را دارند، کنترل نمایند.
این پارامتر بهتر است همراه با گزینه inherit owner و همچنین روی اشتراکهایی استفاده شود که شامل دایرکتوریهایی با بیت UNIX setgid bit تنظیمشده روی آنها هستند، که باعث میشود فایلها و دایرکتوریهای جدید ایجادشده در آن، مالکیت گروهی را از دایرکتوری دربرگیرنده به ارث ببرند.
این پارامتر در Samba 3.0.23 منسوخ شده بود، اما در Samba 3.0.31 و بالاتر مجدداً فعال شد؛ زیرا اکنون تنها در صورتی تغییرات مجوز را کنترل میکند که کاربر در گروه اصلیِ مالک عضو باشد. این پارامتر دیگر معادل گزینه dos filemode نیست.
Default: acl group control = no
acl map full control (S)
Default: acl map full control = yes
ad dc functional level (G)
مقادیر ممکن عبارتند از:
با این حال برای دسترسی به ویژگیهای هنوز کاملنشده در سطح عملکردی دامین 2016، ممکن است تنظیم این مقدار پیش از ارتقای سطح عملکردی دامنه مفید باشد.
اگر این گزینه به صورت دستی تنظیم شود، محافظت در برابر عدم تطابق ویژگیها میان Domain Controllerها کاهش مییابد؛ بنابراین همه Domain Controllerها باید نسخه یکسانی از Samba را اجرا کنند تا اطمینان حاصل شود که رفتار مشاهدهشده توسط کلاینت، بدون توجه به اینکه با کدام DC ارتباط برقرار کرده است، یکسان خواهد بود.
تنظیم این گزینه روی 2016 امکان ارتقای سطح عملکردی دامنه را با دستور samba-tool domain level raise --domain-level=2016 فراهم کرده و دسترسی به قابلیتهای Kerberos Claims و Dynamic Access Control در Samba را امکانپذیر میسازد.
هشدار
ویژگیهای Kerberos Claims و Dynamic Access Control در Samba که با مقدار 2016 فعال میشوند، در Samba 4.19 کامل نیستند.
Example: ad dc functional level = 2016
add group script (G)
Default: add group script =
Example: add group script = /usr/sbin/groupadd %g
additional dns hostnames (G)
Default: additional dns hostnames = # empty string (no additional dns names)
Example: additional dns hostnames = host2.example.com host3.other.com
add machine script (G)
این گزینه بسیار شبیه به add user script است و مشابهاً از جایگزینی %u برای نام حساب کاربری استفاده میکند. از جایگزینی %m استفاده نکنید.
Default: add machine script =
Example: add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /var/lib/nobody -s /bin/false %u
addport command (G)
Default: addport command =
Example: addport command = /etc/samba/scripts/addport.sh
addprinter command (G)
برای یک میزبان Samba، این بدان معناست که چاپگر باید بهطور فیزیکی به سیستم چاپ زیرین اضافه شود. گزینهٔ addprinter command اسکریپتی را برای اجرا مشخص میکند که عملیات لازم را برای افزودن چاپگر به سیستم چاپ و اضافه کردن تعریف سرویس مناسب به فایل smb.conf انجام میدهد تا بتواند توسط smbd(8) به اشتراک گذاشته شود.
گزینهٔ addprinter command بهطور خودکار با پارامترهای زیر (به ترتیب) فراخوانی میشود:
پس از اجرای addprinter command، دیمن smbd فایل smb.conf را مجدداً تجزیه میکند تا بررسی کند آیا اشتراک تعریفشده توسط APW وجود دارد یا خیر. اگر نام اشتراک همچنان نامعتبر باشد، smbd خطای ACCESS_DENIED را به کلاینت برمیگرداند.
برنامهٔ addprinter command میتواند یک خط متن خروجی تولید کند که سامبا آن را بهعنوان درگاهی که چاپگر جدید به آن متصل است تنظیم خواهد کرد. اگر این خط خروجی داده نشود، سامبا اشتراکهای چاپگر خود را مجدداً بارگذاری نخواهد کرد.
Default: addprinter command =
Example: addprinter command = /usr/bin/addprinter
add share command (G)
برای اجرای موفقیتآمیز add share command، دیمن smbd الزام میکند که مدیر سیستم با استفاده از یک حساب ریشه (یعنی uid == 0) متصل شود یا دارای دسترسی SeDiskOperatorPrivilege باشد. اسکریپتهای تعریفشده در پارامتر add share command با دسترسی ریشه (root) اجرا میشوند.
هنگام اجرا، smbd بهطور خودکار add share command را با پنج پارامتر فراخوانی میکند.
Default: add share command =
Example: add share command = /usr/local/bin/addshare
add user script (G)
بهطور معمول، یک سرور Samba نیازمند آن است که برای تمامی کاربرانی که به فایلهای روی این سرور دسترسی دارند، کاربران UNIX ایجاد شده باشند. برای مراکزی که از پایگاههای داده حساب کاربری Windows NT بهعنوان پایگاه داده اصلی کاربران خود استفاده میکنند، ایجاد این کاربران و همگام نگه داشتن فهرست کاربران با PDC در Windows NT کاری طاقتفرسا و دشوار است. این گزینه به smbd اجازه میدهد تا هنگام دسترسی کاربر به سرور Samba، کاربران UNIX مورد نیاز را ON DEMAND (برحسب تقاضا) ایجاد کند.
هنگامی که کاربر Windows برای دسترسی به سرور Samba تلاش میکند، در زمان ورود به سیستم (برپاسازی نشست در پروتکل SMB)، smbd(8) با password server ارتباط برقرار کرده و سعی میکند کاربر دادهشده را با گذرواژه ارائهشده احراز هویت کند. اگر احراز هویت موفقیتآمیز باشد، آنگاه smbd تلاش میکند یک کاربر UNIX را در پایگاه داده گذرواژههای UNIX بیابد تا کاربر Windows را به آن نگاشت کند. اگر این جستجو ناموفق باشد و add user script تنظیم شده باشد، smbd اسکریپت مشخصشده را AS ROOT فراخوانی کرده و هر آرگومان %u را به نام کاربری که باید ایجاد شود بسط میدهد.
اگر این اسکریپت با موفقیت کاربر را ایجاد کند، smbd طوری به کار خود ادامه میدهد که گویی کاربر UNIX از قبل وجود داشته است. به این ترتیب، کاربران UNIX بهصورت پویا متناسب با حسابهای موجود Windows NT ایجاد میشوند.
همچنین ببینید: security، password server، delete user script.
Default: add user script =
Example: add user script = /usr/local/samba/bin/add_user %u
add user to group script (G)
توجه داشته باشید که دستور adduser استفادهشده در مثال زیر از سینتکس بهکاررفته در همه سیستمها پشتیبانی نمیکند.
Default: add user to group script =
Example: add user to group script = /usr/sbin/adduser %u %g
administrative share (S)
برای اطلاعات بیشتر درباره این گزینه، بخش security را در زیر ببینید.
Default: administrative share = no
admin users (S)
باید از این گزینه با احتیاط بسیار استفاده کنید، چرا که هر کاربری در این فهرست بدون در نظر گرفتن دسترسیها و مجوزهای فایل، قادر خواهد بود هر کاری که میخواهد در اشتراک انجام دهد.
Default: admin users =
Example: admin users = jason
afs share (S)
Default: afs share = no
afs token lifetime (G)
این پارامتر را برای دریافت NEVERDATE روی 0 تنظیم کنید.
Default: afs token lifetime = 604800
afs username map (G)
نام کاربری نگاشتشده باید حاوی نام cell برای ورود باشد؛ بنابراین بدون تنظیم این پارامتر، هیچ توکنی وجود نخواهد داشت.
Default: afs username map =
Example: afs username map = %u@afs.samba.org
aio max threads (G)
دستور مرتبط: aio read size
دستور مرتبط: aio write size
Default: aio max threads = 100
aio read size (S)
تنها مقادیر منطقی برای این پارامتر 0 (عدم استفاده از I/O ناهمگام) و 1 (همیشه انجام I/O ناهمگام) هستند.
دستور مرتبط: aio write size
Default: aio read size = 1
Example: aio read size = 0 # Always do reads synchronously
aio write behind (S)
ساختار نحوی آن دقیقاً مشابه پارامتر veto files است.
Default: aio write behind =
Example: aio write behind = /*.tmp/
aio write size (S)
تنها مقادیر منطقی برای این پارامتر 0 (عدم استفاده از I/O ناهمگام) و 1 (همیشه انجام I/O ناهمگام) هستند.
در مقایسه با aio read size این پارامتر تأثیر کمتری دارد، چرا که بیشتر عملیات نوشتن در حافظه نهان (کَش) سامانه فایل قرار میگیرند. عملیات نوشتنی که نیازمند تخصیص فضا هستند ممکن است بیشترین بهره را از ناهمگام شدن ببرند.
دستور مرتبط: aio read size
Default: aio write size = 1
Example: aio write size = 0 # Always do writes synchronously
algorithmic rid base (G)
تنظیم این گزینه روی مقداری بزرگتر میتواند برای مراکزی که در حال مهاجرت از WinNT و Win2k هستند مفید باشد، زیرا در غیر این صورت RIDهای موجود کاربران و گروهها با کاربران سیستمی و غیره تداخل پیدا میکنند.
تمامی UIDها و GIDها باید برای عملکرد صحیح ACLها روی سرور، قابل تجزیه به SIDها باشند. به همین جهت، نگاشت الگوریتمی را نمیتوان 'خاموش کرد'، اما 'کنار زدن آن' (با اختصاص بازه بالاتر) باید مشکلات را برطرف کند. سپس میتوان به کاربران و گروهها در backendهایی که از RID دلخواه پشتیبانی میکنند، RIDهای 'پایین' تخصیص داد.
Default: algorithmic rid base = 1000
Example: algorithmic rid base = 100000
allocation roundup size (S)
این پارامتر منسوخ شده است و در یکی از نسخههای آینده Samba حذف خواهد شد.
این پارامتر عددی صحیح، اندازه گرد کردن (roundup size) را برحسب بایت مشخص میکند.
Default: allocation roundup size = 0
Example: allocation roundup size = 1048576 # (to set it to the former default of 1 MiB)
allow dcerpc auth level connect (G)
برخی از رابطها (interfaces) مانند samr، lsarpc و netlogon دارای پیشفرض تغییرناپذیر درونکدی no هستند و epmapper، mgmt و rpcecho دارای پیشفرض تغییرناپذیر yes میباشند.
این رفتار میتواند به ازای هر نام رابط (مانند lsarpc، netlogon، samr، srvsvc، winreg، wkssvc ...) با استفاده از گزینه 'allow dcerpc auth level connect:interface = yes' بازنویسی (override) شود.
این گزینه توسط محدودیتهای خاص پیادهسازی باطل میشود؛ بهعنوان مثال پروتکلهای drsuapi و backupkey نیازمند DCERPC_AUTH_LEVEL_PRIVACY هستند. پروتکل dnsserver نیز به DCERPC_AUTH_LEVEL_INTEGRITY نیاز دارد.
Default: allow dcerpc auth level connect = no
Example: allow dcerpc auth level connect = yes
allow dns updates (G)
بهروزرسانیهای DNS را میتوان یا با تنظیم روی disabled بهطور کامل غیرمجاز کرد، یا با تنظیم روی secure only فقط از طریق اتصالات امن مجاز نمود، یا با تنظیم روی nonsecure در تمام موارد مجاز دانست.
Default: allow dns updates = secure only
Example: allow dns updates = disabled
allow insecure wide links (G)
تنظیم allow insecure wide links روی true، پیوند میان این دو پارامتر را غیرفعال کرده و با حذف این محافظت، به سیستم اجازه میدهد تا سرور را برای دنبال کردن پیوندهای نمادین پیکربندی کند (با تنظیم wide links روی "true") حتی زمانی که unix extensions فعال باشد.
فعال کردن این گزینه توصیه نمیشود مگر اینکه پیامدهای اجازه دادن به سرور برای دنبال کردن پیوندهای نمادین ایجادشده توسط کلاینتهای UNIX را بهطور کامل درک کنید. در بیشتر پیکربندیهای عادی Samba، این مورد یک حفرهٔ امنیتی در نظر گرفته میشود و تنظیم این پارامتر توصیه نمیشود.
این گزینه به درخواست مراکزی اضافه شد که Samba را عمداً به این روش پیکربندی کرده بودند و نیاز داشتند بدون نیاز به پچ کردن کد Samba، به پشتیبانی از این قابلیت ادامه دهند.
Default: allow insecure wide links = no
allow nt4 crypto (G)
این گزینه کنترل میکند که آیا سرور netlogon (در حال حاضر فقط در حالت 'active directory domain controller')، کلاینتهایی را که نه از NETLOGON_NEG_STRONG_KEYS و نه از NETLOGON_NEG_SUPPORTS_AES پشتیبانی نمیکنند رد کند یا خیر.
این گزینه در Samba 4.2.0 اضافه شد. ممکن است کلاینتهایی را که با نسخههای Samba تا 4.1.x بهخوبی کار میکردند مسدود کند، زیرا پیشفرض عملی در آن نسخهها "yes" بود، در حالی که اکنون "no" است.
اگر کلاینتهایی دارید که فاقد RequireStrongKey = 1 در رجیستری هستند، ممکن است لازم باشد تا زمان اصلاح تمام کلاینتها، "allow nt4 crypto = yes" را تنظیم کنید.
تنظیم "allow nt4 crypto = yes" امکان مذاکره برای رمزنگاری ضعیف را، احتمالاً از طریق حملات تنزل رتبه (downgrade attacks)، فراهم میکند.
از استفاده از این گزینه خودداری کنید! در عوض از گزینهٔ صریح 'allow nt4 crypto:COMPUTERACCOUNT = yes' استفاده کنید! که همراه با پچهای مربوط به CVE-2022-38023 در دسترس است؛ نگاه کنید به https://bugzilla.samba.org/show_bug.cgi?id=15240
اگر یک کلاینت قدیمی (legacy) رد شود یا بدون یک گزینهٔ صریح 'allow nt4 crypto:COMPUTERACCOUNT = yes' برای آن کلاینت مجاز گردد، Samba خطایی را در فایلهای لاگ در سطح لاگ 0 ثبت خواهد کرد. اگر نرمافزار کلاینت قدیمی به آن نیاز داشته باشد، این پیام خط صریح 'allow nt4 crypto:COMPUTERACCOUNT = yes' را که باید اضافه شود مشخص میکند. (سطح لاگ را میتوان با 'CVE_2022_38023:error_debug_level = 1' تنظیم کرد تا تنها در سطوح لاگ بالاتر گزارش شود).
این امکان به مدیران سیستم اجازه میدهد از "yes" فقط برای یک دورهٔ مهلت کوتاه استفاده کنند تا گزینههای صریح 'allow nt4 crypto:COMPUTERACCOUNT = yes' را جمعآوری نمایند.
این گزینه توسط مقدار مؤثر 'yes' از گزینههای 'server reject md5 schannel:COMPUTERACCOUNT'، 'reject md5 clients'، 'server reject aes schannel:COMPUTERACCOUNT' و/یا 'server reject aes schannel' لغو (override) میشود.
Default: allow nt4 crypto = no
allow nt4 crypto:COMPUTERACCOUNT (G)
اگر گزینه روی "yes" تنظیم شده باشد اما رایانهٔ مربوطه به آن نیازی نداشته باشد، Samba در فایلهای لاگ در سطح لاگ 0 شکایتی را دربارهٔ این مشکل امنیتی ثبت میکند. (سطح لاگ را میتوان با 'CVE_2022_38023:warn_about_unused_debug_level = 1' تنظیم کرد تا تنها در سطوح لاگ بالاتر گزارش دهد).
اگر این تنظیم همچنان برای حساب رایانهٔ مشخصشده مورد نیاز باشد، Samba هشداری را در فایلهای لاگ در سطح لاگ 5 ثبت خواهد کرد.
نگاه کنید به CVE-2022-38023، https://bugzilla.samba.org/show_bug.cgi?id=15240.
این گزینه بر گزینهٔ allow nt4 crypto ارجحیت دارد و آن را لغو (override) میکند.
این گزینه توسط مقدار مؤثر 'yes' از گزینههای 'server reject md5 schannel:COMPUTERACCOUNT'، 'reject md5 clients'، 'server reject aes schannel:COMPUTERACCOUNT' و/یا 'server reject aes schannel' لغو میشود.
به این معنی که 'allow nt4 crypto:COMPUTERACCOUNT = yes' فقط در ترکیب با 'server reject md5 schannel:COMPUTERACCOUNT = no' و 'server reject aes schannel:COMPUTERACCOUNT = no' کاربرد دارد.
allow nt4 crypto:LEGACYCOMPUTER1$ = yes server reject md5 schannel:LEGACYCOMPUTER1$ = no server reject aes schannel:LEGACYCOMPUTER1$ = no allow nt4 crypto:NASBOX$ = yes server reject md5 schannel:NASBOX$ = no server reject aes schannel:NASBOX$ = no allow nt4 crypto:LEGACYCOMPUTER2$ = yes server reject md5 schannel:LEGACYCOMPUTER2$ = no server reject aes schannel:LEGACYCOMPUTER2$ = no
No default
allow trusted domains (G)
این قابلیت زمانی مفید است که فقط بخواهید سرور Samba شما به کاربران دامنهای که در آن عضو است خدماترسانی کند. به عنوان مثال، فرض کنید دو دامنهٔ DOMA و DOMB وجود دارند. دامنهٔ DOMB توسط DOMA (که شامل سرور Samba است) مورد اعتماد است. در شرایط عادی، کاربری که دارای حسابی در DOMB است میتواند به منابع یک حساب UNIX با همان نام در سرور Samba دسترسی داشته باشد، حتی اگر حسابی در DOMA نداشته باشد. این موضوع میتواند پیادهسازی یک مرز امنیتی را دشوار کند.
Default: allow trusted domains = yes
allow unsafe cluster upgrade (G)
Default: allow unsafe cluster upgrade = no
apply group policies (G)
Default: apply group policies = no
Example: apply group policies = yes
async dns timeout (G)
حداقل مقدار این پارامتر روی ۱ ثانیه محدود شده است.
Default: async dns timeout = 10
Example: async dns timeout = 20
async smb echo handler (G)
Default: async smb echo handler = no
auth event notification (G)
این گزینه برای لاگگیری حسابرسی (audit logging) شرحدادهشده در log level لازم نیست.
در عوض، این قابلیت باید بیشتر یک گزینهٔ توسعهدهندگان در نظر گرفته شود (که در مجموعه آزمونهای Samba کمک میکند) تا ابزاری برای حسابرسی خارجی، زیرا تحویل پیامها تضمینشده نیست (ویژگیای که مجموعه آزمونها با روشهای خود آن را دور میزنند).
همچنین رویدادهای اعتبارسنجی در صورتی که log level بهطور مناسب، مثلاً روی auth_json_audit:3 تنظیم شده باشد، از طریق روشهای عادی لاگگیری نیز ثبت میشوند.
Default: auth event notification = no
preload
auto services (G)
توجه داشته باشید که اگر فقط میخواهید تمام چاپگرهای موجود در فایل printcap شما بارگذاری شوند، گزینهٔ load printers راحتتر است.
Default: auto services =
Example: auto services = fred lp colorlp
automount fs types (G)
مقادیر باید بهصورت اعداد هگزادسیمال (با یا بدون پیشوند 0x)، که با فاصله یا کاما از هم جدا شدهاند، مشخص شوند.
نکته: این پارامتر فقط در سیستمهای لینوکس در دسترس است.
برای یافتن شمارهٔ جادویی یک سیستمفایل سوارشده، به /usr/include/linux/magic.h مراجعه کنید یا دستور زیر را فراخوانی نمایید: stat -f -c '0x%t' /path/to/mountpoint
نکته: autofs (0x187) همیشه بررسی میشود و نیازی نیست در این فهرست گنجانده شود.
Default: automount fs types =
Example: automount fs types = 0xA0B0C0D0 0x12345678
available (S)
Default: available = yes
bind dns directory
binddns dir (G)
Default: binddns dir = /var/lib/samba/bind-dns
bind interfaces only (G)
برای سرویس نام، باعث میشود nmbd به پورتهای ۱۳۷ و ۱۳۸ روی رابطهای فهرستشده در پارامتر interfaces متصل (bind) شود. nmbd همچنین به منظور خواندن پیامهای همگانی (broadcast) به رابط «همه نشانیها» (0.0.0.0) روی پورتهای ۱۳۷ و ۱۳۸ متصل میشود. اگر این گزینه تنظیم نشده باشد، nmbd به درخواستهای نام روی همه این سوکتها پاسخ خواهد داد. اگر bind interfaces only تنظیم شده باشد، nmbd نشانی مبدأ هر بستهای را که از سوکتهای برودکست میآید بررسی کرده و هر بستهای را که با نشانیهای برودکست رابطهای موجود در فهرست پارامتر interfaces تطابق نداشته باشد، دور میریزد. از آنجا که بستههای تکپخشی (unicast) روی سوکتهای دیگر دریافت میشوند، این ویژگی به nmbd امکان میدهد از پاسخ به درخواست نامِ ماشینهایی که بستههای آنها از هر رابطی به غیر از رابطهای فهرستشده در interfaces دریافت شده است، خودداری کند. با این حال، جعل نشانی مبدأ IP (IP Source address spoofing) این بررسی ساده را بیاثر میکند؛ بنابراین نباید به عنوان یک راهکار امنیتی جدی برای nmbd در نظر گرفته شود.
برای سرویس فایل، این گزینه باعث میشود smbd(8) تنها به فهرست رابطهای ارائهشده در پارامتر interfaces متصل شود. این کار شبکههایی را که smbd به آنها سرویس میدهد، به بستههای دریافتی از آن رابطها محدود میکند. توجه داشته باشید که نباید از این پارامتر برای ماشینهایی که از PPP یا سایر رابطهای شبکه موقت، متناوب یا فاقد قابلیت برودکست استفاده میکنند بهره ببرید، زیرا با رابطهای غیردائمی سازگار نخواهد بود.
اگر bind interfaces only تنظیم شده باشد و نشانی شبکه 127.0.0.1 به فهرست پارامتر interfaces اضافه نشده باشد، ممکن است smbpasswd(8) به دلایلی که در ادامه شرح داده شده است، طبق انتظار کار نکند.
برای تغییر رمز عبور SMB یک کاربر، دستور smbpasswd به طور پیشفرض به عنوان یک کلاینت SMB به نشانی localhost - 127.0.0.1 متصل میشود تا درخواست تغییر رمز عبور را ارسال کند. اگر bind interfaces only تنظیم شده باشد، تا زمانی که نشانی شبکه 127.0.0.1 به فهرست پارامتر interfaces افزوده نشود، اتصال smbpasswd در حالت پیشفرض ناموفق خواهد بود. میتوان smbpasswd را با استفاده از پارامتر smbpasswd(8) -r remote machine وادار کرد تا از رابط IP اصلی میزبان محلی استفاده کند، به طوری که remote machine روی نام IP رابط اصلی میزبان محلی تنظیم شده باشد.
Default: bind interfaces only = no
blocking locks (S)
اگر این پارامتر فعال باشد و محدوده قفل درخواستی فوراً برآورده نشود، سامبا درخواست قفل را در صف داخلی قرار میدهد و به طور دورهای تلاش میکند تا پیش از به پایان رسیدن مهلت زمانی (timeout)، قفل را به دست آورد.
اگر این پارامتر روی no تنظیم شود، سامبا مانند نسخههای پیشین خود عمل خواهد کرد و در صورتی که محدوده قفل بلافاصله قابل دستیابی نباشد، درخواست قفل فوراً ناموفق اعلام میشود.
Default: blocking locks = yes
block size (S)
تغییر این پارامتر ممکن است بر بازدهی نوشتن اطلاعات توسط کلاینت تأثیر داشته باشد، اما این موضوع هنوز تأیید نشده است. این پارامتر برای این اضافه شد تا به مدیران ارشد سیستم اجازه دهد مقدار آن را (معمولاً به مقداری بالاتر) تغییر داده و بدون نیاز به کامپایل مجدد کدها، تأثیر آن را بر کارایی نوشتن کلاینت آزمایش کنند. از آنجا که این یک گزینه آزمایشی است، ممکن است در نسخههای بعدی حذف شود.
تغییر این گزینه اندازه کل فضای خالی گزارششده دیسک را تغییر نمیدهد، بلکه صرفاً واحد اندازه بلوکِ گزارششده به کلاینت را تغییر خواهد داد.
Default: block size = 1024
Example: block size = 4096
browsable
browseable (S)
Default: browseable = yes
browse list (G)
Default: browse list = yes
cache directory (G)
این گزینه دایرکتوری مورد نظر برای ذخیرهسازی فایلهای TDB حاوی دادههای موقتی را مشخص میکند که با راهاندازیهای مجدد سرویس، نگهداری میشوند. این دایرکتوری باید روی یک فضای ذخیرهسازی پایدار قرار گیرد، اما دادههای آن توسط مدیر سیستم با خیال راحت قابل حذف هستند.
Default: cache directory = /var/cache/samba
Example: cache directory = /var/run/samba/locks/cache
casesignames
case sensitive (S)
Default: case sensitive = auto
change notify (G)
هرگز نباید نیازی به تغییر این پارامتر داشته باشید.
Default: change notify = yes
change share command (G)
به منظور اجرای موفقیتآمیز change share command، دیمن smbd ملزم میکند که مدیر سیستم با یک حساب ریشه (یعنی uid == 0) متصل شده باشد یا امتیاز SeDiskOperatorPrivilege را دارا باشد. اسکریپتهای تعریفشده در پارامتر change share command با دسترسی ریشه (root) اجرا میشوند.
هنگام اجرا، smbd به طور خودکار change share command را با شش پارامتر فراخوانی خواهد کرد.
Default: change share command =
Example: change share command = /usr/local/bin/changeshare
check parent directory delete on close (S)
Default: check parent directory delete on close = no
check password script (G)
این برنامه در صورت مناسب بودن گذرواژه باید مقدار 0، یا در صورت نامناسب بودن گذرواژه هر مقدار دیگری را برگرداند. در صورتی که گذرواژه ضعیف در نظر گرفته شود (برنامه مقدار 0 را برنگرداند)، به کاربر اطلاع داده خواهد شد و تغییر گذرواژه با شکست مواجه میشود.
در Samba AD، این اسکریپت AS ROOT (با دسترسی ریشه) توسط samba(8) بدون هیچگونه جایگزینی اجرا خواهد شد.
توجه داشته باشید که از Samba 4.11 به بعد، متغیرهای محیطی زیر به اسکریپت صادر (export) میشوند:
نکته: در دایرکتوری نمونهها، یک برنامه نمونه به نام crackcheck وجود دارد که از cracklib برای بررسی کیفیت گذرواژه استفاده میکند.
Default: check password script = # Disabled
Example: check password script = /usr/local/sbin/crackcheck
client ipc max protocol (G)
بهطور معمول این گزینه نباید تنظیم شود زیرا مرحله مذاکره خودکار (automatic negotiation) در پروتکل SMB وظیفه انتخاب پروتکل مناسب را بر عهده دارد.
مقدار default به آخرین پروتکل پشتیبانیشده اشاره دارد، که در حال حاضر SMB3_11 است.
برای فهرست کاملی از پروتکلهای موجود، client max protocol را ببینید. مقادیر CORE، COREPLUS، LANMAN1 و LANMAN2 بدون اعلان به NT1 ارتقا مییابند.
Default: client ipc max protocol = default
Example: client ipc max protocol = SMB2_10
client ipc min protocol (G)
بهطور معمول این گزینه نباید تنظیم شود زیرا مرحله مذاکره خودکار در پروتکل SMB وظیفه انتخاب پروتکل مناسب را بر عهده دارد.
مقدار default به مقدار بالاتر میان NT1 و مقدار موثر client min protocol اشاره دارد.
برای فهرست کاملی از پروتکلهای موجود، client max protocol را ببینید. مقادیر CORE، COREPLUS، LANMAN1 و LANMAN2 بدون اعلان به NT1 ارتقا مییابند.
Default: client ipc min protocol = default
Example: client ipc min protocol = SMB3_11
client ipc signing (G)
هنگامی که روی required یا default تنظیم شود، امضای SMB اجباری است.
هنگامی که روی desired تنظیم شود، امضای SMB پیشنهاد میشود، اما اجباری نیست و در صورت تنظیم روی disabled، امضای SMB حتی پیشنهاد نیز نمیشود.
اتصالات از winbindd به Domain Controllerهای Active Directory همیشه امضا را اجباری میکنند.
Default: client ipc signing = default
client lanman auth (G)
به این معنی که در آینده، رفتار پیشفرض فعلی یعنی client NTLMv2 auth = yes رفتار اجباری خواهد بود.
این پارامتر تعیین میکند که آیا smbclient(8) و سایر ابزارهای کلاینت samba تلاش خواهند کرد تا با استفاده از هش گذرواژه ضعیفتر LANMAN به کارسازها احراز هویت کنند یا خیر. در صورت غیرفعال بودن، تنها کارسازهایی که از هشهای گذرواژه NT پشتیبانی میکنند (مانند Windows NT/2000، Samba و غیره، اما نه Windows 95/98) قادر خواهند بود از طریق کلاینت Samba متصل شوند.
پاسخ رمزنگاریشده LANMAN به دلیل حساس نبودن به کوچکی و بزرگی حروف و همچنین الگوریتم انتخابیاش، بهسادگی شکسته میشود. به کلاینتهایی که فاقد کارسازهای Windows 95/98 هستند توصیه میشود این گزینه را غیرفعال کنند.
غیرفعال کردن این گزینه، گزینه client plaintext auth را نیز غیرفعال میکند.
به همین ترتیب، اگر پارامتر client ntlmv2 auth فعال باشد، تنها برای ورودهای NTLMv2 تلاش خواهد شد.
Default: client lanman auth = no
client ldap sasl wrapping (G)
مقادیر sign و seal تنها زمانی در دسترس هستند که Samba در برابر یک نسخه امروزی OpenLDAP (نسخه 2.3.x یا بالاتر) کامپایل شده باشد.
این گزینه در درجه اول برای تامین امنیت حریم خصوصی اتصالات مدیریتی از جانب samba-tool، بهویژه شامل گذرواژههای جدید یا بازنشانیشده برای کاربران، مورد نیاز است. به همین دلیل مقدار پیشفرض seal است.
علاوه بر این، winbindd و ابزار net میتوانند از LDAP برای برقراری ارتباط با Domain Controllerها استفاده کنند، بنابراین این گزینه سطح حریم خصوصی آن اتصالات را نیز کنترل میکند. تمام نسخههای پشتیبانیشده AD DC بهطور پیشفرض استفاده از حداقل اتصالات LDAP امضاشده را اجباری میکنند، بنابراین در عمل مقداری حداقل برابر با sign مورد نیاز است.
مقدار پیشفرض seal است. این امر در صورت استفاده از Kerberos، مستلزم همگامسازی زمان با KDC است.
به منظور اجبار به استفاده از LDAP (روی پورت 389) به همراه STARTTLS یا LDAPS (روی پورت 636)، امکان استفاده از starttls یا ldaps وجود دارد. در این حالت احراز هویت NTLMSSP یا Kerberos از پیوندهای کانال TLS (TLS channel bindings) به منظور پیوند دادن آن به اتصال استفاده میکند.
Default: client ldap sasl wrapping = seal
client max protocol (G)
مقادیر ممکن عبارتند از:
مقدار default به SMB3_11 اشاره دارد.
اتصالات $IPC برای DCERPC، به عنوان مثال در winbindd، توسط گزینه client ipc max protocol مدیریت میشوند.
Default: client max protocol = default
Example: client max protocol = LANMAN1
client min protocol (G)
به طور معمول این گزینه نباید تنظیم شود زیرا مرحله مذاکره خودکار در پروتکل SMB وظیفه انتخاب پروتکل مناسب را بر عهده دارد، مگر اینکه به یک کارگزار قدیمی که فقط از SMB1 پشتیبانی میکند متصل شوید.
برای فهرست کامل پروتکلهای موجود، دستور مرتبط: client max protocol را ببینید.
اتصالات IPC$ برای DCERPC برای مثال در winbindd، توسط گزینه client ipc min protocol مدیریت میشوند.
توجه داشته باشید که اکثر ابزارهای خط فرمان از --option='client min protocol=NT1' پشتیبانی میکنند، بنابراین ممکن است نیازی به فعالسازی سراسری پروتکلهای SMB1 در smb.conf نباشد.
Default: client min protocol = SMB2_02
Example: client min protocol = NT1
client netlogon ping protocol (G)
مقادیر ممکن عبارتند از:
client NTLMv2 auth (G)
بدین معنی که در آینده، مقدار پیشفرض فعلی client NTLMv2 auth = yes رفتار اجباری خواهد بود.
این پارامتر مشخص میکند که آیا smbclient(8) تلاش خواهد کرد تا با استفاده از پاسخ رمزگذاریشده گذرواژه NTLMv2 هویت خود را نزد کارگزاران احراز کند یا خیر.
در صورت فعال بودن، تنها یک پاسخ NTLMv2 و LMv2 (هر دو بسیار امنتر از نسخههای پیشین هستند) ارسال خواهد شد. سرورهای قدیمیتر (شامل NT4 < SP4، Win9x و Samba 2.2) در صورتی که در دامنهای با پشتیبانی از NTLMv2 نباشند، با NTLMv2 سازگار نیستند.
به همین ترتیب، در صورت فعال بودن، احراز هویتهای NTLMv1، client lanman auth و client plaintext auth غیرفعال خواهند شد. این امر همچنین احراز هویت در سطح اشتراک (share-level) را غیرفعال میکند.
در صورت غیرفعال بودن، بسته به مقدار client lanman auth، یک پاسخ NTLM (و احتمالاً یک پاسخ LANMAN) توسط کلاینت ارسال خواهد شد.
توجه داشته باشید که Windows Vista و نسخههای پس از آن از قبل بهطور پیشفرض از NTLMv2 استفاده میکنند، و برخی سایتها (بهویژه آنهایی که از سیاستهای امنیتی 'best practice' پیروی میکنند) تنها اجازه پاسخهای NTLMv2 را میدهند، نه پاسخهای ضعیفتر LM یا NTLM.
هنگامی که client use spnego نیز روی yes تنظیم شده باشد، امنیت ارتقایافته (SPNEGO) الزامی است تا از NTLMv2 صرفاً درون NTLMSSP استفاده شود. این رفتار همراه با وصلههای مربوط به CVE-2016-2111 معرفی شد.
Default: client NTLMv2 auth = yes
client plaintext auth (G)
بدین معنی که در آینده، مقدار پیشفرض فعلی client plaintext auth = no رفتار اجباری خواهد بود.
مشخص میکند که اگر سرور از گذرواژههای رمزشده پشتیبانی نکند، آیا کلاینت باید گذرواژه را به صورت متن ساده (plaintext) ارسال کند یا خیر.
Default: client plaintext auth = no
client protection (G)
تنظیمات ممکن کلاینت عبارتند از:
client schannel (G)
این گزینه کنترل میکند که آیا کلاینت استفاده از netlogon schannel را پیشنهاد میدهد یا حتی تقاضا میکند. client schannel = no کانال schannel را پیشنهاد نمیدهد، client schannel = auto کانال schannel را پیشنهاد میدهد اما آن را اجباری نمیکند، و client schannel = yes اگر سرور قادر به استفاده از netlogon schannel نباشد، دسترسی را رد میکند.
توجه داشته باشید که برای دامنههای اکتیو دایرکتوری (Active Directory) این مقدار بهصورت سختکدشده (hardcoded) برابر با client schannel = yes است.
این گزینه توسط گزینه require strong key نادیده گرفته و جایگزین (override) میشود.
Default: client schannel = yes
Example: client schannel = auto
client signing (G)
هنگامی که روی desired یا default تنظیم شود، امضای SMB پیشنهاد میشود، اما اجباری نخواهد بود.
هنگامی که روی required تنظیم شود، امضای SMB اجباری است و اگر روی disabled تنظیم گردد، امضای SMB حتی پیشنهاد نیز داده نخواهد شد.
اتصالات IPC$ برای DCERPC برای مثال در winbindd، توسط گزینه client ipc signing مدیریت میشوند.
Default: client signing = default
client smb encrypt (G)
اثرات برای SMB1
هنگامی که روی default تنظیم شود، رمزنگاری SMB بررسی (probe) میشود، اما اجباری نخواهد بود. هنگامی که روی required تنظیم شود، رمزنگاری SMB الزامی است و اگر روی disabled تنظیم شود، امکان مذاکره برای رمزنگاری SMB وجود ندارد.
اثرات برای SMB3 و جدیدتر
این قابلیتها را میتوان با تنظیمات client smb encrypt به شرح زیر کنترل کرد:
Default: client smb encrypt = default
client smb3 encryption algorithms (G)
همچنین میتوان با قرار دادن پیشوند '-' پیش از الگوریتمها، آنها را به صورت تکی از فهرست پیشفرض حذف کرد. این کار از نیاز به مشخص کردن یک فهرست ثابت (hardcoded) جلوگیری میکند.
نکته: حذف AES-128-CCM از فهرست منجر به در دسترس نبودن SMB3_00 و SMB3_02 خواهد شد، چرا که این مورد، الگوریتم پیشفرض و تنها الگوریتم موجود برای این لهجهها است.
Default: client smb3 encryption algorithms = AES-128-GCM, AES-128-CCM, AES-256-GCM, AES-256-CCM
Example: client smb3 encryption algorithms = AES-256-GCM
Example: client smb3 encryption algorithms = -AES-128-GCM -AES-128-CCM
client smb encryption over quic (G)
client smb encrypt استفاده از سازوکار رمزنگاری معرفیشده با SMB3.0 را کنترل میکند. اگر مقدار client smb encryption over quic بر روی no تنظیم شده باشد، و کلاینت از طریق یک اتصال معتبر QUIC (و در نتیجه TLS) متصل شود، کلاینت برای جلوگیری از رمزنگاری دوگانه، الزامات ناشی از پارامتر client smb encrypt را نادیده میگیرد.
اگر client smb encryption over quic روی مقدار پیشفرض خود یعنی yes باقی بماند، کلاینت از طریق TCP معمولی متصل شود، یا tls verify peer روی مقداری کمتر از ca_and_name تنظیم شده باشد، الزامات client smb encrypt اعمال خواهند شد.
توجه داشته باشید که رمزنگاری لایه QUIC مبتنی بر گواهی سطح TLS ارائهشده توسط سرور است. رمزنگاری لایه SMB مبتنی بر نشستهای کاربری مجزا و در نتیجه اساساً بر پایه اعتبارنامههای اولیه کاربر مانند گذرواژه کاربر یا اعتبارنامههای معادلِ مورد استفاده برای ورود به یک نشست Windows است. این موضوع ممکن است بر ارزیابی امنیتی شما درباره پارامتر client smb encryption over quic تأثیر بگذارد.
Default: client smb encryption over quic = yes
client smb3 signing algorithms (G)
همچنین میتوان با قرار دادن پیشوند '-' پیش از الگوریتمها، آنها را به صورت تکی از فهرست پیشفرض حذف کرد. این کار از نیاز به مشخص کردن یک فهرست ثابت (hardcoded) جلوگیری میکند.
نکته: حذف AES-128-CMAC از فهرست منجر به در دسترس نبودن SMB3_00 و SMB3_02 خواهد شد، و حذف HMAC-SHA256 موجب در دسترس نبودن SMB2_02 و SMB2_10 میشود، چرا که این موارد، الگوریتمهای پیشفرض و تنها الگوریتمهای در دسترس برای این لهجهها هستند.
Default: client smb3 signing algorithms = AES-128-GMAC, AES-128-CMAC, HMAC-SHA256
Example: client smb3 signing algorithms = AES-128-CMAC, HMAC-SHA256
Example: client smb3 signing algorithms = -AES-128-CMAC
client smb transports (G)
ترتیب آنها مهم است، چرا که به همان ترتیب با تأخیرهای کوتاه برای حالتهای جایگزین (fallback) آزمایش میشوند.
لایه انتقال 'tcp' از tcp خام با یک سرآیند طول ۴ بایتی به ازای هر PDU پروتکل SMB استفاده میکند. درگاه پیشفرض برای 'tcp' عدد ۴۴۵ است. سایر درگاهها را میتوان با افزودن آنها پس از ':' مشخص کرد، مانند 'tcp:1445'.
لایه انتقال 'nbt' از فریمبندی netbios بر روی tcp به ازای هر PDU پروتکل SMB استفاده میکند. درگاه پیشفرض برای 'nbt' عدد ۱۳۹ است. سایر درگاهها را میتوان با افزودن آنها پس از ':' مشخص کرد، مانند 'nbt:1139'.
لایه انتقال 'quic' از پروتکل quic بر روی udp استفاده میکند. درگاه پیشفرض برای 'quic' عدد ۴۴۳ است. سایر درگاهها را میتوان با افزودن آنها پس از ':' مشخص کرد، مانند 'quic:1443'. گزینههای زیر نیز مرتبط هستند: tls enabled، tls ca directories، tls trust system cas، tls cafile، tls certfile، tls keyfile و tls verify peer.
نکته: 'quic' به ماژول هسته quic.ko برای Linux از https://github.com/lxin/quic نیاز دارد (آزمایششده با Linux 6.14). نسخههای آینده Linux ممکن است به صورت بومی از آن پشتیبانی کنند.
درگاههای عددی به عنوان 'tcp' مدیریت میشوند، به جز درگاه '139' که به عنوان 'nbt' مدیریت میشود.
توجه داشته باشید که در حال حاضر محدودیتی معادل ۱۰ انتقال یکتا وجود دارد و تمام موارد دیگر نادیده گرفته خواهند شد.
Default: client smb transports = tcp, nbt
Example: client smb transports = 445
Example: client smb transports = tcp, tcp:1445
Example: client smb transports = 8000, nbt:1139
Example: client smb transports = tcp, quic, nbt
Example: client smb transports = +quic
client use kerberos (G)
تنظیمات ممکن برای این گزینه عبارتند از:
Default: client use kerberos = desired
client use krb5 netlogon (G)
این گزینه کنترل میکند که آیا winbindd (و سایر ابزارهای کلاینت) تلاش کنند از ServerAuthenticateKerberos برای کانال امن netlogon استفاده کنند یا خیر.
این رفتار میتواند به ازای هر دامنه NetBIOS با استفاده از گزینه 'client use krb5 netlogon:NETBIOSDOMAIN = yes|no' کنترل شود.
این گزینه توسط گزینه reject aes netlogon servers (در صورتی که به صورت مؤثر فعال باشد) بازنویسی (override) میشود و اجازه میدهد client use krb5 netlogon نیز yes باشد.
مقدار 'default' در حال حاضر به 'no' نگاشت میشود.
معنای 'auto' به کتابخانه Kerberos استفاده شده و نوع اعتماد (trust)/دامنه بستگی دارد.
اگر سامبا با '--without-ads' یا '--with-system-heimdalkrb5' کامپایل شده باشد، امکان فعالسازی ویژگی ServerAuthenticateKerberos وجود ندارد، زیرا تابع krb5_init_creds_step() در دسترس نیست. این امر 'auto' را وادار میکند تا مانند 'no' رفتار کند.
مقدار 'auto' در صورتی که دامنه به عنوان یک دامنه Active Directory تشخیص داده شود (مثلاً با 'SECURITY = ADS' یا روی یک دامین کنترلر Active Directory)، به 'yes' نگاشت میشود.
هشدار: این گزینه در این نسخه Samba آزمایشی است (بخش VERSION را در ادامه ببینید) و نباید در محیطهای عملیاتی استفاده شود!
Default: client use krb5 netlogon = default
Example: client use krb5 netlogon = no
Example: client use krb5 netlogon = auto
Example: client use krb5 netlogon = yes
client use spnego (G)
بدین معنا که در آینده، رفتار پیشفرض فعلی client use spnego = yes به صورت اجباری اعمال خواهد شد.
این متغیر کنترل میکند که آیا کلاینتهای Samba برای توافق بر سر یک سازوکار احراز هویت با سرورهای پشتیبانیکننده (شامل WindowsXP، Windows2000 و Samba 3.0)، تلاش کنند از مذاکره ساده و محافظتشده یا Simple and Protected NEGOtiation (طبق مشخصات rfc2478) استفاده کنند یا خیر. این گزینه بهویژه احراز هویت Kerberos را ممکن میسازد.
هنگامی که client NTLMv2 auth نیز بر روی yes تنظیم شده باشد، امنیت گسترشیافته (SPNEGO) برای استفاده از NTLMv2 صرفاً در بستر NTLMSSP الزامی است. این رفتار با وصلههای مربوط به CVE-2016-2111 معرفی شد.
Default: client use spnego = yes
cluster addresses (G)
Default: cluster addresses =
Example: cluster addresses = 10.0.0.1 10.0.0.2 10.0.0.3
clustering (G)
این پارامتر را تنها در صورتی بر روی yes تنظیم کنید که یک پیکربندی کلاستر با ctdb در حال اجرا داشته باشید.
Default: clustering = no
comment (S)
اگر میخواهید رشتهای را که در کنار نام ماشین نمایش داده میشود تنظیم کنید، پارامتر server string را ببینید.
Default: comment = # No comment
Example: comment = Fred's Files
config backend (G)
نکته: این گزینه نمیتواند درون خودِ پیکربندی رجیستری تنظیم شود.
Default: config backend = file
Example: config backend = registry
config file (G)
به همین دلیل، اگر هنگام بارگذاری پارامترها نام فایل پیکربندی تغییر کرده باشد، پارامترها مجدداً از فایل پیکربندی جدید بارگذاری خواهند شد.
این گزینه جایگزینی متغیرهای معمول را میپذیرد که میتواند بسیار مفید باشد.
اگر فایل پیکربندی وجود نداشته باشد بارگذاری نخواهد شد (که به شما اجازه میدهد فایلهای پیکربندی را فقط برای چند کلاینت خاص سفارشی کنید).
No default
Example: config file = /usr/local/samba/lib/smb.conf.%m
copy (S)
این ویژگی به شما امکان میدهد یک سرویس «الگو» (template) راهاندازی کرده و سرویسهای مشابه را به آسانی ایجاد نمایید. توجه داشته باشید سرویسی که کپی میشود باید در فایل پیکربندی پیش از سرویسی که کپیبرداری را انجام میدهد قرار گرفته باشد.
Default: copy =
Example: copy = otherservice
create krb5 conf (G)
جلوگیری از انجام این کار توسط winbind ممکن است زمانی ضروری شود که نیاز داشته باشید گزینههای خاصی را به فایل krb5.conf سیستم خود اضافه کنید که winbind آنها را در نظر نمیگیرد.
Default: create krb5 conf = yes
create mode
create mask (S)
مقدار پیشفرض این پارامتر، بیتهای نوشتن و اجرای مربوط به group و other را از حالتهای UNIX حذف میکند.
به دنبال آن، Samba حالت UNIX ایجاد شده از این پارامتر را به صورت بیتی با مقدار پارامتر force create mode (که به طور پیشفرض روی 000 تنظیم شده است) «OR» میکند.
این پارامتر بر ماسکهای دایرکتوری تأثیری ندارد. برای جزئیات بیشتر به پارامتر directory mask مراجعه کنید.
Default: create mask = 0744
Example: create mask = 0775
csc policy (S)
این مقادیر متناظر با موارد مورد استفاده در سرورهای Windows هستند.
به عنوان مثال، اشتراکهای حاوی پروفایلهای سرگردان (roaming profiles) میتوانند کش آفلاین را با استفاده از csc policy = disable غیرفعال کنند.
Default: csc policy = manual
Example: csc policy = programs
ctdbd socket (G)
این پارامتر نباید در محیطهای عملیاتی تنظیم شود. اگر تنظیم نشود، مقدار پیشفرض زمان ساخت (که مقدار صحیح است) استفاده خواهد شد.
Default: ctdbd socket =
Example: ctdbd socket = /var/run/altctdb/ctdbd.socket
ctdb locktime warn threshold (G)
مقدار پیشفرض 0 این لاگگیری را غیرفعال میکند.
Default: ctdb locktime warn threshold = 0
ctdb timeout (G)
هنگامی که بخشی از کلاستر مسدود (block) میشود، ممکن است به مدت نامحدود در انتظار ctdb بمانیم که این امر وضعیت مسدودی را تشدید میکند. در یک کلاستر بدون نقص این اتفاق نباید رخ دهد، اما اجزای بسیار زیادی در یک کلاستر وجود دارند که ممکن است دچار وقفه یا اختلال موقت شوند. انتخاب تعادل مناسب برای این مقدار بسیار حساس است، زیرا در یک کلاستر شلوغ، زمانهای طولانی سرویسدهی برای انتقال دادهها در سراسر کلاستر ممکن است معتبر و طبیعی باشد. تنظیم این مقدار بر روی عددی بسیار کوتاه کیفیت سرویسدهی کلاستر شما را کاهش میدهد، و تنظیم بیش از حد طولانی آن ممکن است مانع از آن شود که کلاستر بتواند پس از یک خرابی جدی در مدتزمان معقول بازیابی شود.
توجه داشته باشید که در صورت تنظیم این پارامتر، حتماً باید در فایل smb.conf قرار گیرد؛ قرار دادن آن در پیکربندی رجیستری (که در کلاسترها متداول است) مفید نخواهد بود، زیرا دسترسی به رجیستری نیازمند برقراری ارتباط با ctdb است.
تنظیم ctdb timeout بر روی n باعث میشود هر فرآیندی که بیش از n میلیثانیه در انتظار پاسخ از کلاستر بماند دچار هراس (panic) شود. تنظیم آن بر روی 0 (پیشفرض) موجب میشود Samba تا ابد منتظر بماند (مسدود شود)، که این مقدار پیشفرض به شدت توصیه میشود.
Default: ctdb timeout = 0
cups connection timeout (G)
در صورت تنظیم، این گزینه تعداد ثانیههایی را مشخص میکند که smbd هنگام تلاش برای برقراری ارتباط با سرور CUPS منتظر خواهد ماند. اگر برقراری اتصال بیش از این تعداد ثانیه طول بکشد، ناموفق خواهد بود.
Default: cups connection timeout = 30
Example: cups connection timeout = 60
cups encrypt (G)
هنگامی که بر روی auto تنظیم شود، در هر برپایی اتصال با CUPS برای انجام یک مصافحه (handshake) TLS تلاش خواهد شد. در صورت شکست، به عملکرد غیررمزنگاریشده بازگشت داده میشود.
Default: cups encrypt = no
cups options (S)
شما میتوانید هر گزینه عمومی چاپ شناختهشده برای CUPS (همانطور که در «راهنمای کاربران نرمافزار» CUPS ذکر شده) را ارسال کنید. همچنین میتوانید هر گزینه اختصاصی چاپگر (همانطور که در «lpoptions -d printername -l» فهرست شده) که برای صف مقصد معتبر است را ارسال نمایید. پارامترهای چندگانه باید مطابق با مشخصات ABNF مربوط به گزینههای متنی PAPI، به صورت جفتهای نام/مقدار جداشده با فاصله باشند. مقادیر مجموعهای («name={a=... b=... c=...}») به همراه آکولادها به صورت دستنخورده ذخیره میشوند.
در صورتی که فایل error_log سرور CUPS شما هنگام چاپ از طریق یک کلاینت Windows به واسطه Samba حاوی پیامهایی مانند «Unsupported format 'application/octet-stream'» است، باید این پارامتر را بر روی raw تنظیم کنید. دیگر نیازی به فعالسازی چاپ خام (raw) به صورت سراسری در /etc/cups/mime.{convs,types} نیست.
Default: cups options = ""
Example: cups options = "raw media=a4"
cups server (G)
در صورت تنظیم، این گزینه بر گزینه ServerName در فایل client.conf مربوط به CUPS اولویت داشته و آن را بازنویسی میکند. این قابلیت در صورتی که سرورهای مجازی samba دارید که به دیمنهای مختلف CUPS متصل میشوند، ضروری است.
به صورت اختیاری، میتوان یک درگاه (پورت) را با جدا کردن نام سرور و شماره پورت توسط دونقطه (:) مشخص کرد. اگر پورتی مشخص نشود، پورت پیشفرض برای IPP (شماره 631) استفاده خواهد شد.
Default: cups server = ""
Example: cups server = mycupsserver
Example: cups server = mycupsserver:1631
dcerpc endpoint servers (G)
Default: dcerpc endpoint servers = epmapper, samr, netlogon, lsarpc, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver
Example: dcerpc endpoint servers = rpcecho
deadtime (G)
این قابلیت برای جلوگیری از تحلیل رفتن منابع سرور توسط تعداد زیادی از اتصالهای غیرفعال مفید است.
بیشتر کلاینتها هنگام قطع اتصال دارای ویژگی اتصال مجدد خودکار هستند، بنابراین در بیشتر موارد این پارامتر نباید برای کاربران محسوس باشد.
استفاده از این پارامتر با یک مهلت زمانی چند دقیقهای برای اکثر سیستمها توصیه میشود.
مقدار صفر برای deadtime نشان میدهد که هیچ قطع اتصال خودکاری نباید انجام شود.
Default: deadtime = 10080
Example: deadtime = 15
debug class (G)
برای دریافت اطلاعات بیشتر در مورد کلاسهای اشکالزدایی موجود، بخش مربوط به log level را ببینید.
Default: debug class = no
debug encryption (G)
هشدار: دسترسی به این مقادیر امکان رمزگشایی هرگونه ترافیک رمزنگاریشده در نشستهای تخلیهشده را فراهم میکند. این گزینه تنها باید برای اهداف اشکالزدایی فعال شود.
Default: debug encryption = no
debug hires timestamp (G)
توجه داشته باشید که پارامتر debug timestamp یا debug syslog format باید فعال باشد تا این گزینه اثرگذار شود.
Default: debug hires timestamp = yes
debug pid (G)
توجه داشته باشید که پارامتر debug timestamp باید فعال باشد تا این گزینه اثرگذار شود.
Default: debug pid = no
debug prefix timestamp (G)
توجه داشته باشید که این پارامتر بر پارامتر debug timestamp اولویت دارد و آن را باطل میکند.
Default: debug prefix timestamp = no
debug syslog format (G)
مقدار always این قالب لاگ را حتی در STDOUT یا STDERR نیز اعمال میکند.
مقدار no رویه را به سایر پارامترها واگذار کرده و معمولاً لاگهای سنتی دوسطری Samba را در فایلهای لاگ تولید میکند.
اگر debug hires timestamp نیز فعال باشد، در این صورت به جای آن از برچسب زمانی مطابق با RFC5424 استفاده میشود.
Default: debug syslog format = no
winbind debug traceid (G)
Default: winbind debug traceid = yes
debug uid (G)
توجه داشته باشید که پارامتر debug timestamp باید فعال باشد تا این گزینه اثرگذار شود.
Default: debug uid = no
dedicated keytab file (G)
Default: dedicated keytab file =
Example: dedicated keytab file = /usr/local/etc/krb5.keytab
default case (S)
Default: default case = lower
default devmode (S)
بیشتر مشکلات در ارائه درایورهای چاپگر به کلاینتهای Windows NT/2k/XP به مشکلی در حالت دستگاهِ تولیدشده برمیگردد. برخی از درایورها با یک devmode تهی (NULL) کارهایی مانند کرش دادن Explorer.exe کلاینت را انجام میدهند. با این حال، درایورهای چاپگر دیگری نیز میتوانند باعث از کار افتادن سرویس اسپولر کلاینت (spoolsv.exe) شوند اگر devmode توسط خود درایور ایجاد نشده باشد (یعنی smbd یک devmode پیشفرض تولید کند).
این پارامتر باید با احتیاط استفاده شده و با درایور چاپگر مورد نظر آزمایش شود. بهتر است حالت دستگاه روی NULL رها شود و به کلاینت ویندوز اجازه داده شود تا مقادیر صحیح را تنظیم کند. از آنجا که درایورها همیشه این کار را انجام نمیدهند، مقداردهی default devmode = yes به smbd دستور میدهد تا یک مورد پیشفرض ایجاد کند.
برای اطلاعات بیشتر در مورد چاپ و Device Modes در Windows NT/2k، مستندات MSDN را ببینید.
Default: default devmode = yes
default
default service (G)
هیچ مقدار پیشفرضی برای این پارامتر وجود ندارد. اگر این پارامتر تعیین نشود، تلاش برای اتصال به یک سرویس ناموجود منجر به خطا میشود.
به طور معمول سرویس پیشفرض یک سرویس guest ok و read only خواهد بود.
همچنین توجه داشته باشید که نام ظاهری سرویس مطابق با نام سرویس درخواستشده تغییر خواهد کرد؛ این قابلیت بسیار مفید است زیرا به شما امکان میدهد از ماکروهایی مانند %S برای ایجاد یک سرویس عام (wildcard) استفاده کنید.
توجه داشته باشید که هر نویسه "_" در نام سرویسِ استفادهشده در سرویس پیشفرض به یک "/" نگاشت خواهد شد. این امر امکان پیادهسازی موارد جالبی را فراهم میسازد.
Default: default service =
Example: default service = pub
defer sharing violations (G)
یونیکس (UNIX) به طور پیشفرض این رفتار را ندارد.
هیچ دلیلی برای غیرفعال کردن این پارامتر وجود ندارد، چرا که طراحی شده تا سامبا بتواند ویندوز را به شکل دقیقتری شبیهسازی کند.
Default: defer sharing violations = yes
delete group script (G)
Default: delete group script =
deleteprinter command (G)
برای یک میزبان سامبا این بدان معناست که چاپگر باید به صورت فیزیکی از سیستم چاپ زیرین حذف شود. پارامتر deleteprinter command اسکریپتی را برای اجرا مشخص میکند که عملیات لازم برای حذف چاپگر از سیستم چاپ و از smb.conf را انجام میدهد.
گزینه deleteprinter command به صورت خودکار تنها با یک پارامتر فراخوانی میشود: printer name.
هنگامی که deleteprinter command اجرا شد، smbd فایل smb.conf را مجدداً تجزیه میکند تا بررسی کند که چاپگر مربوطه دیگر وجود ندارد. اگر نام اشتراک همچنان معتبر باشد، آنگاه smbd یک خطای ACCESS_DENIED به کلاینت برمیگرداند.
Default: deleteprinter command =
Example: deleteprinter command = /usr/bin/removeprinter
delete readonly (S)
این گزینه ممکن است برای اجرای برنامههایی مانند rcs مفید باشد؛ جایی که مالکیت فایل در UNIX مانع از تغییر مجوزهای فایل میشود، و معناشناسی DOS مانع از حذف یک فایل فقطخواندنی میگردد.
Default: delete readonly = no
delete share command (G)
برای اجرای موفقیتآمیز delete share command، دیمن smbd نیاز دارد که مدیر سیستم با استفاده از یک حساب ریشه (یعنی uid == 0) متصل شود یا دارای امتیاز SeDiskOperatorPrivilege باشد. اسکریپتهای تعریفشده در پارامتر delete share command با دسترسی ریشه (root) اجرا میشوند.
هنگام اجرا، smbd به طور خودکار delete share command را با دو پارامتر فراخوانی میکند.
Default: delete share command =
Example: delete share command = /usr/local/bin/delshare
delete user from group script (G)
Default: delete user from group script =
Example: delete user from group script = /usr/sbin/deluser %u %g
delete user script (G)
این اسکریپت زمانی فراخوانی میشود که یک کلاینت از راه دور، کاربری را از کارساز حذف کند که معمولاً با استفاده از 'User Manager for Domains' یا rpcclient انجام میگیرد.
این اسکریپت باید نام کاربری UNIX دادهشده را حذف کند.
Default: delete user script =
Example: delete user script = /usr/local/samba/bin/del_user %u
delete veto files (S)
اگر این گزینه روی yes تنظیم شود، آنگاه سامبا تلاش خواهد کرد تا تمامی فایلها و دایرکتوریهای درون دایرکتوری وتوشده را به صورت بازگشتی حذف کند. این قابلیت میتواند برای یکپارچهسازی با سیستمهای اشتراک فایل مانند NetAtalk مفید باشد که فایلهای متا را درون دایرکتوریهایی ایجاد میکنند که شما معمولاً کاربران DOS/Windows را از دیدن آنها منع میکنید (مانند .AppleDouble).
تنظیمِ delete veto files = yes به این دایرکتوریها اجازه میدهد هنگام حذف دایرکتوری والد، به طور نامحسوس حذف شوند (تا زمانی که کاربر دسترسیهای لازم برای این کار را داشته باشد).
Default: delete veto files = no
dfree cache time (S)
این پارامتر جدیدی است که در نسخه 3.0.21 سامبا معرفی شده است. این پارامتر مدت زمانی را به ثانیه مشخص میکند که smbd خروجی یک پرسوجوی فضای خالی دیسک (disk free) را کَش خواهد کرد. اگر روی صفر (پیشفرض) تنظیم شود، هیچ کَشینگی انجام نمیشود. این به سرورهای با بار سنگین اجازه میدهد تا از فراخوانی سریع و پیدرپی اسکریپتهای dfree command که موجب افزایش بار سیستم میشود جلوگیری کنند.
به طور پیشفرض مقدار این پارامتر صفر است، یعنی هیچ کَشینگی انجام نخواهد شد.
بدون پیشفرض
Example: dfree cache time = 60
dfree command (S)
این تنظیم امکان جایگزینی روالهای داخلی محاسبه فضای کل دیسک و مقدار فضای در دسترس را با یک روال خارجی فراهم میکند. مثال زیر اسکریپت احتمالی را نشان میدهد که میتواند این کارکرد را برآورده سازد.
در نسخه 3.0.21 سامبا این پارامتر به یک پارامتر به ازای هر اشتراک (per-share) تغییر یافته است، و علاوه بر آن پارامتر dfree cache time اضافه شده است تا امکان کَش کردن خروجی این اسکریپت برای سیستمهای تحت بار سنگین فراهم شود.
به این برنامه خارجی یک پارامتر ارسال میشود که نشاندهنده یک دایرکتوری در سیستمفایل مورد پرسوجو است. این مقدار معمولاً شامل رشته ./ خواهد بود. اسکریپت باید دو عدد صحیح را در قالب ASCII بازگرداند. عدد اول باید کل فضای دیسک بر حسب بلوک، و عدد دوم باید تعداد بلوکهای در دسترس باشد. مقدار بازگشتی سوم و اختیاری میتواند اندازه بلوک را بر حسب بایت مشخص کند. اندازه بلوک پیشفرض ۱۰۲۴ بایت است.
نکته: اسکریپت شما نباید دارای مجوزهای setuid یا setgid باشد و باید در مالکیت کاربر root باشد (و تنها توسط root قابل نوشتن باشد)!
در جایی که اسکریپت dfree (که باید قابل اجرا شود) میتواند چنین باشد:
#!/bin/sh
df "$1" | tail -1 | awk '{print $(NF-4),$(NF-2)}'
یا احتمالاً (در سیستمهای مبتنی بر Sys V):
#!/bin/sh
/usr/bin/df -k "$1" | tail -1 | awk '{print $3" "$5}'
توجه داشته باشید که ممکن است در برخی سیستمها مجبور شوید نام دستورها را با مسیر کامل آنها جایگزین کنید. همچنین توجه داشته باشید آرگومانهای ارسالی به اسکریپت باید در داخل اسکریپت درون علامت نقلقول قرار گیرند تا در صورت وجود کاراکترهای خاص مانند فاصله یا خطوط جدید مشکلی پیش نیاید.
به طور پیشفرض، روالهای داخلی برای تعیین ظرفیت دیسک و فضای باقیمانده استفاده خواهند شد.
بدون پیشفرض
Example: dfree command = /usr/local/samba/bin/dfree
dgram port (G)
Default: dgram port = 138
directory mode
directory mask (S)
هنگام ایجاد یک دایرکتوری، مجوزهای لازم بر اساس نگاشت حالتهای DOS به مجوزهای UNIX محاسبه شده و سپس حالت نهایی UNIX به صورت بیتی با این پارامتر AND منطقی ('AND'ed) میشود. این پارامتر را میتوان به عنوان یک ماسک (MASK) بیتی برای حالتهای UNIX یک دایرکتوری در نظر گرفت. هر بیتی که در اینجا تنظیم نشده باشد، هنگام ایجاد دایرکتوری از حالتهای تنظیمشده روی آن حذف خواهد شد.
مقدار پیشفرض این پارامتر بیتهای نوشتن 'group' (گروه) و 'other' (دیگران) را از حالت UNIX حذف میکند و تنها به کاربری که مالک دایرکتوری است اجازه میدهد آن را تغییر دهد.
به دنبال آن، سامبا حالت UNIX ایجاد شده از این پارامتر را به صورت بیتی با مقدار پارامتر force directory mode مقایسه و OR منطقی ('OR') میکند. این پارامتر به طور پیشفرض روی 000 تنظیم شده است (یعنی هیچ بیت حالت اضافی افزوده نمیشود).
Default: directory mask = 0755
Example: directory mask = 0775
directory security mask (S)
بدون پیشفرض
disable netbios (G)
نکته
کلاینتهایی که فقط از NetBIOS پشتیبانی میکنند، در صورت غیرفعال بودن پشتیبانی از NetBIOS قادر به دیدن سرور سامبای شما نخواهند بود.
disable spoolss (G)
Default: disable spoolss = no
dmapi support (S)
توجه داشته باشید که سامبا با بررسی رویدادهایی که یک برنامه DMAPI تمایل خود را برای آنها ثبت کرده است، وضعیت فایل را استنباط میکند. این روش ابتکاری برای تعدادی از سیستمهای ذخیرهسازی سلسلهمراتبی رضایتبخش است، اما ممکن است سیستمهایی وجود داشته باشند که این روش در آنها ناموفق باشد. در این حالت، سامبا ممکن است به اشتباه فایلها را آفلاین گزارش دهد.
این پارامتر تنها در صورتی در دسترس است که پیادهسازی پشتیبانیشدهای از DMAPI در زمان کامپایل یافت شده باشد. همچنین فقط زمانی استفاده خواهد شد که DMAPI در زمان اجرا روی سیستم فعال باشد.
Default: dmapi support = no
dns hostname (G)
این مقدار
در موارد
زیر
استفاده
میشود:
net ads dns register
Default: dns hostname = [netbios name].[realm]
Example: dns hostname = client-hostname.example.com
dns forwarder (G)
فورواردکننده DNS تنها در صورتی استفاده میشود که از سرور DNS داخلی سامبا استفاده شود. شماره پورتها را میتوان با جدا کردن آنها از آدرس به وسیله دونقطه (':') اضافه کرد. هنگام تعیین پورت، آدرسهای IPv6 باید در براکت ('[' و ']') قرار گیرند. آدرسهای فورواردر IPv6 بدون پورت مشخص، نیازی به براکت ندارند و پیشفرض آنها پورت ۵۳ است.
Default: dns forwarder =
Example: dns forwarder = 192.168.0.1 192.168.0.2 ::1 [2001:db8::1] [2001:db8:1:2::1]:54
dns port (G)
این گزینه امکان استفاده از یک سرور DNS دیگر را به عنوان پیشرو (front) و فوروارد به سامبا فراهم میسازد.
هشدار
بهروزرسانیهای پویای DNS (Dynamic DNS) ممکن است در هنگام فوروارد به سامبا توسط سرور DNS پیشرو پروکسی نشوند. پروکسی کردن بهروزرسانی پویای DNS به قابلیتهای سرور DNS دیگر که به عنوان پیشرو استفاده میشود بستگی دارد.
dns proxy (G)
توجه داشته باشید که حداکثر طول برای یک نام NetBIOS برابر ۱۵ نویسه است، بنابراین نام DNS (یا نام مستعار DNS) نیز به همین صورت حداکثر میتواند ۱۵ نویسه باشد.
دیمن nmbd یک رونوشت دوم از خود ایجاد (انشعاب) میکند تا درخواستهای جستجوی نام DNS را انجام دهد، چرا که انجام جستجوی نام یک عملیات مسدودکننده (blocking) است.
Default: dns proxy = yes
dns update command (G)
Default: dns update command = /build/samba/src/samba-4.24.6/source4/scripting/bin/samba_dnsupdate
Example: dns update command = /usr/local/sbin/dnsupdate
dns zone scavenging (G)
هشدار
این گزینه نباید برای محیطهای ایجادشده با نسخههای Samba قبل از 4.9 فعال شود. انجام این کار منجر به از دست رفتن ورودیهای ایستا (static) در DNS خواهد شد. دلیل این امر وجود یک اشکال در نسخههای قبلی Samba (اشکال BUG 12451) است که رکوردهای پویای DNS را به عنوان ایستا، و رکوردهای ایستا را به عنوان پویا علامتگذاری میکرد.
نکته
اگر یک رکورد برای یک نام DNS از نوع ایستا (بدون انقضا / non-aging) باشد، هیچ رکورد دیگری برای آن نام DNS پاکسازی نخواهد شد.
dns zone transfer clients allow (G)
فهرست IP با ویرگول و فاصله از هم جدا میشود و با همان ساختار استفادهشده در hosts allow مشخص میگردد، بهویژه شامل نشانیهای IP، پیشوندهای IP و ماسکهای نشانی IP.
از آنجایی که این گزینه مربوط به سرور DNS است، طبیعتاً نامهای میزبان (hostnames) مجاز نیستند.
رفتار پیشفرض، رد کردن هرگونه درخواست است. یک درخواست تنها در صورتی مجاز خواهد بود که کلاینت ارسالکننده در این فهرست مشخص شده باشد، و در dns zone transfer clients deny وجود نداشته باشد.
Default: dns zone transfer clients allow =
Example: dns zone transfer clients allow = 192.168.0.1
dns zone transfer clients deny (G)
فهرست IP با ویرگول و فاصله از هم جدا میشود و با همان ساختار استفادهشده در hosts allow مشخص میگردد، بهویژه شامل نشانیهای IP، پیشوندهای IP و ماسکهای نشانی IP.
از آنجایی که این گزینه مربوط به سرور DNS است، طبیعتاً نامهای میزبان مجاز نیستند.
اگر کلاینتی که در این فهرست مشخص شده است درخواست انتقال منطقه ارسال کند، همواره رد خواهد شد، حتی اگر در dns zone transfer clients allow قرار داشته باشد. این ویژگی امکان تعریف کلاینتهای غیرمجاز مشخص را در یک زیرشبکهٔ (subnet) مجاز فراهم میکند.
Default: dns zone transfer clients deny =
Example: dns zone transfer clients deny = 192.168.0.1
domain logons (G)
بدین معنا که در آینده، مقدار پیشفرض فعلی یعنی domain logons = no رفتار اجباری خواهد بود.
در صورت تنظیم روی yes، سرور Samba سرویس netlogon را برای ورودهای شبکهٔ Windows 9X مربوط به workgroup که در آن قرار دارد فراهم میکند. این کار همچنین باعث میشود که سرور Samba به عنوان یک کنترلکنندهٔ دامنه برای سرویسهای دامنه به سبک NT4 عمل کند. برای جزئیات بیشتر در مورد راهاندازی این ویژگی، به فصل Domain Control از مجموعه راهنماهای Samba HOWTO Collection مراجعه کنید.
Default: domain logons = no
domain master (G)
توجه داشته باشید که کنترلکنندههای اصلی دامنه در Windows NT (موسوم به PDC) بهطور پیشفرض انتظار دارند بتوانند مدعی این نام خاص NetBIOS مربوط به workgroup شوند که آنها را به عنوان domain master browser برای آن workgroup مشخص میکند (یعنی هیچ راهی برای جلوگیری از تلاش یک Windows NT PDC برای انجام این کار وجود ندارد). این بدان معناست که اگر این پارامتر تنظیم شده باشد و nmbd پیش از آنکه Windows NT PDC بتواند اقدام کند، مدعی نام ویژه برای یک workgroup شود، آنگاه مرور بین زیرشبکهها رفتاری عجیب نشان داده و ممکن است با خطا مواجه شود.
اگر domain logons = yes باشد، رفتار پیشفرض فعال کردن پارامتر domain master است. اگر domain logons فعال نباشد (تنظیم پیشفرض)، آنگاه domain master نیز بهطور پیشفرض فعال نخواهد بود.
هنگامی که domain logons = Yes باشد، تنظیم پیشفرض برای این پارامتر Yes است که منجر به این میشود که Samba یک PDC باشد. اگر domain master = No باشد، Samba به عنوان یک BDC عمل خواهد کرد. بهطور کلی، این پارامتر تنها در یک BDC باید روی 'No' تنظیم شود.
Default: domain master = auto
dont descend (S)
توجه داشته باشید که Samba ممکن است در مورد قالب دقیق ورودیهای "dont descend" بسیار سختگیر باشد. به عنوان مثال ممکن است به جای صرفاً /proc به ./proc نیاز داشته باشید. آزمودن بهترین رویکرد است :-)
Default: dont descend =
Example: dont descend = /proc,/dev
dos charset (G)
مقدار پیشفرض بستگی به این دارد که چه مجموعههای نویسهای را نصب کرده باشید. سامبا سعی میکند از charset 850 استفاده کند اما در صورتی که در دسترس نباشد به ASCII بازمیگردد. برای بررسی پیشفرض روی سیستم خود، testparm(1) را اجرا کنید.
بدون مقدار پیشفرض
dos filemode (S)
Default: dos filemode = no
dos filetime resolution (S)
این گزینه عمدتاً به عنوان یک گزینهٔ سازگاری برای Visual C++ هنگام استفاده با اشتراکهای Samba به کار میرود. اگر oplocks روی یک اشتراک فعال باشد، Visual C++ از دو فراخوانی مختلف خواندن زمان برای بررسی اینکه آیا فایل از زمان آخرین خواندن تغییر کرده است یا خیر استفاده میکند. یکی از این فراخوانیها از تفکیکپذیری یکثانیهای و دیگری از تفکیکپذیری دوثانیهای استفاده میکند. از آنجا که فراخوانی دوثانیهای هر ثانیهٔ فرد را به سمت پایین گرد میکند، در نتیجه اگر فایل برچسب زمانی با ثانیهٔ فرد داشته باشد، دو برچسب زمانی مطابقت نخواهند داشت و Visual C++ مدام گزارش میدهد که فایل تغییر کرده است. تنظیم این گزینه باعث میشود که دو برچسب زمانی مطابقت داشته باشند و مشکل Visual C++ برطرف شود.
Default: dos filetime resolution = no
dos filetimes (S)
Default: dos filetimes = yes
dsdb event notification (G)
این گزینه برای ثبت وقایع حسابرسی (audit logging) شرح داده شده در log level مورد نیاز نیست.
در عوض، این قابلیت باید به عنوان یک گزینهٔ مخصوص توسعهدهندگان در نظر گرفته شود (به مجموعه آزمونهای Samba کمک میکند) نه امکانی برای حسابرسی خارجی، زیرا تحویل پیام تضمینشده نیست (ویژگیای که مجموعه آزمون آن را دور میزند).
رویدادهای پایگاهدادهٔ Samba همچنین از طریق روشهای عادی ثبت وقایع، زمانی که log level بهطور مناسب (مثلاً روی dsdb_json_audit:5) تنظیم شده باشد، ثبت میشوند.
Default: dsdb event notification = no
dsdb group change notification (G)
این گزینه برای ثبت رخدادهای بازرسی شرح داده شده در log level لازم نیست.
در عوض، این مورد باید به عنوان یک گزینه توسعهدهندگان (جهت کمک به مجموعهآزمونهای Samba) در نظر گرفته شود تا سازوکاری برای بازرسی خارجی، چرا که تحویل قطعی پیامها تضمین نمیشود (ویژگیای که مجموعهآزمونها آن را مدیریت و دور میزنند).
رخدادهای پایگاهداده Samba همچنین از طریق روشهای عادی ثبت لاگ، در زمانی که log level بهطور مناسب، برای مثال روی dsdb_group_json_audit:5 تنظیم شده باشد، در لاگ ثبت میشوند.
Default: dsdb group change notification = no
dsdb password event notification (G)
این گزینه برای ثبت گزارشهای بازرسی شرح داده شده در log level لازم نیست.
در عوض، این مورد باید بیشتر به عنوان گزینهای برای توسعهدهندگان (جهت کمک به مجموعهآزمونهای Samba) تلقی شود تا امکاناتی برای بازرسی خارجی، زیرا تحویل قطعی پیامها تضمین نمیشود (ویژگیای که مجموعهآزمونها آن را دور میزنند).
رخدادهای پایگاه داده Samba همچنین از طریق روشهای عادی ثبت لاگ، زمانی که log level بهدرستی تنظیم شده باشد، مثلاً به صورت dsdb_password_json_audit:5، در لاگ ثبت میشوند.
Default: dsdb password event notification = no
durable handles (S)
توجه داشته باشید که دستگیرههای پایا تنها زمانی فعال میشوند که kernel oplocks = no، kernel share modes = no و posix locking = no باشند؛ یعنی اگر اشتراک فقط برای دسترسی CIFS/SMB2 پیکربندی شده باشد و از ویژگیهای همکنشپذیری با فرایندهای محلی UNIX یا عملیات NFS پشتیبانی نکند.
همچنین توجه داشته باشید که در حال حاضر، برای دستگیرهای که فلگ delete on close روی آن تنظیم شده باشد، قابلیت پایداری اعطا نمیشود.
Default: durable handles = yes
ea support (S)
توجه داشته باشید که پروتکل SMB امکان تنظیم مشخصههایی با مقدار تا اندازه 64K بایت را میدهد و در NTFS، حداکثر فضای ذخیرهسازی برای مشخصههای توسعهیافته به ازای هر فایل 64K است. در برخی سیستمفایلها ممکن است این محدودیتها کمتر باشد. سیستمفایلهایی با فضای بیش از حد محدود برای EA ممکن است با رفتارهای غیرمنتظره و عجیبی مواجه شوند. مقدار پیشفرض در نگارش 4.9.0 و بالاتر Samba به yes تغییر یافته است تا سازگاری بهتری با فایلسرور ویندوز در نصب پیشفرض فراهم شود.
Default: ea support = yes
elasticsearch:address (S)
Default: elasticsearch:address = localhost
Example: elasticsearch:address = needle.haystack.samba.org
elasticsearch:default_fields (G)
این گزینه فهرستی از مشخصههای Elasticsearch را انتظار دارد که با کاما از یکدیگر جدا شده و هر مشخصه باید داخل گیومه مضاعف (double quotes) قرار گیرد.
Default: elasticsearch:default_fields = "file.filename", "content"
Example: elasticsearch:default_fields = "foo", "bar"
elasticsearch:force substring search (G)
Default: elasticsearch:force substring search = no
Example: elasticsearch:force substring search = yes
elasticsearch:ignore unknown attribute (G)
Default: elasticsearch:ignore unknown attribute = no
Example: elasticsearch:ignore unknown attribute = yes
elasticsearch:ignore unknown type (G)
Default: elasticsearch:ignore unknown type = no
Example: elasticsearch:ignore unknown type = yes
elasticsearch:index (S)
Default: elasticsearch:index = _all
Example: elasticsearch:index = spotlight
elasticsearch:mappings (G)
Default: elasticsearch:mappings = /usr/share/samba/elasticsearch_mappings.json
Example: elasticsearch:mappings = /usr/share/foo/mymappings.json
elasticsearch:max results (S)
Default: elasticsearch:max results = 100
Example: elasticsearch:max results = 10
elasticsearch:port (S)
Default: elasticsearch:port = 9200
Example: elasticsearch:port = 9201
elasticsearch:use tls (S)
Default: elasticsearch:use tls = no
Example: elasticsearch:use tls = yes
enable asu support (G)
Default: enable asu support = no
enable core files (G)
Default: enable core files = yes
Example: enable core files = no
enable privileges (G)
نمونهای از نحوه استفاده از امتیازها، اعطای حق پیوستن کلاینتها به یک دامنه تحت کنترل سامبا بدون فراهم کردن دسترسی ریشه (root) به سرور از طریق smbd است.
لطفاً توضیحات مبسوط ارائهشده در مستندات Samba HOWTO را مطالعه کنید.
Default: enable privileges = yes
enable spoolss (G)
Default: enable spoolss = yes
encrypt passwords (G)
بدین معنا که در آینده، مقدار پیشفرض فعلی encrypt passwords = yes رفتار اجباری خواهد بود.
این گزینه بولی کنترل میکند که آیا رمزهای عبور رمزنگاریشده با کلاینت مذاکره میشوند یا خیر. توجه داشته باشید که ویندوز NT 4.0 SP3 و بالاتر و همچنین ویندوز 98 بهطور پیشفرض انتظار رمزهای عبور رمزنگاریشده دارند مگر اینکه یک مدخل رجیستری تغییر یابد. برای استفاده از رمزهای عبور رمزنگاریشده در سامبا به فصل «پایگاهداده کاربر» (User Database) در مجموعه Samba HOWTO مراجعه کنید.
کلاینتهای ویندوز مایکروسافت که انتظار رمزهای عبور رمزنگاریشده مایکروسافت را دارند و پشتیبانی از رمزهای متن ساده در آنها فعال نیست، تنها میتوانند به سرور سامبایی متصل شوند که پشتیبانی از رمز عبور رمزنگاریشده در آن فعال باشد و حسابهای کاربری آن دارای رمز عبور رمزنگاریشده معتبر باشند. برای کسب اطلاعات درباره ایجاد رمزهای عبور رمزنگاریشده برای حسابهای کاربری به صفحه راهنمای دستور smbpasswd مراجعه کنید.
استفاده از رمزهای عبور متن ساده توصیه نمیشود چرا که پشتیبانی از این ویژگی دیگر در محصولات ویندوز مایکروسافت نگهداری نمیشود. اگر میخواهید از رمزهای عبور متن ساده استفاده کنید، باید این پارامتر را روی no تنظیم کنید.
برای اینکه رمزهای عبور رمزنگاریشده بهدرستی کار کنند، smbd(8) باید یا به فایل محلی smbpasswd(5) دسترسی داشته باشد (برای اطلاعات در مورد نحوه راهاندازی و نگهداری این فایل برنامه smbpasswd(8) را ببینید)، یا پارامتر security = [domain|ads] تنظیم شده باشد که باعث میشود smbd احراز هویت را در برابر سرور دیگری انجام دهد.
Default: encrypt passwords = yes
enhanced browsing (G)
اولین بهبود در انتشار مرور شامل یک پرسوجوی دورهای با نویسه عمومی (wildcard) به یک سرور Samba WINS برای همه Domain Master Browserها است که پس از آن یک همگامسازی مرور با هر یک از DMBهای برگشتی انجام میشود. دومین بهبود شامل یک همگامسازی مرور تصادفی دورهای با تمام DMBهای شناختهشده فعلی است.
اگر با مشکل ناپدید نشدن گروههای کاری (workgroups) خالی از فهرستهای مرور مواجه هستید، ممکن است بخواهید این گزینه را غیرفعال کنید. بهدلیل محدودیتهای پروتکلهای مرور، این بهبودها میتوانند باعث شوند که یک گروه کاری خالی برای همیشه باقی بماند که میتواند آزاردهنده باشد.
بهطور کلی باید این گزینه را فعال بگذارید زیرا باعث پایداری و قابلیت اطمینان بسیار بیشتر در انتشار مرور بین زیرشبکهای میشود.
Default: enhanced browsing = yes
enumports command (G)
Default: enumports command =
Example: enumports command = /usr/bin/listports
eventlog list (G)
مدیر سیستم باید از یک فرآیند خارجی برای تجزیه لاگهای معمول یونیکس مانند /var/log/messages و سپس نوشتن ورودیها در فایلهای tdb گزارش وقایع (eventlog) استفاده کند. برای نحوه نوشتن مدخلهای گزارش وقایع، به ابزار eventlogadm(8) مراجعه کنید.
Default: eventlog list =
Example: eventlog list = Security Application Syslog Apache
fake directory create times (S)
این گزینه عمدتاً به عنوان یک گزینه سازگاری برای Visual C++ هنگام استفاده روی اشتراکهای سامبا استفاده میشود. makefileهای تولیدشده توسط Visual C++ دایرکتوری اشیا (object directory) را به عنوان وابستگی برای هر فایل شیء (object file) و یک قاعده ساخت (make rule) برای ایجاد دایرکتوری دارند. همچنین، هنگامی که NMAKE برچسبهای زمانی را مقایسه میکند، هنگام بررسی یک دایرکتوری از زمان ایجاد استفاده میکند. بنابراین دایرکتوری شیء در صورت عدم وجود ایجاد میشود، اما به محض اینکه وجود داشته باشد همیشه برچسب زمانی قدیمیتری نسبت به فایلهای شیء درون خود خواهد داشت.
با این حال، معناشناسی زمانی یونیکس بدین معناست که زمان ایجاد گزارششده توسط سامبا هر زمان که فایلی در دایرکتوری ایجاد یا حذف شود بهروزرسانی خواهد شد. NMAKE تمام فایلهای شیء را در دایرکتوری شیء پیدا میکند. سپس برچسب زمانی آخرین فایل ساختهشده با برچسب زمانی دایرکتوری شیء مقایسه میشود. اگر برچسب زمانی دایرکتوری تازهتر باشد، تمام فایلهای شیء دوباره ساخته خواهند شد. فعال کردن این گزینه اطمینان حاصل میکند که دایرکتوریها همیشه پیش از محتویات خود تاریخگذاری شوند و ساخت NMAKE طبق انتظار پیش برود.
Default: fake directory create times = no
fake oplocks (S)
هنگامی که fake oplocks = yes را تنظیم میکنید، smbd(8) همیشه درخواستهای oplock را صرفنظر از اینکه چند کلاینت از فایل استفاده میکنند، اعطا خواهد کرد.
بهطور کلی بسیار بهتر است به جای این پارامتر، از پشتیبانی واقعی oplocks استفاده کنید.
اگر این گزینه را روی تمام اشتراکهای فقطخواندنی یا اشتراکهایی که میدانید در هر زمان فقط توسط یک کلاینت مورد دسترسی قرار میگیرند (مانند رسانههای فیزیکی فقطخواندنی مثل CDROMها) فعال کنید، بهبود عملکرد بزرگی را در بسیاری از عملیاتها مشاهده خواهید کرد. اگر این گزینه را روی اشتراکهایی فعال کنید که چندین کلاینت ممکن است بهطور همزمان با دسترسی خواندن/نوشتن به فایلها دسترسی داشته باشند، ممکن است دچار خرابی دادهها (data corruption) شوید. از این گزینه با احتیاط استفاده کنید!
Default: fake oplocks = no
follow symlinks (S)
این گزینه بهطور پیشفرض فعال است (یعنی smbd پیوندهای نمادین را دنبال خواهد کرد).
Default: follow symlinks = yes
smbd force process locks (S)
این گزینه نباید از مقدار پیشفرض تغییر یابد مگر اینکه بدانید چه کاری انجام میدهید.
Default: smbd force process locks = no
force create mode (S)
مثال زیر تمام فایلهای تازه ایجادشده را وادار میکند که مجوزهای خواندن و اجرا برای «group» و «other» و همچنین بیتهای خواندن/نوشتن/اجرا برای «user» را داشته باشند.
Default: force create mode = 0000
Example: force create mode = 0755
force directory mode (S)
مثال زیر تمام دایرکتوریهای ایجادشده را وادار میکند که مجوزهای خواندن و اجرا برای «group» و «other» و همچنین بیتهای خواندن/نوشتن/اجرا برای «user» را داشته باشند.
Default: force directory mode = 0000
Example: force directory mode = 0755
force directory security mode (S)
No default
group
force group (S)
در Samba 2.0.5 و بالاتر این پارامتر عملکرد گسترشیافتهای به این صورت دارد: اگر نام گروه ذکرشده در اینجا با نویسه «+» شروع شود، تنها در صورتی گروه اصلی پیشفرض کاربرِ جاریِ متصل به اشتراک به این گروه تعیین میشود که آن کاربر پیشاپیش عضو آن گروه باشد. این به مدیر سیستم امکان میدهد تا تعیین کند تنها کاربرانی که در حال حاضر در یک گروه خاص عضو هستند، فایلهایی با مالکیت گروهی تنظیمشده روی آن گروه ایجاد کنند. این امر دقت بالاتری را در تخصیص مالکیت فراهم میکند. برای مثال، تنظیم force group = +sys بدین معناست که تنها کاربرانی که از قبل عضو گروه sys هستند، هنگام دسترسی به این اشتراک سامبا، گروه اصلی پیشفرض آنها به sys تغییر خواهد یافت. سایر کاربران گروه اصلی عادی خود را حفظ خواهند کرد.
اگر پارامتر force user نیز تنظیم شده باشد، گروه مشخصشده در force group بر گروه اصلی تعیینشده در force user ارجحیت خواهد داشت.
Default: force group =
Example: force group = agroup
force printername (S)
هنگام تخصیص یک درایور جدید به چاپگر در یک سرور چاپ سازگار با ویندوز مانند سامبا، کلاینت ویندوز نام چاپگر را تغییر میدهد تا با نام درایور بارگذاریشده تطابق داشته باشد. این امر در صورتی که چندین چاپگر به یک درایور متصل باشند میتواند منجر به سردرگمی کاربران شود. برای جلوگیری از اینکه سامبا اجازه دهد printername چاپگر با نام اشتراک (sharename) تعریفشده در smb.conf تفاوت داشته باشد، مقدار force printername = yes را تنظیم کنید.
توجه داشته باشید که فعالسازی این پارامتر ممکن است بر مهاجرت چاپگرها از یک سرور ویندوز به سامبا تأثیر بگذارد، زیرا ویندوز راهی برای اجبار به یکسان بودن نام اشتراک و printername ندارد.
توصیه میشود پس از اینکه چاپگر مورد استفاده کلاینتها قرار گرفت مقدار این پارامتر تغییر داده نشود، زیرا ممکن است باعث شود کاربر نتواند اتصالات چاپگر را از پوشه محلی Printers خود حذف کند.
Default: force printername = no
force security mode (S)
No default
force unknown acl user (S)
این پارامتر بهگونهای طراحی شده است که به کلاینتهای Windows NT اجازه دهد فایلها و پوشههای حاوی ACLهایی را که بهصورت محلی روی ماشین کلاینت ایجاد شدهاند و فقط شامل کاربران محلی همان ماشین هستند (نه کاربران دامنه)، در سرور سامبا کپی کنند (معمولاً با XCOPY /O) و شناسه کاربر و شناسه گروه ناشناخته مالک فایل به کاربر متصل فعلی نگاشت شود. این مورد تنها زمانی میتواند بهدرستی برطرف شود که winbindd اجازه نگاشت دلخواه از هر SID مربوط به Windows NT به یک uid یا gid یونیکسی را بدهد.
هنگامی که دستور XCOPY /O خطای ACCESS_DENIED میدهد، استفاده از این پارامتر را امتحان کنید.
Default: force unknown acl user = no
force user (S)
این نام کاربری تنها پس از برقراری اتصال به کار گرفته میشود. بنابراین کلاینتها همچنان باید به عنوان یک کاربر معتبر متصل شده و یک گذرواژه معتبر ارائه دهند. پس از برقراری اتصال، صرفنظر از این که کلاینت با چه نام کاربری متصل شده است، تمام عملیاتهای فایلی به عنوان «کاربر اجباری» (forced user) انجام خواهد شد. این ویژگی میتواند بسیار مفید باشد.
در Samba 2.0.5 و بالاتر، این پارامتر همچنین باعث میشود گروه اصلیِ کاربرِ اجباری، به عنوان گروه اصلی برای تمامی فعالیتهای فایلی استفاده شود. پیش از نسخه 2.0.5، گروه اصلی همان گروه اصلیِ کاربرِ متصلشونده باقی میماند (که این یک باگ بود).
Default: force user =
Example: force user = auser
fss: prune stale (G)
Default: fss: prune stale = no
Example: fss: prune stale = yes
fss: sequence timeout (G)
Default: fss: sequence timeout = 180 or 1800, depending on operation
Example: fss: sequence timeout = 0
fstype (S)
Default: fstype = NTFS
Example: fstype = Samba
get quota command (G)
این گزینه تنها در صورتی در دسترس است که سامبا همراه با پشتیبانی از سهمیهبندی (quotas) کامپایل شده باشد.
این پارامتر باید مسیر اسکریپتی را مشخص کند که اطلاعات سهمیهبندی (quota) را برای کاربر/گروه مشخصشده در پارتیشنی که دایرکتوری تعیینشده روی آن قرار دارد، استعلام میکند.
به چنین اسکریپتی ۳ آرگومان داده میشود:
نوع استعلام میتواند یکی از موارد زیر باشد:
Example: get quota command = /usr/local/sbin/query_quota
getwd cache (G)
Default: getwd cache = yes
gpo update command (G)
Default: gpo update command = /build/samba/src/samba-4.24.6/source4/scripting/bin/samba-gpupdate
Example: gpo update command = /usr/local/sbin/gpoupdate
guest account (G)
در برخی سیستمها ممکن است حساب مهمان پیشفرض "nobody" قادر به چاپ نباشد. در این حالت از حساب دیگری استفاده کنید. شما باید با تلاش برای ورود بهعنوان کاربر مهمان خود (احتمالاً با استفاده از دستور su - ) و تلاش برای چاپ با دستور چاپ سیستم مانند lpr(1) یا lp(1) این موضوع را آزمایش کنید.
این پارامتر ماکروهای % را نمیپذیرد، زیرا بخشهای زیادی از سیستم برای عملکرد صحیح نیاز دارند که این مقدار ثابت بماند.
Default: guest account = nobody # default can be changed at compile-time
Example: guest account = ftp
public
guest ok (S)
این پارامتر مزایای تنظیم restrict anonymous = 2 را بیاثر میکند.
برای اطلاعات بیشتر درباره این گزینه، بخش مربوط به security در ادامه را ببینید.
Default: guest ok = no
only guest
guest only (S)
برای اطلاعات بیشتر درباره این گزینه، بخش مربوط به security در ادامه را ببینید.
Default: guest only = no
hide dot files (S)
Default: hide dot files = yes
hide files (S)
هر مدخل در فهرست باید با یک '/' جدا شود، که اجازه میدهد فاصلهها نیز در مدخل گنجانده شوند. مانند کاراکترهای عام (wildcards) در DOS، میتوان از '*' و '?' برای مشخص کردن چندین فایل یا دایرکتوری استفاده کرد.
همچنین میتوان از hide files بهعنوان یک گزینه پارامتری استفاده کرد که در آن NAME در
hide files : NAME =
یک نام کاربری یا گروه را با همان نحو valid users مشخص میکند. این شکل پارامتری میتواند چندین بار برای کاربران یا گروههای مختلف مشخص شود. این بدان معناست که مقادیر "hide files : NAME" که هم در بخش [global] و هم در بخش اشتراک تنظیم شدهاند با یکدیگر جمع میشوند، در حالی که بهطور معمول گزینههای تنظیمشده در یک بخش اشتراک، مقدار پیشفرض در بخش [global] را بازنویسی میکنند.
هر مدخل باید یک مسیر Unix باشد نه یک مسیر DOS، و نباید شامل جداکننده دایرکتوری Unix یعنی '/' باشد.
توجه داشته باشید که گزینه حساسیت به کوچکی و بزرگی حروف (case sensitivity) در پنهان کردن فایلها اعمال میشود.
تنظیم این پارامتر بر کارایی Samba تأثیر خواهد گذاشت، چرا که مجبور است هنگام پیمایش فایلها و دایرکتوریها، تطابق همه آنها را بررسی کند.
مثال نشان داده شده بر اساس فایلهایی است که کلاینت SMB مکینتاش (DAVE) ارائهشده توسط Thursby برای مصارف داخلی ایجاد میکند، و همچنین تمامی فایلهایی که با نقطه آغاز میشوند را مخفی نگه میدارد.
یک مثال از کاربرد این پارامتر:
hide files = /.*/DesktopFolderDB/TrashFor%m/resource.frk/ ; مخفی کردن برخی فایلها برای همه و برخی برای کاربران و گروههای خاص hide files = /hideforall1/ hide files : USER = /hidetoforuser/ hide files : GROUP = /hideforgroup/ hide files : UNIVERSITY\Alumnis = /somefile.txt/ hide files : john@university.org = /anotherfile.txt/ hide files : S-1-5-21-123-456-789-1000 = /secretfile.txt/
Default: hide files = # no file are hidden
hide new files timeout (S)
این گزینه میتواند برای بارهای کاری از نوع صف ورود/پردازش (ingest/process queue) استفاده شود. یک برنامه پردازشی باید فقط فایلهایی را ببیند که قطعاً کامل شدهاند. از آنجا که بسیاری از برنامهها کنترل جریان کاری خارجی مناسبی ندارند، این روش میتواند راهی برای اطمینان از این باشد که پردازش با فرآیند ورود فایل تداخل پیدا نمیکند.
Default: hide new files timeout = 0
hide special files (S)
Default: hide special files = no
hide unreadable (S)
لطفاً توجه داشته باشید که فعالسازی این گزینه میتواند سرعت فهرست کردن دایرکتوریهای بزرگ را بهطور چشمگیری کاهش دهد. Samba باید ACLهای تمامی اعضای دایرکتوری را ارزیابی کند، که میتواند پردازش بسیار سنگینی باشد.
Default: hide unreadable = no
hide unwriteable files (S)
لطفاً توجه داشته باشید که فعالسازی این گزینه میتواند سرعت فهرست کردن دایرکتوریهای بزرگ را بهطور چشمگیری کاهش دهد. Samba باید ACLهای تمامی اعضای دایرکتوری را ارزیابی کند، که میتواند پردازش بسیار سنگینی باشد.
Default: hide unwriteable files = no
honor change notify privilege (S)
اگر "honor change notify privilege" فعال باشد، کاربر تنها در صورتی نتایج اعلان را دریافت خواهد کرد که دارای امتیاز change notify یا دسترسیهای کافی در سیستم فایل باشد. اگر کاربری دارای امتیاز change notify باشد، تمام نتایج اعلان درخواستی را دریافت خواهد کرد، حتی اگر کاربر دسترسیهای لازم را در سیستم فایل نداشته باشد.
Default: honor change notify privilege = no
host msdfs (G)
همچنین پارامتر سطح اشتراک msdfs root را ببینید. برای اطلاعات بیشتر در مورد راهاندازی درخت Dfs در Samba، به فصل MSFDS در کتاب Samba3-HOWTO مراجعه کنید.
Default: host msdfs = yes
hostname lookups (G)
Default: hostname lookups = no
Example: hostname lookups = yes
allow hosts
hosts allow (S)
این پارامتر مجموعهای از میزبانها است که با کاما، فاصله یا تب از هم جدا شدهاند و مجاز به دسترسی به یک سرویس هستند.
اگر در بخش [global] مشخص شود، بدون توجه به اینکه آیا یک سرویس مجزا تنظیم متفاوتی دارد یا خیر، بر روی تمامی سرویسها اعمال خواهد شد.
میتوانید میزبانها را با نام یا شماره IP مشخص کنید. بهعنوان مثال، میتوانید دسترسی را فقط به میزبانهای یک زیرشبکه کلاس C با عبارتی شبیه به allow hosts = 150.203.5. محدود کنید. نحو کامل این فهرست در صفحه راهنمای hosts_access(5) توصیف شده است. توجه داشته باشید که این صفحه راهنما ممکن است در سیستم شما وجود نداشته باشد، بنابراین یک توضیح مختصر نیز در اینجا ارائه میشود.
توجه داشته باشید که آدرس localhost یعنی 127.0.0.1 همواره اجازه دسترسی خواهد داشت، مگر اینکه بهطور مشخص توسط گزینه hosts deny رد شده باشد.
همچنین اگر سیستم شما از netgroupها پشتیبانی کند، میتوانید میزبانها را با جفتهای network/netmask و با نامهای netgroup مشخص کنید. کلیدواژه EXCEPT نیز میتواند برای محدود کردن یک فهرست دارای کاراکتر عام (wildcard) استفاده شود. مثالهای زیر میتوانند کمککننده باشند:
مثال ۱: اجازه به تمام IPها در 150.203.*.*؛ بهجز یکی
hosts allow = 150.203. EXCEPT 150.203.6.66
مثال ۲: اجازه به میزبانهایی که با network/netmask دادهشده مطابقت دارند
hosts allow = 150.203.15.0/255.255.255.0
مثال ۳: اجازه به چند میزبان
hosts allow = lapland, arvidsjaur
مثال ۴: اجازه فقط به میزبانهای موجود در گروه شبکه NIS با نام "foonet"، اما منع دسترسی از یک میزبان خاص
hosts allow = @foonet
hosts deny = pirate
نکته
توجه داشته باشید که دسترسی همچنان نیازمند گذرواژههای مناسب در سطح کاربر است.
Default: hosts allow = # none (i.e., all hosts permitted access)
Example: hosts allow = 150.203.5. myhost.mynet.edu.au
deny hosts
hosts deny (S)
در صورتی که لازم باشد همه میزبانها بهطور پیشفرض رد شوند، از کلیدواژه ALL (یا ماسک شبکه 0.0.0.0/0) استفاده کرده و سپس در پارامتر hosts allow = hosts allow میزبانهایی را که باید اجازه دسترسی داشته باشند بهصورت صریح مشخص کنید.
Default: hosts deny = # none (i.e., no hosts specifically excluded)
Example: hosts deny = 150.203.4. badhost.mynet.edu.au
idmap backend (G)
این گزینه بکاند پیشفرضی را مشخص میکند که در صورت نبود پیکربندی خاصی استفاده میشود، اما اکنون به نفع نگارش جدید idmap config * : backend منسوخ شده است.
Default: idmap backend = tdb
idmap cache time (G)
Default: idmap cache time = 604800
idmap config DOMAIN : OPTION (G)
بنابراین پیکربندی idmap به گروههایی تقسیم میشود: یک گروه برای هر دامین که باید پیکربندی شود، و یک گروه با نویسه ستاره به جای نام دامین واقعی، که پیکربندی پیشفرضی را مشخص میکند که برای در بر گرفتن تمام دامینهایی به کار میرود که پیکربندی صریح idmap مختص به خود را ندارند.
سه گزینه عمومی در دسترس است:
backend = backend_name
سه مورد اول نگاشتهای خود را با استفاده از شمارندههای داخلی unixid ایجاد کرده و نگاشتها را در یک پایگاه داده ذخیره میکنند. این موارد برای استفاده در پیکربندی پیشفرض idmap مناسب هستند. بکاندهای rid و hash از یک محاسبه کاملاً الگوریتمی برای تعیین unixid برای یک SID استفاده میکنند. ماژول autorid ترکیبی از بکاندهای tdb و rid است. این ماژول برای هر دامینی که با آن مواجه میشود محدودههایی ایجاد کرده و سپس از الگوریتم rid برای هر یک از این دامینهای بهطور خودکار پیکربندیشده بهصورت مجزا استفاده میکند. بکاند ad از شناسههای unix ذخیرهشده در Active Directory از طریق افزونههای استاندارد اسکیما (schema extensions) استفاده میکند. بکاند nss تنظیم استاندارد winbindd را معکوس کرده و شناسههای unix را از طریق نامها از nsswitch دریافت میکند که میتواند در یک ساختار ldap مفید باشد.
range = low - high
سرویس winbind از این پارامتر برای یافتن بکاندی که برای نگاشت شناسه unix به SID صاحباختیار است استفاده میکند، بنابراین باید برای هر دامین که بهطور جداگانه پیکربندی شده و برای پیکربندی پیشفرض تنظیم شود. محدودههای پیکربندیشده باید دوبهدو مجزا باشند.
توجه داشته باشید که مقدار low با گزینه min domain uid برهمکنش دارد!
read only = yes|no
مثال زیر نحوه پیکربندی بکاند idmap_ad(8) را برای دامین CORP و بکاند idmap_tdb(8) را برای سایر دامینها نشان میدهد. این پیکربندی فرض میکند که مدیر CORP شناسههای unix زیر ۱۰۰۰۰۰۰ را از طریق افزونههای SFU اختصاص میدهد و قرار است winbind از یک میلیون مدخل بعدی برای نگاشتهای خود از دامینهای مورد اعتماد و برای مثال برای گروههای محلی استفاده کند.
idmap config * : backend = tdb idmap config * : range = 1000000-1999999 idmap config CORP : backend = ad idmap config CORP : range = 1000-999999
No default
winbind gid
idmap gid (G)
گزینه idmap config را ببینید.
Default: idmap gid =
Example: idmap gid = 10000-20000
idmap negative cache time (G)
Default: idmap negative cache time = 120
winbind uid
idmap uid (G)
گزینه idmap config را ببینید.
Default: idmap uid =
Example: idmap uid = 10000-20000
include (S)
این گزینه جایگزینیهای استاندارد متغیرها را میپذیرد، به جز %u، %P و %S.
پارامتر include = registry معنای ویژهای دارد: این پارامتر فایلی به نام registry را از دایرکتوری کاری جاری وارد نمیکند، بلکه گزینههای پیکربندی سراسری را از رجیستری میخواند. برای جزئیات به بخش پیکربندی مبتنی بر رجیستری مراجعه کنید. توجه داشته باشید که این گزینه اشتراکهای رجیستری را بهطور خودکار فعال میکند.
Default: include =
Example: include = /usr/local/samba/lib/admin_smb.conf
include system krb5 conf (G)
Default: include system krb5 conf = yes
inherit acls (S)
Default: inherit acls = no
inherit owner (S)
گزینههای معتبر عبارتند از:
گزینه unix only پیوند بین مالک Windows یک فایل و مالک UNIX آن را عملاً از بین میبرد. به عنوان یک نتیجه منطقی، در این حالت تنظیم مالک Windows یک فایل، مالک UNIX آن را تغییر نمیدهد. استفاده از این حالت معمولاً باید با یک فضای ذخیرهسازی پشتیبان ترکیب شود که بتواند مدل کامل NT ACL را بدون تأثیر بر مجوزهای POSIX شبیهسازی کند، مانند ماژول acl_xattr VFS همراه با acl_xattr:ignore system acls = yes. این پیکربندی میتواند برای شبیهسازی سهمیهبندی دایرکتوریها (folder quotas) در مواردی که فایلها فقط از طریق SMB (بدون افزونههای UNIX) ارائه میشوند به کار رود. مالک UNIX یک دایرکتوری بهطور محلی تنظیم شده و به تمام زیردایرکتوریها و فایلها به ارث میرسد، و همه آنها از همان سهمیه مصرف میکنند.
Default: inherit owner = no
inherit permissions (S)
دایرکتوریهای جدید حالت (mode) دایرکتوری والد را به ارث میبرند، از جمله بیتهایی مانند setgid.
فایلهای جدید بیتهای خواندن/نوشتن (read/write) خود را از دایرکتوری والد به ارث میبرند. بیتهای اجرایی (execute) آنها طبق معمول همچنان توسط map archive، map hidden و map system تعیین میشوند.
توجه داشته باشید که بیت setuid هرگز از طریق ارثبری تنظیم نمیشود (کد برنامه صراحتاً از این کار جلوگیری میکند).
این پارامتر بهویژه در سیستمهای بزرگ با کاربران زیاد (شاید چندین هزار کاربر) برای امکان استفاده انعطافپذیر هر کاربر از یک اشتراک واحد [homes] بسیار مفید است.
Default: inherit permissions = no
init logon delay (G)
Default: init logon delay = 100
init logon delayed hosts (G)
میزان این تأخیر را میتوان با پارامتر init logon delay مشخص کرد.
Default: init logon delayed hosts =
Example: init logon delayed hosts = 150.203.5. myhost.mynet.de
interfaces (G)
این گزینه فهرستی از رشتههای رابط شبکه را دریافت میکند. هر رشته میتواند به یکی از اشکال زیر باشد:
پارامترهای "IP" بالا میتوانند یک آدرس IP دهدهی نقطهدار کامل یا یک نام میزبان باشند که از طریق سازوکارهای استاندارد تحلیل نام میزبان سیستمعامل بررسی و پیدا خواهد شد.
بهطور پیشفرض، سامبا تمام رابطهای فعالی را که قابلیت برودکست دارند، به جز آداپتور لوپبک (آدرس IP 127.0.0.1)، فعال میکند.
به منظور پشتیبانی از پیکربندیهای چندکانالهٔ SMB3 (SMB3 multi-channel)، دیمن smbd پارامترهای اضافی خاصی را متوجه میشود که میتوانند پس از رابط اصلی با این نحو توسعهیافته اضافه شوند (توجه داشته باشید که استفاده از علامت نقلقول جهت مدیریت نویسههای ; و , الزامی است):
"interface[;key1=value1[,key2=value2[...]]]"
کلیدهای شناختهشده عبارتند از speed، capability، if_index و options. مقدار speed بر حسب بیت بر ثانیه مشخص میشود. قابلیتهای شناختهشده RSS و RDMA هستند. مقدار if_index باید بااحتیاط استفاده شود: این مقادیر نباید با اندیسهای استفادهشده توسط هسته تداخل داشته باشند. توجه داشته باشید که این گزینهها عمدتاً برای آزمایش و توسعه در نظر گرفته شدهاند تا استفاده در محیطهای عملیاتی. دستکم در سیستمهای لینوکس، این مقادیر باید بهطور خودکار تشخیص داده شوند، اما این تنظیمات میتوانند به عنوان آخرین راهحل در مواقعی که تشخیص خودکار کار نمیکند یا در دسترس نیست، به کار روند. مقادیر مشخصشده، مقادیر تشخیصدادهشدهٔ خودکار را بازنویسی میکنند.
مقادیر مجاز برای options عبارتند از "dynamic" و "nodynamic". از این گزینه در ترکیب با تنظیم bind interfaces only استفاده کنید. مقدار "dynamic" را به کار ببرید تا smbd هنگام اضافه شدن یا حذف شدن آدرسهای IP از رابط، سوکتهای شنود را روی آن باز/بسته کند. مقدار "nodynamic" را برای نادیده گرفتن هرگونه رویداد افزودن/حذف IP در رابط به کار ببرید. لطفاً توجه داشته باشید که با حذف یک آدرس IP، اتصالات برقرار با آن آدرس IP نیز خاتمه مییابند (رفتار سنتی بر این بوده است که جریان TCP زنده نگه داشته شود).
توجه داشته باشید که باز و بسته کردن پویای سوکتهای شنود تنها در برخی سیستمهای عامل (در حال حاضر لینوکس) در دسترس است.
دو مثال اول زیر، سه رابط شبکه مربوط به دستگاه eth0 و آدرسهای IP 192.168.2.10 و 192.168.3.10 را پیکربندی میکنند. ماسک شبکهٔ دو رابط آخر روی 255.255.255.0 تنظیم میشود.
سایر مثالها نحوهٔ تعیین پارامترهای اضافی را برای هر رابط نشان میدهند. به کاربرد احتمالی "," و ";" دقت کنید که استفاده از علامت جفتنقلقول (double quoting) را ضروری میسازد.
Default: interfaces =
Example: interfaces = eth0 192.168.2.10/24 192.168.3.10/255.255.255.0
Example: interfaces = eth0, 192.168.2.10/24; 192.168.3.10/255.255.255.0
Example: interfaces = "eth0;if_index=65,speed=1000000000,capability=RSS"
Example: interfaces = "lo;speed=1000000000" "eth0;capability=RSS"
Example: interfaces = "lo;speed=1000000000" , "eth0;capability=RSS"
Example: interfaces = "eth0;capability=RSS" , "rdma1;capability=RDMA" ; "rdma2;capability=RSS,capability=RDMA"
Example: interfaces = "eth0;options=dynamic"
invalid users (S)
نامی که با '@' آغاز شود، ابتدا به عنوان یک netgroup در NIS (در صورتی که سیستم شما از NIS پشتیبانی کند) و سپس در صورتی که نام در پایگاه دادهٔ netgroup در NIS یافت نشود، به عنوان یک گروه یونیکس تفسیر میشود.
نامی که با '+' آغاز شود، صرفاً از طریق رابط NSS getgrnam() با جستجو در پایگاه دادهٔ گروههای یونیکس تفسیر میگردد. نامی که با '&' آغاز شود، منحصراً با جستجو در پایگاه دادهٔ netgroup در NIS تفسیر خواهد شد (این امر مستلزم فعال بودن NIS در سیستم شما است). نویسههای '+' و '&' میتوانند با هر ترتیبی در ابتدای نام به کار روند؛ بنابراین مقدار +&group به معنای بررسی پایگاه دادهٔ گروههای یونیکس و سپس پایگاه دادهٔ netgroup در NIS است، و مقدار &+group به معنای بررسی پایگاه دادهٔ netgroup در NIS و سپس پایگاه دادهٔ گروههای یونیکس است (مشابه پیشوند '@').
نام سرویس فعلی به جای %S جایگزین میشود. این ویژگی در بخش [homes] کاربردی است.
Default: invalid users = # no invalid users
Example: invalid users = root fred admin @wheel
iprint server (G)
در صورت تنظیم، این گزینه پارامتر ServerName را در فایل client.conf مربوط به CUPS بازنویسی میکند. این تنظیم در شرایطی که سرورهای مجازی سامبا داشته باشید که به دیمنهای مختلف CUPS متصل میشوند، الزامی است.
Default: iprint server = ""
Example: iprint server = MYCUPSSERVER
kdc always include pac (G)
این گزینه در حال حاضر تنها در صورتی اعمال میشود که KDC داخلی Heimdal به کار گرفته شود.
Default: kdc always include pac = yes
certificate backdating compensation (G)
این پارامتر تعداد دقیقههایی را مشخص میکند که تاریخ صدور یک گواهی میتواند بر زمان ایجاد حساب کاربر تقدم داشته باشد.
جزئیات بیشتر را میتوان در سند زیر یافت: KB5014754: Certificate-based authentication changes on Windows domain controllers
Default: certificate backdating compensation = 0
strong certificate binding enforcement (G)
مقادیر ممکن عبارتند از:
هیچگونه اعتبارسنجی برای نگاشتهای گواهی انجام نمیگیرد.
نگاشتهای ضعیف (Weak) گواهی مجاز هستند.
در حالت سازگاری (compatibility) برای نگاشتهای WEAK، تاریخ صدور گواهی باید پس از تاریخ ایجاد حساب کاربر باشد.
مگر اینکه certificate backdating compensation دارای مقدار باشد. در آن صورت، گواهی میتواند حداکثر تا آن تعداد دقیقه پیش از ایجاد حساب کاربر صادر شده باشد.
تنها نگاشتهای قوی (strong) گواهی مجاز هستند. این مقدار پیشفرض است.
نگاشتهای گواهی در مشخصهٔ (attribute) altSecurityIdentities کاربر پیکربندی میشوند و میتوانند هر یک از موارد زیر باشند:
Example: "X509:<I>IssuerName<S>SubjectName"
مقادیر ارائهشده برای نام صادرکننده و نام موضوع باید دقیقاً با مقادیر موجود در گواهی کاربر مطابقت داشته باشند.
WEAK
Example: "X509:<S>SubjectName"
مقدار ارائهشده برای نام موضوع صادرکننده باید دقیقاً با مقدار موجود در گواهی کاربر مطابقت داشته باشد.
WEAK
Example: "X509:<RFC822>test@example.com"
آدرس ایمیل
WEAK
Example: "X509:<I>IssuerName<SR>123456789"
صادرکنندهٔ گواهی و شماره سریال
STRONG
Example: "<SKI>01234xxxxx"
STRONG
Example: "X509:<SHA1-PUKEY>1234567890abcdef"
هش SHA1 از کلید عمومی گواهی
STRONG
Default: strong certificate binding enforcement = full
kdc default domain supported enctypes (G)
این گزینه به مدیران سامبا امکان میدهد تا با انعطافپذیری پیکربندی فراهمشده توسط مقدار رجیستری HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\KDC\DefaultDomainSupportedEncTypes در ویندوز مطابقت داشته باشند.
برخلاف کلید رجیستری ویندوز (که تنها یک عدد در مبنای ۱۰ را میپذیرد)، در سامبا میتوان این مقدار را به صورت هگزادسیمال یا فهرستی از نامهای انواع رمزنگاری Kerberos نیز بیان کرد.
مقادیر مشخصشده با یکدیگر به صورت بیتی OR میشوند، و مواردی که در حال حاضر پشتیبانی میشوند عبارتند از:
در ویندوز با عنوان رمزنگاری Kerberos RC4 شناخته میشود
در ویندوز با عنوان رمزنگاری Kerberos AES 128 bit شناخته میشود
در ویندوز با عنوان رمزنگاری Kerberos AES 256 bit شناخته میشود
اجازه استفاده از کلیدهای نشست AES. هنگامی که این مقدار تنظیم شود، به KDC نشان میدهد که میتوان از کلیدهای نشست AES استفاده کرد، حتی زمانی که aes256-cts و aes128-cts تنظیم نشده باشند. این گزینه امکان استفاده از کلیدهای AES را در ارتباط با میزبانهایی فراهم میکند که در غیر این صورت تنها با RC4 برای کلیدهای بلیت پیکربندی شدهاند (که حالت پیشفرض است).
kdc enable fast (G)
این گزینه بیشتر برای آزمایش است و در حال حاضر تنها زمانی اعمال میشود که از KDC توکار Heimdal استفاده شود.
Default: kdc enable fast = yes
kdc force enable rc4 weak session keys (G)
با این حال برای سازگاری با Microsoft Windows، این گزینه به KDC اجازه میدهد فرض کند که صرفنظر از مقدار تنظیمشده در صفت msDS-SupportedEncryptionTypes یک حساب سرویس، در صورتی که کلاینتی احتمالاً قدیمیتر آن را درخواست کند، میتوان از یک کلید نشست Kerberos از نوع rc4-hmac (به عنوان کلیدی متمایز از کلید بلیت، آنگونه که در keytab سرویس یافت میشود) استفاده کرد.
Default: kdc force enable rc4 weak session keys = no
kdc name match implicit dollar without canonicalization (G)
سرویس KDC ممکن است نام موجود در یک درخواست AS را به صورت غیردقیق تطبیق دهد، برای مثال با استفاده از مقایسه بدون تمایز بین حروف کوچک و بزرگ یا تبدیل آن به یک User Principal Name؛ اما کلاینت از پرینسیپالی که در واقع با آن تطبیق داده شده مطلع نمیشود، مگر اینکه فلگ گزینه 'canonicalize' را تنظیم کرده باشد.
در دامینهای Active Directory، رفتار پیشفرض KDC این است که اگر نام ارائهشده فاقد نویسه '$' باشد و از قبل تطابق نیافته باشد، یک نویسه '$' به انتهای آن الحاق کند. این کار اجازه میدهد 'foo' با حساب ماشین 'foo$' تطبیق داده شود. مهاجمی که قادر به ایجاد حسابهای ماشین دلخواه باشد (که میتواند عملیاتی با سطح دسترسی پایین باشد)، گاهی اوقات قادر است با جعل نامهای کاربران یونیکس، برای آنها بلیت دریافت کند. این موضوع تحت عنوان 'dollar ticket attack' (حمله بلیت دلار) شناخته میشود.
با تنظیم این گزینه بر روی 'no'، سرویس KDC تلاشی برای تطبیق با استفاده از افزودن نویسه '$' نخواهد کرد مگر اینکه فلگ canonicalize تنظیم شده باشد. این امر به کلاینتهای آگاه از AD اجازه میدهد مانند همیشه با یکسانسازی متصل شوند، اما کلاینتهای سنتی یونیکس را در معرض حمله بلیت دلار قرار نمیدهد.
Default: kdc name match implicit dollar without canonicalization = yes
kdc require canonicalization (G)
کلاینتهایی که از فلگ یکسانسازی Kerberos استفاده نمیکنند (RFC 6806 را ببینید)، برای نامی که درخواست کردهاند یک TGT دریافت خواهند کرد که ممکن است دقیقاً با نام موجود در پایگاه داده سامبا مطابقت نداشته باشد. برای مثال، ممکن است یک کلاینت برای 'root' درخواست بلیت کند، و اگر رایانهای به نام 'ROOT$' در پایگاه داده وجود داشته باشد، KDC با استفاده از قوانین تطبیق استاندارد برای AD Kerberos، بلیتی برای 'root' صادر خواهد کرد. یک سرور عضو که از Kerberos آگاه است اما از AD آگاه نیست، ممکن است این بلیت را به عنوان بلیت معتبر برای کاربر محلی root بپذیرد. این گزینه با خودداری از پذیرش درخواستهای فاقد فلگ یکسانسازی، از این مشکل جلوگیری میکند.
این گزینه در صورتی که تمام کلاینتهای مورد انتظار درخواست یکسانسازی داشته باشند (همانطور که کلاینتهای ویندوز عمل میکنند)، و سرورهای عضوی وجود داشته باشند که ممکن است به دلیل این مسئله دچار سردرگمی شوند، انتخابی منطقی است. به طور معمول این موضوع به معنای سرورهای یونیکسی است که انتظار دارند در یک دامین MIT Kerberos قرار داشته باشند.
همچنین گزینه "kdc name match implicit dollar without canonicalization" را ببینید، که در صورت انتظار کلاینتهای Kerberos فاقد فلگ canonicalize، کاربردیتر خواهد بود.
Default: kdc require canonicalization = no
kdc supported enctypes (G)
این گزینه به مدیران سامبا امکان میدهد تا پشتیبانی از انواع رمزنگاری ضعیف/استفادهنشده را حذف کنند، مشابه انعطافپذیری پیکربندی فراهمشده توسط مقدار Network security: Configure encryption types allowed for Kerberos در بخش GPO/Local Policies/Security Options، که در ویندوز به مقدار رجیستری HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters\SupportedEncryptionTypes منجر میشود.
برخلاف کلید رجیستری ویندوز (که تنها یک عدد در مبنای ۱۰ را میپذیرد)، در سامبا میتوان این مقدار را به صورت هگزادسیمال یا فهرستی از نامهای انواع رمزنگاری Kerberos نیز بیان کرد.
مقادیر مشخصشده با یکدیگر به صورت بیتی OR میشوند، و مواردی که در حال حاضر پشتیبانی میشوند عبارتند از:
در ویندوز با عنوان رمزنگاری Kerberos RC4 شناخته میشود
در ویندوز با عنوان رمزنگاری Kerberos AES 128 bit شناخته میشود
در ویندوز با عنوان رمزنگاری Kerberos AES 256 bit شناخته میشود
keepalive (G)
به طور کلی، اگر سوکت به صورت پیشفرض صفت SO_KEEPALIVE را داشته باشد، نیازی به بستههای keepalive نخواهد بود. (ببینید socket options). اساساً شما تنها در صورتی باید از این گزینه استفاده کنید که با مشکل مواجه شوید.
لطفاً توجه داشته باشید این گزینه تنها برای اتصالات کلاینت SMB1 اعمال میشود و هیچ تأثیری بر کلاینتهای SMB2 ندارد.
Default: keepalive = 300
Example: keepalive = 600
kerberos encryption types (G)
سامبا برای دریافت بلیتهای Kerberos از یک کتابخانه Kerberos (از نوع MIT یا Heimdal) استفاده میکند. این کتابخانه به طور معمول در خارج از سامبا و با استفاده از فایل krb5.conf پیکربندی میشود. این فایل همچنین ممکن است شامل دستورالعملهایی برای پیکربندی انواع رمزنگاری مورد استفاده باشد. با این حال، سامبا پروتکلها و الگوریتمهای Active Directory را به منظور یافتن کنترلکننده دامین پیادهسازی میکند. برای وادار کردن کتابخانه Kerberos به استفاده از کنترلکننده دامین صحیح، برخی از پردازشهای سامبا نظیر winbindd(8) و net(8)، یک فایل krb5.conf اختصاصی برای استفاده توسط کتابخانه Kerberos در زمان فراخوانی از طرف سامبا ایجاد میکنند. این فایل اختصاصی تمام جنبههای عملکرد کتابخانه Kerberos را کنترل میکند، و این پارامتر نحوه پیکربندی انواع رمزنگاری درون این فایل تولیدشده را تحت کنترل قرار داده و بنابراین انواع رمزنگاری قابلمذاکره توسط سامبا را نیز مدیریت میکند.
هنگامی که بر روی all تنظیم شود، تمامی انواع رمزنگاری Active Directory مجاز هستند.
هنگامی که بر روی strong تنظیم شود، تنها انواع رمزنگاری مبتنی بر AES ارائه میشوند. این مقدار میتواند در محیطهای امنسازیشده برای جلوگیری از حملات تنزل رتبه (downgrade attacks) مورد استفاده قرار گیرد.
هنگامی که بر روی legacy تنظیم شود، تنها RC4-HMAC-MD5 مجاز خواهد بود. به دلیل CVE-2022-37966 از استفاده از این گزینه خودداری کنید؛ ببینید: https://bugzilla.samba.org/show_bug.cgi?id=15237.
Default: kerberos encryption types = all
kerberos method (G)
گزینههای معتبر عبارتند از:
هنگامی که kerberos method در حالت «dedicated keytab» باشد، dedicated keytab file باید برای مشخص کردن مکان فایل keytab تنظیم شود.
پیکربندی پیشنهادی استفاده از مقدار پیشفرض 'secrets only' همراه با گزینه sync machine password to keytab است.
Default: kerberos method = default
kernel change notify (G)
این پارامتر تنها زمانی استفاده میشود که هسته شما از اعلان تغییر به برنامههای کاربر با استفاده از رابط inotify پشتیبانی کند.
Default: kernel change notify = yes
kernel oplocks (S)
پشتیبانی از oplocks هسته به Samba oplocks اجازه میدهد هر زمان که یک فرآیند محلی UNIX یا عملیات NFS به فایلی دسترسی پیدا کرد که smbd(8) آن را قفل کرده است (oplocked)، شکسته شوند. این کار یکپارچگی کامل دادهها را بین SMB/CIFS، NFS و دسترسی محلی به فایل فراهم میکند (و یک قابلیت بسیار جالب است :-).
اگر به این تعامل نیازی ندارید، باید این پارامتر را در لینوکس غیرفعال کنید تا از Level II oplocks و مزیت عملکردی مرتبط با آن بهرهمند شوید.
مقدار پیشفرض این پارامتر no است و در سیستمهایی که پشتیبانی لازم هسته را ندارند، به عنوان یک عملیات بیاثر (no-op) در نظر گرفته میشود.
Default: kernel oplocks = no
kernel share modes (S)
حالتهای اشتراک هسته با جلوگیری از دسترسی متناظر با SMB share modes، سطح حداقلی از تعاملپذیری را با فرآیندهای محلی UNIX و عملیات NFS فراهم میکنند. این امر نیازمند یک ماژول VFS مخصوص سیستم فایل با پشتیبانی مناسب است.
توجه داشته باشید که برای استفاده از دستگیرههای پایدار فایل (durable file handles) در SMB2 روی یک اشتراک، باید kernel share modes را غیرفعال کنید.
مقدار پیشفرض این پارامتر no است. تنظیم آن روی yes نیازمند یک ماژول سیستم فایل است که از sharemodeهای سیستم فایل پشتیبانی کند، در غیر این صورت تلاشها برای دسترسی به فایلها با خطای اشتراکگذاری (sharing violation) ناموفق خواهند بود.
Default: kernel share modes = no
kpasswd port (G)
Default: kpasswd port = 464
krb5 acceptor report canonical client name (G)
این گزینه در حال حاضر تنها زمانی اعمال میشود که از Heimdal KDC توکار استفاده شود.
Default: krb5 acceptor report canonical client name = yes
krb5 port (G)
Default: krb5 port = 88
lanman auth (G)
به این معنی که در آینده، مقدار پیشفرض فعلی یعنی lanman auth = no رفتار اجباری خواهد بود.
این پارامتر تعیین میکند که آیا smbd(8) تلاش خواهد کرد تا کاربران را احراز هویت کند یا اجازه تغییر رمز عبور را با استفاده از هش رمز عبور LANMAN بدهد یا خیر. در صورت غیرفعال بودن، فقط کلاینتهایی که از هشهای رمز عبور NT پشتیبانی میکنند (مانند کلاینتهای Windows NT/2000، smbclient، اما نه Windows 95/98 یا کلاینت شبکه MS DOS) قادر به اتصال به هاست سامبا خواهند بود.
پاسخ رمزنگاریشده LANMAN به دلیل عدم حساسیت به کوچک و بزرگی حروف و نوع الگوریتم انتخابی، به راحتی شکسته میشود. به سرورهایی که فاقد کلاینتهای Windows 95/98/ME یا MS DOS هستند توصیه میشود این گزینه را غیرفعال کنند.
هنگامی که این پارامتر روی no تنظیم شود، همچنین باعث میشود که sambaLMPassword در passdb سامبا پس از تغییر رمز عبور بعدی خالی شود. در نتیجه، کلاینتهای lanman حتی اگر lanman auth بعداً دوباره فعال شود نیز قادر به احراز هویت نخواهند بود.
برخلاف گزینه encrypt passwords، این پارامتر نمیتواند رفتار کلاینت را تغییر دهد و پاسخ LANMAN همچنان از طریق شبکه ارسال خواهد شد. برای غیرفعال کردن این مورد برای کلاینتهای سامبا (مانند smbclient)، client lanman auth را ببینید.
این پارامتر توسط ntlm auth نادیده گرفته میشود (override)، بنابراین مگر اینکه آن پارامتر نیز روی ntlmv1-permitted یا yes تنظیم شده باشد، فقط ورودهای NTLMv2 مجاز خواهند بود و هیچ هش LM ذخیره نخواهد شد. همه کلاینتهای امروزی از NTLMv2 پشتیبانی میکنند، اما برخی از کلاینتهای قدیمیتر برای استفاده از آن به پیکربندی خاصی نیاز دارند.
این پارامتر هیچ تأثیری بر Samba AD DC ندارد؛ احراز هویت LM همیشه غیرفعال است و هیچ رمز عبور LM ذخیره نمیشود.
Default: lanman auth = no
large readwrite (G)
Default: large readwrite = yes
ldap admin dn (G)
گزینه ldap admin dn به یک DN به طور کامل مشخصشده (fully specified) نیاز دارد. ldap suffix به ldap admin dn الحاق نمیشود.
بدون پیشفرض
ldap connection timeout (G)
این پارامتر با ldap timeout متفاوت است؛ پارامتری که بر روی عملیات در سرورهای LDAP با استفاده از یک اتصال موجود تأثیر میگذارد و نه برقراری یک اتصال اولیه.
Default: ldap connection timeout = 2
ldap debug level (G)
خروجی اشکالزدایی کتابخانههای LDAP با پیشوند [LDAP] در خروجی لاگین سامبا ظاهر میشود. سطحی که در آن گزارشهای وقایع LDAP چاپ میشوند توسط پارامتر ldap debug threshold کنترل میشود.
Default: ldap debug level = 0
Example: ldap debug level = 1
ldap debug threshold (G)
Default: ldap debug threshold = 10
Example: ldap debug threshold = 5
ldap delete dn (G)
Default: ldap delete dn = no
ldap deref (G)
Default: ldap deref = auto
Example: ldap deref = searching
ldap follow referral (G)
Default: ldap follow referral = auto
Example: ldap follow referral = off
ldap group suffix (G)
Default: ldap group suffix =
Example: ldap group suffix = ou=Groups
ldap idmap suffix (G)
Default: ldap idmap suffix =
Example: ldap idmap suffix = ou=Idmap
ldap machine suffix (G)
Default: ldap machine suffix =
Example: ldap machine suffix = ou=Computers
ldap max anonymous request size (G)
اگر اندازه درخواست از این حد فراتر رود، درخواست رد خواهد شد.
Default: ldap max anonymous request size = 256000
Example: ldap max anonymous request size = 500000
ldap max authenticated request size (G)
اگر اندازه درخواست از این حد فراتر رود، درخواست رد خواهد شد.
Default: ldap max authenticated request size = 16777216
Example: ldap max authenticated request size = 4194304
ldap max search request size (G)
اگر اندازه درخواست از این حد فراتر رود، درخواست رد خواهد شد.
Default: ldap max search request size = 256000
Example: ldap max search request size = 4194304
ldap page size (G)
اگر سرور LDAP از نتایج صفحهبندیشده پشتیبانی کند، کلاینتها میتوانند به جای تمام فهرست، زیرمجموعههایی از نتایج جستجو (صفحات) را درخواست کنند. این پارامتر اندازه این صفحات را تعیین میکند.
Default: ldap page size = 1000
Example: ldap page size = 512
ldap password sync
ldap passwd sync (G)
پارامتر ldap passwd sync میتواند روی یکی از سه مقدار زیر تنظیم شود:
ldap replication sleep (G)
این گزینه به سادگی باعث میشود Samba مدت زمان کوتاهی منتظر بماند تا سرور LDAP فرصت همگامشدن را داشته باشد. اگر شبکهای با تأخیر بهویژه بالا دارید، ممکن است بخواهید زمان همتاسازی LDAP را با یک اسنیفر شبکه بسنجید و این مقدار را متناسب با آن افزایش دهید. توجه داشته باشید که هیچ بررسیای انجام نمیشود مبنی بر اینکه آیا دادهها واقعاً همتاسازی شدهاند یا خیر.
مقدار بر حسب میلیثانیه مشخص میشود، حداکثر مقدار ۵۰۰۰ (۵ ثانیه) است.
Default: ldap replication sleep = 1000
ldapsam:editposix (G)
برای استفاده از این گزینه، باید یک درخت پایه ldap فراهم شده باشد و پارامترهای ldap suffix به درستی پیکربندی شده باشند. در سرورهای خام (تازه راهاندازیشده)، کاربران و گروههای پیشفرض (Administrator، Guest، Domain Users، Domain Admins، Domain Guests) را میتوان از پیش با دستور net sam provision ایجاد کرد. برای اجرای این دستور، سرور ldap باید در حال اجرا باشد، Winbindd باید در حال اجرا باشد و گزینههای ldap در smb.conf به درستی پیکربندی شده باشند. پیکربندی معمول ldap که با گزینه ldapsam:trusted = yes استفاده میشود معمولاً برای بهکارگیری ldapsam:editposix = yes نیز کافی است.
یک نمونه پیکربندی میتواند به صورت زیر باشد:
encrypt passwords = true passdb backend = ldapsam ldapsam:trusted=yes ldapsam:editposix=yes ldap admin dn = cn=admin,dc=samba,dc=org ldap delete dn = yes ldap group suffix = ou=groups ldap idmap suffix = ou=idmap ldap machine suffix = ou=computers ldap user suffix = ou=users ldap suffix = dc=samba,dc=org idmap backend = ldap:"ldap://localhost" idmap uid = 5000-50000 idmap gid = 5000-50000
این پیکربندی ساختار دایرکتوریای مانند آنچه در ldif زیر شرح داده شده است را در نظر میگیرد:
dn: dc=samba,dc=org objectClass: top objectClass: dcObject objectClass: organization o: samba.org dc: samba dn: cn=admin,dc=samba,dc=org objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword: secret dn: ou=users,dc=samba,dc=org objectClass: top objectClass: organizationalUnit ou: users dn: ou=groups,dc=samba,dc=org objectClass: top objectClass: organizationalUnit ou: groups dn: ou=idmap,dc=samba,dc=org objectClass: top objectClass: organizationalUnit ou: idmap dn: ou=computers,dc=samba,dc=org objectClass: top objectClass: organizationalUnit ou: computers
Default: ldapsam:editposix = no
ldapsam:trusted (G)
برای اینکه سامبا در محیطهای بزرگ بهخوبی مقیاسپذیر باشد، گزینهٔ ldapsam:trusted = yes فرض را بر این میگذارد که پایگاهدادهٔ کامل کاربر و گروه مرتبط با سامبا، در LDAP همراه با مشخصههای استاندارد posixAccount/posixGroup ذخیره شده است. این گزینه علاوه بر این فرض میکند که کلاسهای شیء کمکی (auxiliary object classes) سامبا همراه با دادههای POSIX در همان شیء LDAP نگهداری میشوند. اگر این فرضیات برقرار باشند، میتوان ldapsam:trusted = yes را فعال کرد و سامبا میتواند سیستم NSS را برای پرسوجوی عضویت در گروههای کاربری دور بزند (بایپس کند). پرسوجوهای بهینهشدهٔ LDAP میتوانند ورود به دامنه (logon) و وظایف مدیریتی را به میزان چشمگیری سرعت ببخشند. بسته به اندازهٔ پایگاهدادهٔ LDAP، ضریب بهبودی معادل ۱۰۰ برابر یا بیشتر برای پرسوجوهای معمول بهسادگی قابل دستیابی است.
Default: ldapsam:trusted = no
ldap server require strong auth (G)
ویندوز دارای گزینهٔ LdapEnforceChannelBinding تحت مسیر HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\ است.
مقدار no به اتصالهای (binds) ساده (simple) و sasl روی همهٔ پروتکلهای انتقال اجازه میدهد. این معادل LdapEnforceChannelBinding=0 است.
مقدار allow_sasl_without_tls_channel_bindings به bindهای ساده و sasl (بدون امضا یا seal) روی اتصالات رمزگذاریشدهٔ TLS اجازه میدهد. عدم وجود tls channel bindings نادیده گرفته میشود، بنابراین فقط در صورتی از این مقدار استفاده کنید که تنظیم مقدار yes امکانپذیر نباشد. اتصالات رمزگذارینشده فقط اجازه bindهای sasl با امضا یا seal را میدهند. این معادل LdapEnforceChannelBinding=1 است.
پیش از اینکه پشتیبانی از tls channel bindings در سامبا فراهم شود، مقدار allow_sasl_over_tls برای مجاز دانستن bindهای sasl بدون tls channel bindings در دسترس بود. این مقدار اکنون گمراهکننده است زیرا مقدار yes اکنون به bindهای sasl همراه با tls channel bindings اجازه میدهد. در صورت نیاز واقعی، پیکربندیها باید به جای آن به yes یا به allow_sasl_without_tls_channel_bindings تغییر داده شوند. در حال حاضر allow_sasl_over_tls تنها یک نام مستعار برای allow_sasl_without_tls_channel_bindings است، اما در نسخههای آینده حذف خواهد شد.
مقدار yes تنها اجازه bindهای ساده و bindهای sasl با tls channel bindings صحیح را روی اتصالات رمزگذاریشدهٔ TLS میدهد. bindهای sasl بدون tls channel bindings مجاز نیستند. اتصالات رمزگذارینشده تنها اجازه bindهای sasl همراه با امضا یا seal را میدهند. این معادل LdapEnforceChannelBinding=2 است.
Default: ldap server require strong auth = yes
ldap ssl (G)
اتصالات LDAP در صورت امکان باید ایمن شوند. این کار میتواند یا با تنظیم این پارامتر روی start tls یا با مشخص کردن ldaps:// در آرگومان URL مربوط به passdb backend انجام شود.
گزینهٔ ldap ssl میتواند روی یکی از این دو مقدار تنظیم شود:
Default: ldap ssl = start tls
ldap suffix (G)
مقدار ldap suffix به مقادیر مشخصشده برای ldap user suffix، ldap group suffix، ldap machine suffix، و ldap idmap suffix الحاق خواهد شد. به هر یک از اینها فقط باید یک DN نسبی نسبت به ldap suffix داده شود.
Default: ldap suffix =
Example: ldap suffix = dc=samba,dc=org
ldap timeout (G)
Default: ldap timeout = 15
ldap user suffix (G)
Default: ldap user suffix =
Example: ldap user suffix = ou=people
level2 oplocks (S)
قفلهای سطح ۲ یا oplockهای فقطخواندنی به کلاینتهای Windows NT که روی یک فایل دارای oplock هستند اجازه میدهند تا به محض اینکه کلاینت دومی فایل را باز کرد، به جای رهاسازی همهٔ oplockها (همانند oplockهای سنتی و انحصاری)، قفل خواندن-نوشتن خود را به یک oplock فقطخواندنی تنزل دهند. این امر به همهٔ بازکنندگان فایل که از level2 oplocks پشتیبانی میکنند اجازه میدهد تا فایل را فقط برای پیشخوانی (read-ahead) کش کنند (یعنی مجاز به کش کردن عملیات نوشتن یا درخواستهای قفل نیستند) و کارایی را برای دسترسیهای متعددی که به فایلهای بهندرت ویرایششونده (مانند فایلهای EXE برنامهها) صورت میگیرد، به میزان چشمگیری افزایش میدهد.
به محض اینکه یکی از کلاینتهای دارای oplock فقطخواندنی دادهای در فایل بنویسد، به تمام کلاینتها اطلاع داده میشود (هیچ پاسخی لازم نیست یا انتظار آن کشیده نمیشود) و به آنها اعلام میگردد که oplockهای خود را به وضعیت «none» بشکنند و تمام کشهای پیشخوانی (read-ahead) را حذف کنند.
توصیه میشود که این پارامتر برای افزایش سرعت دسترسی به فایلهای اجرایی به اشتراک گذاشته شده، فعال باشد.
برای بررسی و توضیحات بیشتر پیرامون level2 oplocks، به مشخصات CIFS مراجعه کنید.
در حال حاضر، در صورت پشتیبانی از kernel oplocks، قفلهای level2 oplocks اعطا نمیشوند (حتی اگر این پارامتر روی yes تنظیم شده باشد). همچنین توجه داشته باشید که برای تأثیرگذاری این پارامتر، پارامتر oplocks نیز باید در این اشتراک روی yes تنظیم شده باشد.
Default: level2 oplocks = yes
lm announce (G)
Default: lm announce = auto
Example: lm announce = yes
lm interval (G)
Default: lm interval = 60
Example: lm interval = 120
load printers (G)
Default: load printers = yes
local master (G)
تنظیم این مقدار بر روی no باعث میشود که nmbd هرگز به یک مرورگر اصلی محلی تبدیل نشود.
Default: local master = yes
lock dir
lock directory (G)
نکته: این گزینه را نمیتوان در پیکربندیهای مبتنی بر رجیستری تنظیم کرد.
فایلهای قرار گرفته در این دایرکتوری در طول راهاندازیهای مجدد سرویس مورد نیاز نیستند و میتوان آنها را با اطمینان در فضای ذخیرهسازی ناپایدار (مانند tmpfs در لینوکس) قرار داد.
Default: lock directory = /var/cache/samba
Example: lock directory = /var/run/samba/locks
locking (S)
اگر locking = no باشد، تمام درخواستهای قفل و باز کردن قفل موفقیتآمیز به نظر خواهند رسید و همهٔ پرسوجوهای قفل گزارش میدهند که فایل مورد نظر برای قفلگذاری در دسترس است.
اگر locking = yes باشد، قفلگذاری واقعی توسط سرور انجام خواهد شد.
این گزینه ممکن است برای سیستمفایلهای فقطخواندنی که احتمالاً به قفلگذاری نیازی ندارند (مانند درایوهای CDROM) مفید باشد، اگرچه تنظیم این پارامتر روی no حتی در این مورد نیز واقعاً توصیه نمیشود.
در غیرفعال کردن قفلگذاری چه به صورت سراسری و چه در یک سرویس خاص احتیاط کنید، زیرا عدم وجود قفلگذاری ممکن است منجر به خرابی دادهها شود. شما هرگز نباید نیازی به تنظیم این پارامتر داشته باشید.
Default: locking = yes
lock spin time (G)
Default: lock spin time = 200
log file (G)
این گزینه جایگزینیهای استاندارد متغیرها را میپذیرد و به شما اجازه میدهد برای هر کاربر یا ماشین، فایلهای لاگ جداگانهای داشته باشید.
بدون پیشفرض
Example: log file = /usr/local/samba/var/log.%m
logging (G)
از پارامتر 'option' میتوان برای ارسال گزینههای اختصاصی backend استفاده کرد.
سطح لاگ برای یک backend اختیاری است؛ اگر برای یک backend تنظیم نشود، تمام پیامها به این backend ارسال میشوند. پارامتر log level سطوح کلی لاگ را مشخص میکند، در حالی که سطوح لاگ مشخصشده در اینجا تعیین میکنند چه چیزی به backendهای مجزا فرستاده شود.
هنگامی که logging تنظیم شود، پارامترهای syslog و syslog only را لغو (override) میکند.
برخی backendها تنها زمانی در دسترس هستند که سامبا با کتابخانههای اضافی کامپایل شده باشد. فهرست کلی backendهای ثبت لاگ:
Default: logging =
Example: logging = syslog@1 file
debuglevel
log level (G)
این پارامتر از سری نسخهٔ 2.2.x گسترش یافته است و اکنون به کاربر امکان میدهد سطح اشکالزدایی را برای چندین کلاس اشکالزدایی و فایلهای لاگ متمایز برای هر کلاس مشخص کند. هدف از این کار، ارائه انعطافپذیری بیشتر در پیکربندی سیستم است. در حال حاضر کلاسهای اشکالزدایی زیر پیادهسازی شدهاند:
اطلاعات ممیزی (audit) احراز هویت و اعطای مجوز تحت کلاس auth_audit ثبت میشود، و اگر سامبا بدون سوییچ --without-json کامپایل شده باشد، یک نمایش ساختاریافتهٔ JSON نیز تحت auth_json_audit لاگ خواهد شد.
پشتیبانی جامعی برای تمامی موارد احراز هویت و اعطای مجوز حسابهای کاربری در Samba Active Directory Domain Controller و همچنین احراز هویت ضمنی در تغییرات گذرواژه فراهم شده است. در فایلسرور، احراز هویت NTLM، و اعطای مجوز SMB و RPC تحت پوشش قرار گرفتهاند.
سطوح لاگ برای auth_audit و auth_audit_json عبارتند از:
تغییرات مربوط به عضویت در گروهها در پایگاهدادهٔ sam.ldb در AD DC تحت dsdb_group_audit و نمایش JSON آن تحت dsdb_group_json_audit ثبت میگردد.
سطوح لاگ برای dsdb_audit، dsdb_json_audit، dsdb_group_audit، dsdb_group_json_audit و dsdb_json_audit عبارتند از:
سطوح لاگ برای dsdb_password_audit و dsdb_password_json_audit عبارتند از:
بازگردانیهای تراکنش (rollbacks) و شکستهای prepare commit تحت dsdb_transaction_audit و یک نمایش ساختاریافتهٔ JSON تحت dsdb_transaction_json_audit ثبت میشوند.
سطوح لاگ برای dsdb_transaction_audit و dsdb_transaction_json عبارتند از:
هشدار
تغییرات در sam.ldb که به صورت محلی توسط کاربر root با دسترسی مستقیم به پایگاهداده انجام شود، در لاگهای سیستم ثبت نمیشوند، بلکه به کنسول خود مدیر سیستم فرستاده میشوند. گرچه این وضعیت مطلوب نیست، اما هر کاربری که قادر به اعمال چنین تغییراتی باشد، در هر صورت میتواند ثبت لاگهای ممیزی را غیرفعال کند.
Example: log level = 3 passdb:5 auth:10 winbind:2
Example: log level = 1 full_audit:1@/var/log/audit.log winbind:2
log nt token command (G)
این گزینه تنها برای اهداف توسعه و برنامهنویسی مفید است.
Default: log nt token command =
logon drive (G)
توجه داشته باشید که این گزینه تنها در صورتی مفید است که سامبا به عنوان یک سرور ورود (logon server) راهاندازی شده باشد.
Default: logon drive =
Example: logon drive = h:
logon home (G)
C:\>NET USE H: /HOME
را از یک خط فرمان اجرا نمایید.
این گزینه جایگزینیهای استاندارد را میپذیرد و به شما اجازه میدهد برای هر کاربر یا ماشین، اسکریپتهای ورود مجزایی داشته باشید.
این پارامتر میتواند برای کلاینتهای Win9X استفاده شود تا اطمینان حاصل گردد نمایههای سرگردان (roaming profiles) در یک زیردایرکتوری از دایرکتوری خانگی کاربر ذخیره میشوند. این کار به شیوه زیر انجام میشود:
logon home = \\%N\%U\profile
این پیکربندی به سامبا میگوید رشته بالا را همراه با اعمال جایگزینیها در زمان درخواست اطلاعات توسط کلاینت (عموماً در یک درخواست NetUserGetInfo) بازگرداند. کلاینتهای Win9X هنگامی که کاربر دستور net use /home را اجرا میکند، اطلاعات را به \\server\share کوتاه میکنند، اما هنگام سروکار داشتن با پروفایلها از کل رشته استفاده مینمایند.
توجه داشته باشید که در نسخههای پیشین سامبا، به جای logon home، مقدار logon path بازگردانده میشد. این امر اجرای net use /home را با مشکل مواجه میکرد اما اجازه میداد پروفایلها در خارج از دایرکتوری خانگی قرار گیرند. پیادهسازی فعلی درست است و در صورت استفاده از ترفند بالا میتواند برای پروفایلها استفاده شود.
این ویژگی را با تنظیم logon home = "" - یعنی با استفاده از یک رشته خالی - غیرفعال کنید.
این گزینه تنها زمانی کاربرد دارد که سامبا به عنوان یک سرور ورود به سیستم (logon server) راهاندازی شده باشد.
Default: logon home = \\%N\%U
Example: logon home = \\remote_smb_server\%U
logon path (G)
این گزینه جایگزینیهای استاندارد را میپذیرد و به شما اجازه میدهد برای هر کاربر یا ماشین، اسکریپتهای ورود مجزایی داشته باشید. این پارامتر همچنین دایرکتوریای را مشخص میکند که پوشههای "Application Data"، desktop، start menu، network neighborhood، programs و دیگر پوشهها و محتویات آنها از آنجا بارگیری شده و در کلاینت Windows NT شما نمایش داده میشوند.
اشتراک و مسیر باید برای کاربر قابل خواندن باشند تا تنظیمات شخصی و دایرکتوریها بر روی کلاینت Windows NT بارگیری شوند. اشتراک باید هنگام اولین ورود کاربر قابل نوشتن باشد، تا کلاینت Windows NT بتواند NTuser.dat و سایر دایرکتوریها را ایجاد کند. پس از آن، در صورت نیاز میتوان دایرکتوریها و هر یک از محتویات را فقطخواندنی (read-only) کرد. توصیه نمیشود که فایل NTuser.dat فقطخواندنی شود - برای دستیابی به این هدف، نام آن را به NTuser.man تغییر دهید (یک نمایه اجباری یا MANdatory profile).
کلاینتهای ویندوز گاهی میتوانند اتصال به اشتراک [homes] را حفظ کنند، حتی اگر هیچ کاربری به سیستم وارد نشده باشد. بنابراین، حیاتی است که logon path شامل ارجاعی به اشتراک homes نباشد (برای نمونه تنظیم این پارامتر به صورت \\%N\homes\profile_path باعث بروز مشکل خواهد شد).
این گزینه جایگزینیهای استاندارد را میپذیرد و به شما امکان میدهد برای هر کاربر یا ماشین اسکریپتهای ورود مجزایی داشته باشید.
هشدار (Warning)
مقدار را درون علامت نقلقول قرار ندهید. تنظیم این گزینه به صورت “\\%N\profile\%U” مدیریت نمایه را مختل خواهد کرد. در مواردی که از بکاند passdb از نوع tdbsam یا ldapsam استفاده میشود، در هنگام ایجاد حساب کاربری، مقدار پیکربندیشده برای این پارامتر در بکاند passdb ذخیره میشود و آن مقدار بر مقدار پارامتر موجود در فایل smb.conf ارجحیت خواهد داشت (آن را بازنویسی میکند). هرگونه خطای موجود در رکورد حساب کاربری بکاند passdb باید با استفاده از ابزار مناسب (pdbedit در خط فرمان، یا هر ابزار سیستمی محلی ارائهشده دیگر) ویرایش شود.
استفاده از نمایههای سرگردان را با خالی گذاشتن مقدار این پارامتر (عدم تعیین هرگونه مقدار) غیرفعال کنید. توجه داشته باشید که حتی اگر مقدار پیشفرض در فایل smb.conf یک رشته خالی باشد، هر مقداری که در تنظیمات حساب کاربری در بکاند passdb مشخص شده باشد، اثر تنظیم این پارامتر به تهی را لغو خواهد کرد. غیرفعالسازی کامل استفاده از نمایه سرگردان مستلزم آن است که تنظیمات حساب کاربری نیز خالی باشند.
نمونهای از کاربرد:
logon path = \\PROFILESERVER\PROFILE\%U
در این مثال، استفاده از نمایههای سرگردان غیرفعال شده است (که البته به تنظیمات passdb نیز وابسته است):
logon path =
Default: logon path = \\%N\%U\profile
logon script (G)
این اسکریپت باید یک مسیر نسبی نسبت به سرویس [netlogon] باشد. اگر سرویس [netlogon] مسیر path را برابر با /usr/local/samba/netlogon مشخص کرده باشد و logon script = STARTUP.BAT باشد، فایلی که بارگیری خواهد شد عبارت است از:
/usr/local/samba/netlogon/STARTUP.BAT
محتویات این فایل دستهای کاملاً بر عهده شماست. یک دستور پیشنهادی میتواند افزودن NET TIME \\SERVER /SET /YES باشد تا همه ماشینها مجبور شوند ساعت خود را با یک سرور زمان یکسان هماهنگ کنند. کاربرد دیگر میتواند افزودن NET USE U: \\SERVER\UTILS برای ابزارهای پرکاربرد، یا به عنوان مثال
NET USE Q: \\SERVER\ISO9001_QA
باشد.
توجه داشته باشید که در یک محیط امن، بسیار حیاتی است که اجازه دسترسی نوشتن به اشتراک [netlogon] داده نشود، و به کاربران مجوز نوشتن بر روی فایلهای دستهای اعطا نگردد، چرا که این موضوع امکان تغییر دلخواه فایلهای دستهای و نقض امنیت را فراهم میآورد.
این گزینه جایگزینیهای استاندارد را میپذیرد و به شما اجازه میدهد برای هر کاربر یا ماشین، اسکریپتهای ورود مجزایی داشته باشید.
این گزینه تنها زمانی کاربرد دارد که سامبا به عنوان یک سرور ورود در نقش یک کنترلکننده دامنه کلاسیک (classic domain controller) راهاندازی شده باشد. اگر سامبا به عنوان یک کنترلکننده دامنه Active Directory راهاندازی شده باشد، مشخصه LDAP با نام scriptPath به جای آن استفاده میشود. برای پیکربندیهایی که در آنها passdb backend = ldapsam مورد استفاده قرار گرفته است، این گزینه تنها یک مقدار پیشفرض را برای زمانی که مشخصه LDAP با نام sambaLogonScript وجود نداشته باشد تعریف میکند.
Default: logon script =
Example: logon script = scripts\%U.bat
log writeable files on exit (G)
Default: log writeable files on exit = no
lppause command (S)
این دستور باید برنامه یا اسکریپتی باشد که نام چاپگر و شماره کار را برای مکث دادن به کار چاپ دریافت کند. یکی از روشهای پیادهسازی این قابلیت استفاده از اولویتهای کاری است، به طوری که کارهای با اولویت بسیار پایین به چاپگر ارسال نمیشوند.
اگر %p مشخص شود، نام چاپگر به جای آن قرار میگیرد. %j با شماره کار (یک عدد صحیح) جایگزین میشود. در HPUX (نگاه کنید به printing=hpux )، اگر گزینه -p%p به دستور lpq افزوده شود، کار چاپ با وضعیت صحیح نمایش داده خواهد شد؛ یعنی اگر اولویت کار کمتر از اولویت تعیینشده (fence priority) باشد، وضعیت PAUSED خواهد داشت، در حالی که اگر اولویت برابر یا بیشتر باشد وضعیت آن SPOOLED یا PRINTING خواهد بود.
توجه داشته باشید که استفاده از مسیر مطلق در دستور lppause اقدام مناسبی است زیرا ممکن است متغیر PATH در دسترس سرور نباشد.
در حال حاضر هیچ مقدار پیشفرضی برای این رشته تعریف نشده است، مگر این که مقدار پارامتر printing برابر با SYSV باشد که در این صورت مقدار پیشفرض عبارت است از: lp -i %p-%j -H hold یا اگر مقدار پارامتر printing برابر با SOFTQ باشد، مقدار پیشفرض عبارت است از: qstat -s -j%j -h.
Default: lppause command = # determined by printing parameter
Example: lppause command = /usr/bin/lpalt %p-%j -p0
lpq cache time (G)
فایلهای کَش در مسیر /tmp/lpq.xxxx ذخیره میشوند که در آن xxxx هش دستور lpq مورد استفاده است.
مقدار پیشفرض 30 ثانیه است؛ بدین معنی که اگر دادههای کَششده کمتر از 30 ثانیه قبل ذخیره شده باشند، از نتایج کَششده دستور همسان قبلی lpq استفاده خواهد شد. چنانچه دستور lpq شما بسیار کند اجرا میشود، تعیین یک مقدار بزرگتر توصیه میگردد.
مقدار 0 استفاده از کَش را به طور کامل غیرفعال میکند.
Default: lpq cache time = 30
Example: lpq cache time = 10
lpq command (S)
این دستور باید برنامه یا اسکریپتی باشد که نام چاپگر را به عنوان تنها پارامتر خود دریافت کرده و اطلاعات وضعیت چاپگر را در خروجی نمایش دهد.
در حال حاضر از ۹ سبک اطلاعات وضعیت چاپگر پشتیبانی میشود؛ BSD، AIX، LPRNG، PLP، SYSV، HPUX، QNX، CUPS و SOFTQ. این موارد بیشتر سیستمهای UNIX را پوشش میدهند. شما میتوانید نوع مورد انتظار را با استفاده از گزینهٔ printing = کنترل کنید.
برخی کلاینتها (بهویژه Windows for Workgroups) ممکن است شمارهٔ اتصال (connection number) مربوط به چاپگری را که وضعیت آن را درخواست میکنند به درستی ارسال نکنند. برای رفع این مشکل، سرور وضعیت نخستین سرویس چاپگری را گزارش میدهد که کلاینت به آن متصل شده است. این وضعیت تنها در صورتی رخ میدهد که شمارهٔ اتصال ارسالشده نامعتبر باشد.
اگر یک %p مشخص شده باشد، نام چاپگر به جای آن قرار میگیرد. در غیر این صورت نام چاپگر در انتهای دستور قرار داده خواهد شد.
توجه داشته باشید که گنجاندن مسیر مطلق در lpq command رویکرد مناسبی است، زیرا ممکن است $PATH در دسترس سرور نباشد. در صورت کامپایل سامبا با کتابخانههای CUPS، به هیچ lpq command نیازی نخواهد بود زیرا smbd برای دریافت فهرست صف چاپ مستقیماً یک فراخوانی کتابخانهای انجام میدهد.
Default: lpq command = # بر اساس پارامتر printing تعیین میشود
Example: lpq command = /usr/bin/lpq -P%p
lpresume command (S)
این دستور باید برنامه یا اسکریپتی باشد که نام چاپگر و شمارهٔ کار را دریافت کند تا فرایند چاپ آن کار از سر گرفته شود. همچنین پارامتر lppause command را ببینید.
اگر یک %p داده شود، نام چاپگر به جای آن قرار میگیرد. %j با شمارهٔ کار (یک عدد صحیح) جایگزین میشود.
توجه داشته باشید که گنجاندن مسیر مطلق در lpresume command رویکرد مناسبی است، زیرا ممکن است PATH در دسترس سرور نباشد.
همچنین پارامتر printing را ببینید.
Default: در حال حاضر هیچ مقدار پیشفرضی برای این رشته تعریف نشده است، مگر اینکه مقدار پارامتر printing برابر با SYSV باشد، که در این صورت پیشفرض عبارت است از:
lp -i %p-%j -H resume
یا اگر مقدار پارامتر printing برابر با SOFTQ باشد، پیشفرض عبارت است از:
qstat -s -j%j -r
Default: lpresume command = # بر اساس پارامتر printing تعیین میشود
Example: lpresume command = /usr/bin/lpalt %p-%j -p2
lprm command (S)
این دستور باید برنامه یا اسکریپتی باشد که نام چاپگر و شمارهٔ کار چاپ را دریافت کرده و آن را حذف کند.
اگر یک %p داده شود، نام چاپگر به جای آن قرار میگیرد. %j با شمارهٔ کار (یک عدد صحیح) جایگزین میشود.
توجه داشته باشید که گنجاندن مسیر مطلق در lprm command رویکرد مناسبی است، زیرا ممکن است PATH در دسترس سرور نباشد.
نمونههای کاربرد عبارتند از:
lprm command = /usr/bin/lprm -P%p %j یا lprm command = /usr/bin/cancel %p-%j
Default: lprm command = # بر اساس پارامتر printing تعیین میشود
lsa over netlogon (G)
در صورت فعال بودن، به دلیل تصمیمات اتخاذشده در پیادهسازی داخلی مایکروسافت، این رفتار با ویندوز مایکروسافت مطابقت خواهد داشت.
اگر غیرفعال باشد (حالت پیشفرض)، AD DC میتواند کارایی بهتری ارائه دهد، زیرا سرور netlogon مجزا شده و میتواند به صورت چندین فرآیند اجرا شود.
Default: lsa over netlogon = no
machine password timeout (G)
همچنین smbpasswd(8) و پارامترهای security = domain و security = ads را ببینید.
Default: machine password timeout = 604800
magic output (S)
هشدار
اگر دو کلاینت از یک magic script در دایرکتوری یکسانی استفاده کنند، محتوای فایل خروجی نامشخص و تعریفنشده خواهد بود.
Example: magic output = myfile.txt
magic script (S)
اسکریپتهایی که به این شیوه اجرا میشوند، پس از اتمام کار حذف خواهند شد؛ مشروط بر اینکه کاربر سطح دسترسی مناسب را داشته باشد و مجوزهای فایل اجازهٔ حذف را بدهند.
اگر اسکریپت خروجی تولید کند، این خروجی به فایلی ارسال میشود که توسط پارامتر magic output (در بالا) مشخص شده است.
توجه داشته باشید که برخی پوستهها (shellها) قادر به تفسیر اسکریپتهایی که حاوی CR/LF به جای CR به عنوان نشانگر پایان خط هستند، نیستند. اسکریپتهای جادویی باید به همان صورت که هستند روی میزبان قابل اجرا باشند، که برای برخی میزبانها و برخی پوستهها نیازمند فیلتر کردن در سمت DOS خواهد بود.
اسکریپتهای جادویی آزمایشی (EXPERIMENTAL) هستند و نباید به آنها اتکا کرد.
Default: magic script =
Example: magic script = user.csh
mangled names (S)
برای جزئیات مربوط به نحوهٔ کنترل فرایند تغییر شکل، بخش تغییر شکل نامها (name mangling) را ببینید.
تنظیمات ممکن برای این گزینه عبارتند از:
توجه داشته باشید اگر کاراکتر '~' را نمیپسندید، نویسهٔ مورد استفاده را میتوان با گزینهٔ mangling char تعیین کرد.
این الگوریتم تنها در صورتی ممکن است تداخل نام (name collision) ایجاد کند که فایلهای موجود در یک دایرکتوری در پنج نویسهٔ الفبایی-عددی اول یکسان باشند. احتمال وقوع چنین تداخلی ۱/۱۳۰۰ است.
قابلیت تغییر شکل نام (در صورت فعال بودن) این امکان را فراهم میکند که فایلی از طریق Windows/DOS بین دایرکتوریهای UNIX کپی شود در حالی که نام بلند UNIX آن حفظ گردد. فایلهای UNIX میتوانند از سمت Windows/DOS به پسوند جدیدی تغییر نام داده شوند و در عین حال همان نام پایه (basename) را حفظ کنند. نامهای تغییرشکلیافته بین نشستها (sessions) تغییر نمیکنند.
Default: mangled names = illegal
Example: mangled names = no
mangle prefix (G)
پارامتر mangle prefix تنها زمانی مؤثر است که mangling method روی hash2 تنظیم شده باشد.
Default: mangle prefix = 1
Example: mangle prefix = 4
mangling char (S)
Default: mangling char = ~
Example: mangling char = ^
mangling method (G)
Default: mangling method = hash2
Example: mangling method = hash
map acl inherit (S)
Default: map acl inherit = no
map archive (S)
توجه داشته باشید که اگر پارامتر store dos attributes تنظیم شده باشد، این پارامتر نادیده گرفته خواهد شد، چرا که در این صورت صفت آرشیو DOS در یک صفت گسترشیافته یونیکس ذخیره میشود.
توجه داشته باشید که این امر نیازمند تنظیم بودن پارامتر create mask بهگونهای است که بیت اجرایی مالک پوشانده نشود (یعنی باید شامل 100 باشد). برای جزئیات به پارامتر create mask مراجعه کنید.
Default: map archive = yes
map hidden (S)
توجه داشته باشید که اگر پارامتر store dos attributes تنظیم شده باشد، این پارامتر نادیده گرفته خواهد شد، چرا که در این صورت صفت مخفی DOS در یک صفت گسترشیافته یونیکس ذخیره میشود.
توجه داشته باشید که این امر مستلزم تنظیم پارامتر create mask بهگونهای است که بیت اجرایی همگان پوشانده نشود (یعنی باید شامل 001 باشد). برای جزئیات به پارامتر create mask مراجعه کنید.
Default: map hidden = no
map readonly (S)
این پارامتر میتواند سه مقدار مختلف بپذیرد که به smbd(8) میگویند چگونه صفت فقطخواندنی را روی فایلها نمایش دهد؛ در حالتی که یا store dos attributes روی No تنظیم شده است، یا هیچ صفت گسترشیافتهای وجود ندارد. اگر store dos attributes روی yes تنظیم شده باشد، این پارامتر نادیده گرفته میشود. این پارامتر جدید در سامبا نسخهٔ 3.0.21 معرفی شده است.
سه مقدار تنظیمی عبارتند از:
مقدار پیشفرض در نسخه 4.9.0 سامبا و بالاتر به no تغییر یافته است تا سازگاری بهتری با فایلسرور ویندوز در نصب پیشفرض حاصل شود. علاوه بر این، تنظیم پیشفرض store dos attributes نیز در نسخه 4.9.0 سامبا و بالاتر به Yes تغییر یافته است.
Default: map readonly = no
map system (S)
توجه داشته باشید که اگر پارامتر store dos attributes تنظیم شده باشد، این پارامتر نادیده گرفته خواهد شد، چرا که صفت سیستمی DOS در یک صفت گسترشیافته یونیکس ذخیره میشود.
توجه داشته باشید که این امر مستلزم تنظیم پارامتر create mask بهگونهای است که بیت اجرایی گروه پوشانده نشود (یعنی باید شامل 010 باشد). برای جزئیات بیشتر به پارامتر create mask مراجعه کنید.
Default: map system = no
map to guest (G)
چهار مقدار تنظیمی عبارتند از:
Default: map to guest = Never
Example: map to guest = Bad User
max connections (S)
برای پیادهسازی این قابلیت از فایلهای قفل رکورد (record lock files) استفاده میشود. این فایلهای قفل در دایرکتوری مشخصشده توسط گزینهٔ lock directory ذخیره خواهند شد.
Default: max connections = 0
Example: max connections = 10
max disk size (G)
توجه داشته باشید که این گزینه مقدار دادهای را که میتوانید روی دیسک ذخیره کنید محدود نمیکند. در حالت بالا، شما همچنان میتوانید بسیار بیشتر از 100 مگابایت اطلاعات روی دیسک ذخیره کنید، اما اگر کلاینتی مقدار فضای خالی دیسک یا اندازهٔ کل دیسک را استعلام کند، نتیجه به مقدار مشخصشده در max disk size محدود خواهد شد.
این گزینه عمدتاً برای دور زدن باگهای موجود در برخی از نرمافزارهایی کاربرد دارد که نمیتوانند دیسکهای بسیار بزرگ، بهویژه دیسکهای بزرگتر از ۱ گیگابایت را مدیریت کنند.
مقدار 0 برای max disk size به معنای نبود محدودیت است.
Default: max disk size = 0
Example: max disk size = 1000
max log size (G)
اندازهٔ 0 به معنای نامحدود بودن است.
Default: max log size = 5000
Example: max log size = 1000
max mux (G)
Default: max mux = 50
max open files (G)
محدودیت تعداد فایلهای باز معمولاً به جای این پارامتر توسط محدودیت توصیفگر فایل بهازای هر فرایند در UNIX تعیین میشود؛ بنابراین هرگز نباید نیازی به تغییر این پارامتر داشته باشید.
Default: max open files = 16384
max print jobs (S)
Default: max print jobs = 1000
Example: max print jobs = 5000
max reported print jobs (S)
Default: max reported print jobs = 0
Example: max reported print jobs = 1000
max smbd processes (G)
در یک Samba ADDC که مدل فرایند استاندارد را اجرا میکند، این گزینه تعداد فرایندهایی را که برای مدیریت درخواستها منشعب (fork) میشوند محدود میسازد. در حال حاضر، فرایندهای جدید فقط برای درخواستهای ldap و netlogon منشعب میشوند.
Default: max smbd processes = 0
Example: max smbd processes = 1000
max stat cache size (G)
Default: max stat cache size = 512
Example: max stat cache size = 100
max ttl (G)
Default: max ttl = 259200
max wins ttl (G)
Default: max wins ttl = 518400
max xmit (G)
Default: max xmit = 16644
Example: max xmit = 8192
mdns name (G)
حالت پیشفرض استفاده از نام NETBIOS است که معمولاً همان نام میزبان با حروف بزرگ میباشد.
تنظیم مقدار روی mdns، پیکربندی نام میزبان را به کتابخانهٔ MDNS مورد استفاده محول خواهد کرد.
Default: mdns name = netbios
message command (G)
این دستور معمولاً باید دستوری باشد که پیام را به شکلی تحویل دهد. چگونگی انجام این کار به خلاقیت شما بستگی دارد.
یک نمونه به شرح زیر است:
message command = csh -c 'xedit %s;rm %s' &
این دستور پیام را با استفاده از xedit تحویل داده و سپس آن را حذف میکند. توجه داشته باشید که بسیار مهم است این دستور فوراً بازگردد (خاتمه یابد). به همین دلیل نویسنده علامت '&' را در انتهای آن قرار داده است. اگر دستور بلافاصله بازنگردد، رایانههای شخصی (PCها) ممکن است هنگام ارسال پیامها دچار ایست شوند (هرچند با امیدواری، پس از ۳۰ ثانیه وضعیت بازیابی خواهد شد).
تمام پیامها در قالب کاربر مهمان سراسری (global guest user) تحویل داده میشوند. این دستور جایگزینیهای استاندارد متغیرها را میپذیرد، گرچه %u کار نخواهد کرد (در این حالت %U ممکن است انتخاب بهتری باشد).
بهجز جایگزینیهای استاندارد، برخی متغیرهای دیگر نیز اعمال میشوند؛ بهویژه:
در اینجا راهکاری برای ارسال پیامها بهصورت ایمیل به root آمده است:
message command = /bin/mail -s 'message from %f on %m' root < %s; rm %s
اگر پارامتر message command را تعیین نکرده باشید، پیام تحویل داده نخواهد شد و سامبا به فرستنده اعلام میکند که خطایی رخ داده است. متأسفانه WfWg این کد خطا را کاملاً نادیده گرفته و با اعلام اینکه پیام تحویل داده شده است، به کار خود ادامه میدهد.
اگر مایلید پیام بدون هیچ اقدامی حذف شود، این دستور را امتحان کنید:
message command = rm %s
Default: message command =
Example: message command = csh -c 'xedit %s; rm %s' &
min domain uid (G)
توجه داشته باشید که این گزینه با idmap ranges پیکربندیشده تعامل دارد!
Default: min domain uid = 1000
min print space (S)
Default: min print space = 0
Example: min print space = 2000
min receivefile size (G)
توجه داشته باشید که اگر این گزینه روی یک اتصال دارای امضای دیجیتال SMB تنظیم شود، هیچ تاثیری نخواهد داشت.
مقدار پیشفرض صفر است که این گزینه را غیرفعال میکند.
Default: min receivefile size = 0
min wins ttl (G)
Default: min wins ttl = 21600
mit kdc command (G)
اگر KDC در مکان پیشفرض نصب نشده باشد و در زمان ساخت (build) بهدرستی شناسایی نشده باشد، باید این متغیر را تغییر دهید و آن را به باینری صحیح هدایت کنید.
Default: mit kdc command =
Example: mit kdc command = /opt/mit/sbin/krb5kdc
msdfs proxy (S)
تنها ریشههای Dfs میتوانند به عنوان اشتراک پروکسی عمل کنند. برای پی بردن به نحوه راهاندازی یک اشتراک ریشه Dfs، به گزینههای msdfs root و host msdfs نگاهی بیندازید.
No default
Example: msdfs proxy = \otherserver\someshare,\otherserver2\someshare
msdfs root (S)
Default: msdfs root = no
msdfs shuffle referrals (S)
Default: msdfs shuffle referrals = no
multicast dns register (G)
این پارامتر امکان غیرفعال کردن ثبت خودکار سامبا را فراهم میسازد.
Default: multicast dns register = yes
name cache timeout (G)
Default: name cache timeout = 660
Example: name cache timeout = 0
name resolve order (G)
گزینهها عبارتند از: "lmhosts"، "host"، "wins" و "bcast". آنها باعث میشوند نامها به صورت زیر تحلیل شوند:
هنگامی که سامبا در حالت امنیتی ADS کار میکند (security = ads) توصیه میشود از تنظیمات زیر برای name resolve order استفاده کنید:
name resolve order = wins bcast
جستجوهای DC همچنان از طریق DNS انجام خواهند شد، اما روشهای جایگزین به نامهای NetBIOS، سرورهای DNS شما را با پرسوجوهای غیرضروری برای جستجوهای DOMAIN<0x1c> اشباع نخواهند کرد.
Default: name resolve order = lmhosts wins host bcast
Example: name resolve order = lmhosts bcast host
socket address
nbt client socket address (G)
تنظیم این گزینه در سرورهای معمول سامبا که تنها یک nmbd را اجرا میکنند هرگز نباید ضروری باشد.
سامبا به طور پیشفرض بستههای UDP را از نشانی پیشفرض سیستمعامل برای مقصد ارسال میکند، و پاسخها را روی 0.0.0.0 میپذیرد.
این پارامتر منسوخ شده است. برای رفتار پیشین جهت کنترل سوکتهای گوشدهنده عادی، bind interfaces only = Yes و interfaces را ببینید.
Default: nbt client socket address = 0.0.0.0
Example: nbt client socket address = 192.168.2.20
nbtd:wins_prepend1Bto1Cqueries (G)
Default: nbtd:wins_prepend1Bto1Cqueries = yes
nbtd:wins_wins_randomize1Clist (G)
Default: nbtd:wins_wins_randomize1Clist = no
nbtd:wins_randomize1Clist_mask (G)
Default: nbtd:wins_randomize1Clist_mask = 255.255.255.0
nbt port (G)
Default: nbt port = 137
ncalrpc dir (G)
این ویژگی به سامبا و سایر فرایندهای یونیکس اجازه میدهد بدون استفاده از TCP/IP، از طریق DCE/RPC با یکدیگر تعامل داشته باشند. علاوه بر این، زیردایرکتوری 'np' دارای مجوزهای دسترسی محدودشدهای است و یک کانال ارتباطی مطمئن و مورد اعتماد را میان فرایندهای سامبا فراهم میکند.
Default: ncalrpc dir = /run/samba/ncalrpc
Example: ncalrpc dir = /var/run/samba/ncalrpc
netbios aliases (G)
Default: netbios aliases = # empty string (no additional names)
Example: netbios aliases = TEST TEST1 TEST2
netbios name (G)
توجه داشته باشید که بیشینهٔ طول یک نام NetBIOS برابر با ۱۵ نویسه (کاراکتر) است.
اشکالی (باگ) در سامبا وجود دارد که در صورت تنظیم netbios name روی نام تحتاللفظی PIPE، عملکرد مرور کردن و دسترسی به اشتراکها را مختل میکند. برای جلوگیری از این مشکل، نام سرور سامبای خود را PIPE نگذارید.
Default: netbios name = # machine DNS name
Example: netbios name = MYNAME
netbios scope (G)
Default: netbios scope =
neutralize nt4 emulation (G)
بهطور معمول نیازی به تنظیم این گزینه ندارید. این گزینه میتواند برای ارتقا از دامنههای NT4 به AD مفید باشد.
این رفتار را میتوان به ازای هر دامنهٔ netbios، با استفاده از گزینهٔ 'neutralize nt4 emulation:NETBIOSDOMAIN = yes' کنترل کرد.
Default: neutralize nt4 emulation = no
nmbd bind explicit broadcast (G)
Default: nmbd bind explicit broadcast = yes
nsupdate command (G)
Default: nsupdate command = /usr/bin/nsupdate -g
nt hash store (G)
کنترلکننده دامنه اکتیو دایرکتوری سامبا، در صورت پیکربندی، بهجز برای حسابهای اعتماد (رایانهها، کنترلکنندههای دامنه و اعتمادهای بیندامنهای)، هش NT را ذخیره نخواهد کرد (برای حسابهای جدید و تغییریافته در پایگاه داده sam.ldb).
این امر از ذخیرهسازی هش بدون نمک (unsalted) برای این رمزهای عبور ایجادشده توسط کاربر جلوگیری میکند. در نتیجه، نوع کلید کربروس arcfour-hmac-md5 نیز در KDC برای این کاربران در دسترس نخواهد بود - خوشبختانه کلاینتهای امروزی در عوض یک کلید مبتنی بر AES را انتخاب خواهند کرد.
نکته: از آنجا که تاریخچه رمزهای عبور در اکتیو دایرکتوری به عنوان یک هش NT ذخیره میشود (و بنابراین در دسترس نخواهد بود)، از یک راهکار جایگزین استفاده میشود که به مقادیر هش رمز عبور کربروس متکی است. این شیوه سه رمز عبور را ذخیره میکند: رمز عبور فعلی، قبلی، و ماقبل قبلی. این کار امکان مقداری بررسی جهت جلوگیری از استفادهٔ مجدد را فراهم میکند.
با این حال، از آنجا که این مقادیر دارای نمک (salt) هستند، تغییر دادن sAMAccountName، userAccountControl یا userPrincipalName یک حساب موجب تغییر نمک خواهد شد. پس از رخ دادن ترکیب نادرِ هر دو موردِ تغییر نام و تغییر رمز عبور، تنها رمز عبور فعلی برای اهداف تاریخچه رمز عبور شناخته خواهد شد.
تنظیمات موجود عبارتند از:
این تنظیم ممکن است در صورتی مفید باشد که ntlm auth برای یک دوره آزمایشی روی disabled تنظیم شده باشد.
nt acl support (S)
Default: nt acl support = yes
ntlm auth (G)
در صورت غیرفعال بودن، هر دو احراز هویت NTLM و LanMan در برابر passdb محلی غیرفعال میشوند.
توجه داشته باشید که این تنظیمات فقط برای کاربران محلی اعمال میشوند؛ احراز هویت همچنان ارسال خواهد شد و احراز هویت NTLM در برابر هر دامنهای که به آن متصل شدهایم و هر دامنهٔ مورد اعتمادی پذیرفته میشود، حتی اگر این گزینه در اینجا غیرفعال شده باشد یا NTLMv2-only اجباری باشد. برای کنترل احراز هویت NTLM برای کاربران دامنه، این گزینه باید روی هر DC پیکربندی شود.
بهطور پیشفرض با تنظیم ntlm auth روی ntlmv2-only تنها ورودهای NTLMv2 مجاز خواهند بود. همه کلاینتهای امروزی بهطور پیشفرض از NTLMv2 پشتیبانی میکنند، اما برخی کلاینتهای قدیمیتر برای استفاده از آن به پیکربندی ویژهای نیاز دارند.
کاربر اصلی NTLMv1 پروتکل MSCHAPv2 برای شبکههای مجازی (VPN) و 802.1x است.
تنظیمات موجود عبارتند از:
این تنظیم برای فعالسازی پارامتر lanman auth الزامی است.
هشدار: کنترلکنندههای دامنه فقطخواندنی (Read Only Domain Controllers یا RODCs) چه در Microsoft Windows و چه در سامبا، یک اتصال سادهٔ متنی LDAP (Plain-text LDAP Simple Bind) را برای هدایت به یک DC کامل، به یک احراز هویت NTLMv2 تبدیل میکنند. تنظیم این گزینه روی disabled باعث شکست خوردن این احراز هویتهای فورواردشده خواهد شد.
علاوه بر این، در سامبایی که در نقش کنترلکننده دامنه اکتیو دایرکتوری عمل میکند، برای حسابهای کاربری، اگر nt hash store روی مقدار پیشفرض auto تنظیم شده باشد، هش NT در پایگاه داده sam.ldb ذخیره نخواهد شد (برای کاربران جدید و پس از تغییر رمز عبور).
Default: ntlm auth = ntlmv2-only
nt pipe support (G)
Default: nt pipe support = yes
ntp signd socket directory (G)
اگر مسیری غیر از پیشفرض در اینجا مشخص شود، لازم است با استفاده از دستورالعمل ntpsigndsocket در ntp.conf، سرویس NTP را نیز از این مسیر جدید آگاه کنید.
Default: ntp signd socket directory = /var/lib/samba/ntp_signd
nt status support (G)
شما هرگز نباید نیازی به غیرفعال کردن این پارامتر داشته باشید.
Default: nt status support = yes
ntvfs handler (S)
Default: ntvfs handler = unixuid, default
null passwords (G)
همچنین ببینید: smbpasswd(5).
Default: null passwords = no
obey pam restrictions (G)
Default: obey pam restrictions = no
old password allowed period (G)
این پارامتر تنها زمانی اعمال میشود که server role روی Active Directory Domain Controller تنظیم شده باشد.
Default: old password allowed period = 60
oplock break wait time (G)
هشدار (Warning)
این پارامتر را تغییر ندهید مگر اینکه کد OPLOCK سامبا را خوانده و درک کرده باشید.
oplocks (S)
میتوان قفلهای فرصتطلبانه (Oplocks) را برای فایلهای خاصی در یک اشتراک بهصورت انتخابی غیرفعال کرد. پارامتر veto oplock files را ببینید. در برخی سیستمها، قفلهای oplock توسط سیستمعامل زیربنایی تشخیص داده میشوند. این امر همگامسازی دادهها میان تمام دسترسیها به فایلهای دارای قفل فرصتطلبانه را، خواه از طریق سامبا، NFS یا یک فرایند محلی UNIX باشد، ممکن میسازد. برای جزئیات بیشتر، پارامتر kernel oplocks را ببینید.
Default: oplocks = yes
os2 driver map (G)
<nt driver name> = <os2 driver name>.<device name>
برای نمونه، یک مدخل معتبر با استفاده از درایور چاپگر HP LaserJet 5 به این صورت خواهد بود: HP LaserJet 5L = LASERJET.HP LaserJet 5L.
نیاز به این فایل بهدلیل مسئله فضای نام درایور چاپگر است که در فصل «چاپ کلاسیک» (Classical Printing) در کتابچه Samba3-HOWTO شرح داده شده است. برای جزئیات بیشتر درباره کلاینتهای OS/2، لطفاً به فصل مربوط به سایر کلاینتها در کتابچه Samba3-HOWTO مراجعه کنید.
Default: os2 driver map =
os level (G)
نکته: بهطور پیشفرض، سامبا در انتخابات مرورگر اصلی محلی در برابر تمام سیستمعاملهای مایکروسافت به جز یک Windows NT 4.0/2000 Domain Controller پیروز خواهد شد. این بدان معناست که یک میزبان سامبا با پیکربندی نادرست میتواند عملاً یک زیرشبکه را از نظر اهداف مرور شبکه منزوی سازد. این پارامتر در سری نسخههای Samba-3 تا حد زیادی بهصورت خودکار تنظیم میشود و بهندرت نیاز به بازنویسی دستی تنظیمات پیشفرض خواهد بود. لطفاً برای اطلاعات بیشتر درباره استفاده از این پارامتر، به فصل «مرور شبکه» (Network Browsing) در سند Samba-3 HOWTO مراجعه کنید. نکته: بیشینه مقدار برای این پارامتر ۲۵۵ است. اگر از مقادیر بالاتری استفاده کنید، شمارش از ۰ آغاز خواهد شد!
Default: os level = 20
Example: os level = 65
pam password change (G)
Default: pam password change = no
panic action (G)
Default: panic action =
Example: panic action = /bin/sleep 90000
passdb backend (G)
مقدار این پارامتر به دو بخش تقسیم میشود: نام بکاند، و یک رشته «مکان» که تنها برای آن بکاند خاص مفهوم دارد. این دو بخش با نویسه : از هم جدا میشوند.
بکاندهای در دسترس میتوانند شامل موارد زیر باشند:
اتصالات LDAP در صورت امکان باید امنسازی شوند. این کار میتواند با استفاده از Start-TLS (نگاه کنید به ldap ssl) یا با مشخص کردن ldaps:// در آرگومان URL انجام شود.
همچنین میتوان چندین سرور را درون گیومه دوتایی (double-quotes) مشخص کرد. اینکه آیا چندین سرور پشتیبانی میشوند یا خیر و نحو (syntax) دقیق آن به کتابخانه LDAP مورد استفاده شما بستگی دارد.
نمونههای استفاده عبارتند از:
passdb backend = tdbsam:/etc/samba/private/passdb.tdb یا URL چندسروره LDAP با کتابخانه OpenLDAP: passdb backend = ldapsam:"ldap://ldap-1.example.com ldap://ldap-2.example.com" یا URL چندسروره LDAP با کتابخانه LDAP مبتنی بر Netscape: passdb backend = ldapsam:"ldap://ldap-1.example.com ldap-2.example.com"
Default: passdb backend = tdbsam
passdb expand explicit (G)
Default: passdb expand explicit = no
passwd chat (G)
این توالی مکالمه اغلب بسته به روشهای محلی مورد استفاده برای کنترل گذرواژه، کاملاً وابسته به پیکربندی محلی سامانه است.
توجه داشته باشید که این پارامتر تنها زمانی استفاده میشود که پارامتر unix password sync روی yes تنظیم شده باشد. در این صورت، هنگامی که گذرواژه SMB در فایل smbpasswd در حال تغییر است، بدون دسترسی به متن خام (cleartext) گذرواژه قدیمی، این توالی AS ROOT (با دسترسی ریشه) فراخوانی میشود. این بدان معناست که ریشه (root) باید بتواند بدون دانستن متن گذرواژه پیشین، گذرواژه کاربر را بازنشانی کند.
این رشته میتواند شامل ماکروی %n باشد که با گذرواژه جدید جایگزین میشود. گذرواژه قدیمی (%o) تنها در صورتی در دسترس است که encrypt passwords غیرفعال شده باشد. توالی گفتگو همچنین میتواند شامل ماکروهای استاندارد \n، \r، \t و \s برای ایجاد خط جدید، بازگشت به ابتدای سطر، تب و فاصله باشد. رشته توالی گفتگو میتواند شامل یک '*' نیز باشد که با هر توالی از نویسهها مطابقت دارد. میتوان از گیومه دوتایی برای تجمیع رشتههای دارای فاصله در یک رشته واحد استفاده کرد.
اگر رشته ارسالی در هر بخش از توالی مکالمه یک نقطه "." باشد، هیچ رشتهای ارسال نمیشود. به همین ترتیب، اگر رشته مورد انتظار یک نقطه باشد، هیچ رشتهای انتظار دریافت ندارد.
اگر پارامتر pam password change روی yes تنظیم شده باشد، جفتهای مکالمه ممکن است به هر ترتیبی مطابقت داده شوند، و موفقیت بر اساس نتیجه PAM تعیین میشود نه بر اساس خروجی خاصی. ماکروی \n برای تبدیلهای PAM نادیده گرفته میشود.
Default: passwd chat = *new*password* %n\n *new*password* %n\n *changed*
Example: passwd chat = "*Enter NEW password*" %n\n "*Reenter NEW password*" %n\n "*Password changed*"
passwd chat debug (G)
Default: passwd chat debug = no
passwd chat timeout (G)
Default: passwd chat timeout = 2
passwd program (G)
همچنین توجه داشته باشید که بسیاری از برنامههای passwd بر داشتن گذرواژههای معقول مانند حداقل طول، یا ترکیب حروف بزرگ و کوچک و ارقام تأکید دارند. این امر میتواند مشکلساز شود، زیرا برخی کلاینتها (مانند Windows for Workgroups) گذرواژه را پیش از ارسال به حروف بزرگ تبدیل میکنند.
توجه داشته باشید که اگر پارامتر unix password sync روی yes تنظیم شده باشد، آنگاه این برنامه پیش از تغییر گذرواژه SMB در فایل smbpasswd، AS ROOT (به عنوان کاربر ریشه) فراخوانی میشود. اگر این تغییر گذرواژه UNIX با شکست مواجه شود، آنگاه smbd نیز از تغییر گذرواژه SMB صرفنظر خواهد کرد (این رفتار مطابق طراحی سیستم است).
اگر پارامتر unix password sync تنظیم شده باشد، این پارامتر باید برای تمام برنامههای فراخوانیشده از مسیرهای مطلق استفاده کند و از نظر پیامدهای امنیتی بررسی شود. توجه داشته باشید که بهطور پیشفرض unix password sync روی no تنظیم شده است.
Default: passwd program =
Example: passwd program = /bin/passwd %u
password hash gpg key ids (G)
میتوانید یک یا چند دریافتکننده را با شناسه کلید (key id) یا شناسه کاربر (user id) مشخص کنید. توجه داشته باشید که شناسههای کلید ۳۲ بیتی مجاز نیستند؛ حداقل ۶۴ بیت را مشخص کنید.
این مقدار به عنوان 'Primary:SambaGPG' در صفت supplementalCredentials ذخیره میشود.
از آنجا که تغییرات گذرواژه میتواند روی هر Domain Controller رخ دهد، باید این گزینه را روی تکتک آنها پیکربندی کنید. توجه داشته باشید که این ویژگی در حال حاضر تنها روی Domain Controllerهای Samba در دسترس است.
این گزینه تنها در صورتی در دسترس است که samba با پشتیبانی از gpgme کامپایل شده باشد.
ممکن است لازم باشد پیش از اجرای samba متغیر محیطی GNUPGHOME را export کنید. اکیداً توصیه میشود که فقط کلید عمومی در این مکان ذخیره شود. کلید خصوصی برای رمزگذاری استفاده نمیشود و فقط باید در جایی که رمزگشایی لازم است ذخیره گردد.
امکان بازیابی گذرواژه متن ساده زمانی مفید است که لازم باشد آنها بعداً به سایر سیستمهای احراز هویت وارد شوند (نگاه کنید به samba-tool user getpassword) یا بخواهید گذرواژهها را با سیستمی دیگر، مثلاً یک سرور OpenLDAP همگام نگه دارید (نگاه کنید به samba-tool user syncpasswords).
در حالی که این گزینه باید روی تمام Domain Controllerها پیکربندی شود، دستور samba-tool user syncpasswords تنها باید روی یک Domain Controller واحد اجرا گردد (معمولاً شبیهساز PDC یا همان PDC-emulator).
Default: password hash gpg key ids =
Example: password hash gpg key ids = 4952E40301FAB41A
Example: password hash gpg key ids = selftest@samba.example.com
Example: password hash gpg key ids = selftest@samba.example.com, 4952E40301FAB41A
password hash userPassword schemes (G)
مقادیر بهصورت 'Primary:userPassword' در مشخصه supplementalCredentials ذخیره میشوند. مقدار این گزینه یک نوع درهمساز (hash type) است.
انواع درهمسازهای پشتیبانیشده در حال حاضر عبارتند از:
از آنجا که تغییرات گذرواژه میتواند روی هر Domain Controller رخ دهد، باید این گزینه را روی تکتک آنها پیکربندی کنید. توجه داشته باشید که این قابلیت در حال حاضر تنها روی کنترلکنندههای دامنه Samba در دسترس است.
در حال حاضر هنگامی که این هشها محاسبه و ذخیره میشوند، NT Hash گذرواژه نیز ثبت میگردد. هنگام بازیابی هشها، مقدار فعلی NT Hash با NT Hash ذخیرهشده مقایسه میشود. این کار تغییرات گذرواژهای را که هشهای گذرواژه را بهروزرسانی نکردهاند شناسایی میکند. در این حالت samba-tool user مقادیر هش ذخیرهشده را نادیده خواهد گرفت.
امکان بهدست آوردن گذرواژه درهمسازیشده زمانی مفید است که نیاز باشد آنها بعداً به سایر سامانههای احراز هویت وارد شوند (به samba-tool user getpassword مراجعه کنید) یا بخواهید گذرواژهها را با سامانه دیگری، برای نمونه یک سرور OpenLDAP، همگام نگه دارید (به samba-tool user syncpasswords مراجعه کنید).
دستور مرتبط: unix password sync
Default: password hash userPassword schemes =
Example: password hash userPassword schemes = CryptSHA256
Example: password hash userPassword schemes = CryptSHA256 CryptSHA512
Example: password hash userPassword schemes = CryptSHA256:rounds=5000 CryptSHA512:rounds=7000
password server (G)
در حالت ایدهآل، از این گزینه نباید استفاده شود، زیرا مقدار پیشفرض '*' به Samba اعلام میکند که همانند تمام میزبانهای دیگر در یک دامنه AD، بهترین DC را جهت برقراری ارتباط بهصورت پویا تعیین کند. این امر امکان نگهداری دامنه (افزودن و حذف Domain Controllerها) را بدون نیاز به تغییر فایل smb.conf فراهم میسازد. حفاظت رمزنگاریشده روی فراخوانیهای RPC احراز هویتشده که برای تأیید گذرواژهها استفاده میشوند، امنیت این مقدار پیشفرض را تضمین میکند.
اکیداً توصیه میشود که از مقدار پیشفرض '*' استفاده کنید؛ با این حال اگر در محیط کاری خاص خود دلیلی برای تعیین یک فهرست DC مشخص دارید، آنگاه فهرست ماشینها در این گزینه باید فهرستی از نامها یا نشانیهای IP کنترلکنندههای دامنه برای آن دامنه باشد. اگر از مقدار پیشفرض '*' استفاده کنید، یا چند میزبان را در گزینه password server فهرست نمایید، smbd به نوبت هر یک را امتحان میکند تا زمانی که میزبانی پاسخگو را بیابد. این قابلیت در صورت از کار افتادن سرور اصلی شما بسیار مفید است.
اگر فهرست سرورها هم شامل نامها/IPها و هم نویسه '*' باشد، این فهرست به عنوان فهرستی از Domain Controllerهای ترجیحی در نظر گرفته میشود، اما جستجوی خودکار تمام DCهای باقیمانده نیز به این فهرست افزوده خواهد شد. Samba تلاشی برای بهینهسازی این فهرست از طریق یافتن نزدیکترین DC انجام نخواهد داد.
اگر این پارامتر یک نام باشد، با استفاده از پارامتر name resolve order جستجو میشود و بنابراین ممکن است با هر روش و ترتیبی که در آن پارامتر شرح داده شده است تحلیل شود.
Default: password server = *
Example: password server = NT-PDC, NT-BDC1, NT-BDC2, *
Example: password server = windc.mydomain.com:389 192.168.1.101 *
directory
path (S)
برای یک سرویس چاپپذیر که دسترسی مهمان (guest) ارائه میدهد، سرویس باید فقطخواندنی (readonly) باشد و مسیر باید برای همگان قابلنوشتن (world-writeable) بوده و بیت چسبنده (sticky bit) برای آن تنظیم شده باشد. البته این کار اجباری نیست، اما در صورت عدم رعایت آن، احتمالاً به نتیجه مورد انتظار خود نخواهید رسید.
هر بار تکرار %u در مسیر، با نام کاربری UNIX که کلاینت در این اتصال استفاده میکند جایگزین خواهد شد. هر بار تکرار %m با نام NetBIOS ماشینی که از آن متصل میشوند جایگزین خواهد شد. این جایگزینیها برای ایجاد شبهدایرکتوریهای خانگی برای کاربران بسیار مفید هستند.
توجه داشته باشید که در صورت مشخص شدن root dir، این مسیر بر پایه آن خواهد بود.
Default: path =
Example: path = /home/fred
perfcount module (G)
بدون پیشفرض
pid directory (G)
Default: pid directory = /run
Example: pid directory = /var/run/
posix locking (S)
Default: posix locking = yes
postexec (S)
یک نمونه جالب میتواند پیادهسازی (unmount کردن) منابع سرور باشد:
postexec = /etc/umount /cdrom
Default: postexec =
Example: postexec = echo \"%u disconnected from %S from %m (%I)\" >> /tmp/log
exec
preexec (S)
یک نمونه جالب، ارسال پیام خوشآمدگویی به کاربران در هر بار ورود آنها است. شاید یک پیام روز (message of the day)؟ در اینجا یک نمونه آمده است:
preexec = csh -c 'echo \"Welcome to %S!\" | /usr/local/samba/bin/smbclient -M %m -I %I' &
البته، این ممکن است بعد از مدتی کلافهکننده شود :-)
همچنین ببینید: preexec close و postexec.
Default: preexec =
Example: preexec = echo \"%u connected to %S from %m (%I)\" >> /tmp/log
preexec close (S)
Default: preexec close = no
prefered master
preferred master (G)
اگر این گزینه روی yes تنظیم شود، هنگام راهاندازی، nmbd برگزاری یک انتخابات (election) را تحمیل خواهد کرد، و مزیت اندکی در پیروزی در انتخابات خواهد داشت. توصیه میشود این پارامتر همراه با domain master = yes استفاده شود، تا nmbd بتواند تبدیل شدن به Domain Master را تضمین نماید.
از این گزینه با احتیاط استفاده کنید، زیرا اگر چندین میزبان (چه سرورهای Samba، چه Windows 95 یا NT) در یک زیرشبکه (subnet) یکسان وجود داشته باشند که مرورگرهای ارشد ترجیحی هستند، هر یک بهطور دورهای و پیوسته تلاش خواهند کرد تا به مرورگر ارشد محلی (local master browser) تبدیل شوند. این امر منجر به ترافیک برودکست (broadcast) غیرضروری و کاهش قابلیتهای مرور شبکه خواهد شد.
Default: preferred master = auto
prefork backoff increment (G)
علاوه بر این، میتوان با استفاده از "prefork backoff increment: service name" عقبنشینی را برای یک سرویس جداگانه تنظیم کرد؛ به عنوان مثال "prefork backoff increment:ldap = 2" برای تنظیم افزایش عقبنشینی روی ۲ ثانیه.
اگر مقدار افزایش عقبنشینی ۲ و حداکثر عقبنشینی ۵ باشد، برای اولین راهاندازی مجدد تأخیر صفر ثانیهای، برای دومین راهاندازی مجدد تأخیر دو ثانیهای، و برای سومین و راهاندازیهای بعدی تأخیر چهار ثانیهای وجود خواهد داشت.
Default: prefork backoff increment = 10
prefork children (G)
این مقدار باید روی مضرب کوچکی از تعداد CPUهای موجود در سرور تنظیم شود.
علاوه بر این، تعداد فرزندان prefork را میتوان برای یک سرویس مشخص با استفاده از «prefork children: service name» تعیین کرد، یعنی «prefork children:ldap = 8» برای تنظیم تعداد پردازشهای کارگر ldap.
Default: prefork children = 4
prefork maximum backoff (G)
Default: prefork maximum backoff = 120
preload modules (G)
Default: preload modules =
Example: preload modules = /usr/lib/samba/passdb/mysql.so
preserve case (S)
برای توضیحات کاملتر به بخش NAME MANGLING مراجعه کنید.
Default: preserve case = yes
print ok
printable (S)
توجه داشته باشید که یک سرویس printable همواره به نوشتن در مسیر سرویس (در صورت مجاز بودن دسترسیهای کاربر) از طریق قرقرهسازی دادههای چاپ اجازه خواهد داد. پارامتر read only تنها دسترسیهای غیرچاپی به منبع را کنترل میکند.
Default: printable = no
printcap cache time (G)
تنظیم این پارامتر روی 0، هرگونه بررسی مجدد برای چاپگرهای جدید یا حذفشده را پس از راهاندازی اولیه غیرفعال میکند.
Default: printcap cache time = 750
Example: printcap cache time = 600
printcap
printcap name (G)
برای استفاده از رابط چاپ CUPS، مقدار printcap name = cups را تنظیم کنید. این مورد باید با تنظیم اضافی printing = cups در بخش [global] تکمیل شود. گزینه printcap name = cups از printcap مجازی و ساختگی (dummy) ایجادشده توسط CUPS، همانطور که در فایل پیکربندی CUPS شما مشخص شده است، استفاده خواهد کرد.
در سیستمهای System V که از lpstat برای فهرست کردن چاپگرهای موجود استفاده میکنند، میتوانید از printcap name = lpstat جهت دریافت خودکار فهرست چاپگرهای در دسترس استفاده کنید. این حالت برای سیستمهایی که در زمان پیکربندی و ساخت Samba گزینه SYSV را تعریف میکنند (شامل اکثر سیستمهای مبتنی بر System V)، پیشفرض است. اگر printcap name روی این سیستمها روی lpstat تنظیم شده باشد، Samba دستور lpstat -v را اجرا کرده و تلاش میکند تا خروجی را جهت بهدست آوردن فهرست چاپگرها تجزیه (parse) کند.
یک فایل کمینه printcap ساختاری شبیه به این خواهد داشت:
print1|My Printer 1 print2|My Printer 2 print3|My Printer 3 print4|My Printer 4 print5|My Printer 5
که در آن '|' نامهای مستعار یک چاپگر را جدا میکند. وجود فاصله در نام مستعار دوم به Samba نشان میدهد که این بخش یک یادداشت است.
نکته
در AIX نام پیشفرض printcap برابر /etc/qconfig است. در صورتی که رشتهی qconfig در نام فایل printcap وجود داشته باشد، Samba فرض میکند که فایل در قالب qconfig مربوط به AIX است.
Example: printcap name = /etc/myprintcap
print command (S)
دستور print command صرفاً یک رشته متنی است. این رشته پس از اعمال جایگزینی ماکروها عینا به کار گرفته خواهد شد:
%s, %f - مسیر نام فایل اسپول
%p - نام چاپگر مربوطه
%J - نام کار چاپ ارسالی از طرف کلاینت، اما با جایگزینی کاراکترهای خطرناک با _. شما باید مستقیماً از کوتیشن تکی اطراف %J استفاده کنید، مانند '%J'؛ برای جزئیات بیشتر به CVE-2026-4480 مراجعه کنید.
%c - تعداد صفحات چاپشده از کار اسپولشده (در صورت مشخص بودن).
%z - اندازه کار چاپ اسپولشده (به بایت)
دستور print command باید حداقل شامل یکی از شناسههای %s یا %f باشد؛ استفاده از %p اختیاری است. در زمان ارسال کار چاپ، در صورتی که نام چاپگری ارائه نشده باشد، %p بدون هیچ پیامی از دستور چاپ حذف خواهد شد.
اگر این گزینه در بخش [global] تعیین شود، دستور چاپ ارائهشده برای هر سرویس چاپی (printable) که فاقد print command اختصاصی باشد استفاده خواهد شد.
اگر هیچ دستور چاپی چه در سرویس چاپی و چه به صورت سراسری تعیین نشده باشد، فایلهای اسپول ایجاد میشوند اما پردازش نشده و (مهمتر از همه) حذف نخواهند شد.
توجه داشته باشید که در برخی سیستمهای UNIX ممکن است فرایند چاپ با استفاده از حساب کاربری nobody با خطا مواجه شود. در این صورت، یک حساب کاربری مهمان جایگزین بسازید که توانایی چاپ داشته باشد و گزینه guest account را در بخش [global] تنظیم کنید.
با دانستن اینکه این دستورات مستقیماً به شل تحویل داده میشوند، میتوانید دستورهای چاپ بسیار پیچیدهای بسازید. برای مثال، دستور زیر کار چاپ را در یک لاگ ثبت کرده، فایل را چاپ میکند و سپس آن را حذف مینماید. توجه داشته باشید که ';' جداکننده معمول دستورات در اسکریپتهای شل است.
print command = echo Printing %s >> /tmp/print.log; lpr -P %p %s; rm %s
بسته به نحوه چاپ معمول فایلها در سیستم خود، ممکن است نیاز باشد این دستور را به مقدار زیادی تغییر دهید. مقدار پیشفرض این پارامتر بر اساس مقدار تنظیمشده در پارامتر printing تغییر میکند.
Default: For printing = BSD, AIX, QNX, LPRNG or PLP :
print command = lpr -r -P%p %s
For printing = SYSV or HPUX :
print command = lp -c -d%p %s; rm %s
For printing = SOFTQ :
print command = lp -d%p -s %s; rm %s
For printing = CUPS : اگر Samba به همراه libcups کامپایل شده باشد، آنگاه printcap = cups از رابط برنامهنویسی CUPS API برای ارسال کارها و غیره استفاده میکند. در غیر این صورت، این حالت به دستورات System V همراه با گزینه -oraw برای چاپ نگاشت میشود؛ یعنی از lp -c -d%p -oraw; rm %s استفاده میکند. با تنظیم printing = cups، و در صورتی که Samba با libcups کامپایل شده باشد، هرگونه دستور چاپ دستی تنظیمشده نادیده گرفته خواهد شد.
بدون پیشفرض
Example: print command = /usr/local/samba/bin/myprintscript %p %s
printer
printer name (S)
اگر در بخش [global] تعیین شود، نام چاپگر مشخصشده برای هر سرویس چاپی که نام چاپگر اختصاصی برای آن مشخص نشده باشد، اعمال خواهد شد.
مقدار پیشفرض printer name در بسیاری از سیستمها ممکن است lp باشد.
Default: printer name =
Example: printer name = laserwriter
printing (S)
در حال حاضر نه شیوه چاپ پشتیبانی میشوند. آنها عبارتند از BSD، AIX، LPRNG، PLP، SYSV، HPUX، QNX، SOFTQ، CUPS و IPRINT.
توجه داشته باشید که CUPS و IPRINT تنها زمانی در دسترس هستند که کتابخانه توسعه CUPS در زمان کامپایل یا بستهبندی Samba موجود بوده باشد.
برای مشاهده مقادیر پیشفرض سایر دستورات چاپ هنگام استفاده از گزینههای مختلف، از برنامه testparm(1) استفاده کنید.
این گزینه را میتوان به ازای هر چاپگر تنظیم کرد. با این حال لطفاً آگاه باشید که باید هر یک از دستورات مختلف چاپ (مانند print command، lpq command و غیره) را پس از تعریف مقدار گزینه printing قرار دهید، زیرا مقدار دستورات چاپ را به مقادیر پیشفرض بازنشانی خواهد کرد.
همچنین به توضیحات بخش [printers] مراجعه کنید.
برای مشاهده مقدار پیشفرض در سیستم خود، testparm -v. را بررسی کنید.
Default: printing = # Depends on the operating system
printjob username (S)
Default: printjob username = %U
Example: printjob username = %D\%U
print notify backchannel (S)
Default: print notify backchannel = no
private directory
private dir (G)
Default: private dir = /var/lib/samba/private
queuepause command (S)
این دستور باید یک برنامه یا اسکریپت باشد که نام چاپگر را به عنوان تنها آرگومان خود دریافت کرده و صف چاپگر را متوقف کند، به طوری که کارهای جدید دیگری به چاپگر تحویل داده نشوند.
این دستور توسط Windows for Workgroups پشتیبانی نمیشود، اما میتواند از پنجره Printers در Windows 95 و NT صادر شود.
اگر یک %p مشخص شده باشد، نام چاپگر در جایگاه آن قرار میگیرد. در غیر این صورت در انتهای دستور قرار خواهد گرفت.
توجه داشته باشید که استفاده از مسیر مطلق در دستور عملکرد مناسبی است، زیرا ممکن است متغیر PATH برای سرور در دسترس نباشد.
Default: queuepause command = # determined by printing parameter
Example: queuepause command = disable %p
queueresume command (S)
این دستور باید یک برنامه یا اسکریپت باشد که نام چاپگر را به عنوان تنها آرگومان خود دریافت کرده و صف چاپگر را از سر گیرد، به طوری که کارهای صفبندیشده مجدداً به چاپگر ارسال شوند.
این دستور توسط Windows for Workgroups پشتیبانی نمیشود، اما میتواند از پنجره Printers در Windows 95 و NT صادر شود.
اگر یک %p مشخص شده باشد، نام چاپگر در جایگاه آن قرار میگیرد. در غیر این صورت در انتهای دستور قرار خواهد گرفت.
توجه داشته باشید که استفاده از مسیر مطلق در دستور عملکرد مناسبی است، زیرا ممکن است متغیر PATH برای سرور در دسترس نباشد.
Default: queueresume command = # determined by printing parameter
Example: queueresume command = enable %p
raw NTLMv2 auth (G)
به این معنی که در آینده، رفتار پیشفرض کنونی raw NTLMv2 auth = no رفتار اجباری خواهد بود.
این پارامتر تعیین میکند که آیا smbd(8) به کلاینتهای SMB1 فاقد امنیت گسترشیافته (بدون SPNEGO) اجازه استفاده از احراز هویت NTLMv2 را میدهد یا خیر.
اگر این گزینه، lanman auth و ntlm auth همگی غیرفعال باشند، تنها کلاینتهای دارای پشتیبانی از SPNEGO مجاز خواهند بود. این بدان معناست که NTLMv2 تنها درون NTLMSSP پشتیبانی میشود.
Default: raw NTLMv2 auth = no
read list (S)
Default: read list =
Example: read list = mary, @students
read only (S)
اگر این پارامتر برابر yes باشد، کاربران یک سرویس نمیتوانند فایلهایی را در دایرکتوری آن سرویس ایجاد کنند یا تغییر دهند.
توجه داشته باشید که یک سرویس قابلچاپ (printable = yes) همواره اجازه نوشتن در دایرکتوری را (در صورت اجازه مجوزهای کاربر) خواهد داد، اما تنها از طریق عملیاتهای قرقرهسازی (spooling).
Default: read only = yes
read raw (G)
در صورت فعال بودن، خواندن خام امکان خواندن ۶۵۵۳۵ بایت را در یک بسته فراهم میکند. این ویژگی معمولاً مزیت عملکردی چشمگیری را برای برخی کلاینتهای بسیار بسیار قدیمی ایجاد میکند.
با این حال، برخی کلاینتها اندازه مجاز بلوک را نادرست مذاکره میکنند یا قادر به پشتیبانی از اندازههای بزرگتر بلوک نیستند و برای این کلاینتها ممکن است نیاز باشد خواندنهای خام را غیرفعال کنید.
به طور کلی این پارامتر باید به عنوان یک ابزار تنظیم دقیق سیستم در نظر گرفته شده و اکیداً به حال خود رها شود.
Default: read raw = yes
realm (G)
Default: realm =
Example: realm = mysambabox.mycompany.com
registry shares (G)
توجه داشته باشید که این پارامتر به طور پیشفرض روی no تنظیم است، اما هنگامی که config backend روی registry تنظیم شده باشد، به yes تغییر مییابد.
Default: registry shares = no
Example: registry shares = yes
reject aes netlogon servers (G)
پشتیبانی از ServerAuthenticateKerberos در Windows با شروع از Server 2025 اضافه شده است؛ این قابلیت در کنترلکنندههای دامنه Active Directory سامبا با شروع از نسخه 4.22 با گزینه 'server support krb5 netlogon = yes' در دسترس است، که به طور پیشفرض غیرفعال میباشد.
فلگهای زیر الزامی خواهند بود: NETLOGON_NEG_PASSWORD_SET2، NETLOGON_NEG_SUPPORTS_KERBEROS_AUTH و NETLOGON_NEG_AUTHENTICATED_RPC.
اگر تمام کنترلکنندههای دامنه از ServerAuthenticateKerberos پشتیبانی میکنند، میتوانید این گزینه را روی yes قرار دهید. این کار از حملات تنزل رتبه (downgrade attacks) جلوگیری خواهد کرد.
این رفتار میتواند به ازای هر دامنه NetBIOS با استفاده از 'reject aes netlogon servers:NETBIOSDOMAIN = no' به عنوان گزینه کنترل شود.
این گزینه بر گزینه reject md5 servers اولویت دارد و آن را باطل میکند.
این گزینه بر گزینه client use krb5 netlogon (در صورتی که عملاً غیرفعال باشد) اولویت دارد و آن را باطل میکند.
Default: reject aes netlogon servers = no
reject md5 clients (G)
این گزینه کنترل میکند که آیا سرور netlogon (در حال حاضر تنها در حالت 'active directory domain controller')، کلاینتهایی را که از NETLOGON_NEG_SUPPORTS_AES پشتیبانی نمیکنند رد خواهد کرد یا خیر.
پشتیبانی از NETLOGON_NEG_SUPPORTS_AES در ویندوز با نسخههای Server 2008R2 و Windows 7 اضافه شد؛ این قابلیت در Samba از نسخه 4.0 به بعد در دسترس است، با این حال اعضای دامنهی شخص ثالث مانند NetApp ONTAP همچنان از RC4 (HMAC-MD5) استفاده میکنند؛ برای جزئیات بیشتر به https://www.samba.org/samba/security/CVE-2022-38023.html مراجعه کنید.
مقدار پیشفرض با وصلههای مربوط به CVE-2022-38023 از 'no' به 'yes' تغییر یافته است؛ نگاه کنید به https://bugzilla.samba.org/show_bug.cgi?id=15240.
از این گزینه استفاده نکنید! در عوض از گزینه صریح به ازای هر حساب رایانه 'server reject md5 schannel:COMPUTERACCOUNT' استفاده کنید! این امکان همراه با وصلههای مربوط به CVE-2022-38023 در دسترس قرار گرفته است؛ نگاه کنید به https://bugzilla.samba.org/show_bug.cgi?id=15240.
اگر یک کلاینت قدیمی (legacy) رد شود یا بدون یک گزینه صریح 'server reject md5 schannel:COMPUTERACCOUNT = no' برای آن کلاینت مجاز دانسته شود، Samba خطایی را در فایلهای لاگ در سطح لاگ 0 ثبت خواهد کرد. در صورتی که نرمافزار کلاینت قدیمی به آن نیاز داشته باشد، پیام مشخص خواهد کرد که کدام خط صریح 'server reject md5 schannel:COMPUTERACCOUNT = no' باید اضافه شود. (سطح لاگ را میتوان با 'CVE_2022_38023:error_debug_level = 1' تنظیم کرد تا تنها در سطوح لاگ بالاتر اخطار داده شود).
این امر به مدیران سیستم اجازه میدهد تا از «no» تنها برای یک دوره مهلت کوتاه استفاده کنند، تا بتوانند گزینههای صریح 'server reject md5 schannel:COMPUTERACCOUNT = no' را جمعآوری و اعمال نمایند.
هنگامی که روی 'yes' تنظیم شود، این گزینه بر گزینههای 'allow nt4 crypto:COMPUTERACCOUNT' و 'allow nt4 crypto' اولویت یافته و آنها را لغو میکند و به معنای 'allow nt4 crypto:COMPUTERACCOUNT = no' خواهد بود.
این گزینه توسط مقدار مؤثر 'yes' ناشی از گزینههای 'server reject aes schannel:COMPUTERACCOUNT' و/یا 'server reject aes schannel' لغو (override) میشود.
Default: reject md5 clients = yes
server reject md5 schannel:COMPUTERACCOUNT (G)
اگر این گزینه روی «no» تنظیم شده باشد اما رایانه مربوطه به آن نیازی نداشته باشد، Samba در سطح لاگ 0 شکایتی را درباره این مشکل امنیتی در فایلهای لاگ ثبت خواهد کرد. (سطح لاگ را میتوان با 'CVE_2022_38023:warn_about_unused_debug_level = 1' تنظیم کرد تا تنها در سطوح لاگ بالاتر اخطار داده شود).
اگر برای حساب رایانه مشخصشده هنوز به این تنظیم نیاز باشد، Samba در سطح لاگ 5 هشداری در فایلهای لاگ درج خواهد کرد.
نگاه کنید به CVE-2022-38023, https://bugzilla.samba.org/show_bug.cgi?id=15240.
این گزینه پارامتر reject md5 clients را لغو میکند.
هنگامی که روی 'yes' تنظیم شود، این گزینه بر گزینههای 'allow nt4 crypto:COMPUTERACCOUNT' و 'allow nt4 crypto' اولویت یافته و آنها را لغو میکند و به معنای 'allow nt4 crypto:COMPUTERACCOUNT = no' خواهد بود.
این گزینه توسط مقدار مؤثر 'yes' ناشی از گزینههای 'server reject aes schannel:COMPUTERACCOUNT' و/یا 'server reject aes schannel' لغو (override) میشود.
این بدان معناست که 'server reject md5 schannel:COMPUTERACCOUNT = no' تنها در ترکیب با 'server reject aes schannel:COMPUTERACCOUNT = no' مفید خواهد بود.
server reject md5 schannel:LEGACYCOMPUTER1$ = no server reject aes schannel:LEGACYCOMPUTER1$ = no server reject md5 schannel:NASBOX$ = no server reject aes schannel:NASBOX$ = no server reject md5 schannel:LEGACYCOMPUTER2$ = no server reject aes schannel:LEGACYCOMPUTER2$ = no
No default
reject md5 servers (G)
فلگهای زیر الزامی خواهند بود: NETLOGON_NEG_ARCFOUR، NETLOGON_NEG_SUPPORTS_AES، NETLOGON_NEG_PASSWORD_SET2 و NETLOGON_NEG_AUTHENTICATED_RPC.
اگر همه کنترلکنندههای دامنه (domain controllers) از aes پشتیبانی میکنند، میتوانید این گزینه را روی yes تنظیم کنید. این کار از حملات تنزل رتبه امنیتی (downgrade attacks) جلوگیری خواهد کرد.
این رفتار را میتوان به ازای هر دامنه netbios با استفاده از گزینه 'reject md5 servers:NETBIOSDOMAIN = no' کنترل کرد.
مقدار پیشفرض با وصلههای مربوط به CVE-2022-38023 از 'no' به 'yes' تغییر یافت؛ نگاه کنید به https://bugzilla.samba.org/show_bug.cgi?id=15240
این گزینه توسط گزینه reject aes netlogon servers لغو (override) میشود.
این گزینه بر گزینه require strong key اولویت دارد و آن را لغو میکند.
Default: reject md5 servers = yes
remote announce (G)
این قابلیت زمانی مفید است که بخواهید سرور Samba شما در یک گروه کاری دوردست ظاهر شود که قوانین معمول انتشار مرور (browse propagation) در آن کار نمیکنند. گروه کاری دوردست میتواند هر مکانی باشد که امکان ارسال بستههای IP به آن وجود دارد.
برای مثال:
remote announce = 192.168.2.255/SERVERS 192.168.4.255/STAFF
خط بالا باعث میشود nmbd با استفاده از نامهای workgroup مشخصشده، خود را به دو آدرس IP ارائهشده اعلان نماید. اگر نام گروه کاری را تعیین نکنید، نام مشخصشده در پارامتر workgroup به جای آن استفاده خواهد شد.
آدرسهای IP انتخابی شما معمولاً آدرسهای پخش همگانی (broadcast) شبکههای دوردست هستند، اما در صورتی که پیکربندی شبکه شما به اندازه کافی پایدار باشد، میتوانند آدرسهای IP مستر بروزرهای (browse masters) شناختهشده نیز باشند.
فصل مربوط به مرور شبکه (Network Browsing) را در کتابچه Samba-HOWTO مطالعه کنید.
Default: remote announce =
remote browse sync (G)
این قابلیت زمانی مفید است که بخواهید سرور Samba شما و تمام کلاینتهای محلی در یک گروه کاری دوردست ظاهر شوند که قوانین معمولی انتشار مرور در آن کار نمیکنند. گروه کاری دوردست میتواند هر مکانی باشد که بتوانید بستههای IP به آن ارسال کنید.
برای مثال:
remote browse sync = 192.168.2.255 192.168.4.255
خط بالا باعث میشود nmbd از مستر بروزر در زیرشبکهها یا آدرسهای مشخصشده درخواست کند تا فهرستهای مرور خود را با سرور محلی همگامسازی نمایند.
آدرسهای IP انتخابی شما معمولاً آدرسهای پخش همگانی (broadcast) شبکههای دوردست خواهند بود، اما در صورت پایداری پیکربندی شبکه، میتوانند آدرسهای IP مستر بروزرهای شناختهشده نیز باشند. اگر آدرس IP یک ماشین مشخص شود، Samba هیچ تلاشی برای تأیید اعتبار در دسترس بودن ماشین دوردست، گوش دادن آن، یا اینکه آیا واقعاً مستر بروزر سگمنت خود است یا خیر انجام نمیدهد.
گزینه remote browse sync را میتوان در شبکههایی که سرور WINS ندارند، و همچنین در شبکههای مجزایی که هر کدام سرور WINS مخصوص به خود را دارند استفاده کرد.
Default: remote browse sync =
rename user script (G)
هنگامی که کاربری با اختیارات مدیر سیستم (admin authority) یا امتیازات SeAddUserPrivilege نام کاربری را تغییر دهد (برای مثال: از طریق NT4 User Manager for Domains)، این اسکریپت برای تغییر نام کاربر POSIX اجرا خواهد شد. دو متغیر %uold و %unew به ترتیب با نامهای کاربری قدیمی و جدید جایگزین خواهند شد. اسکریپت باید در صورت اتمام موفقیتآمیز مقدار 0 و در غیر این صورت مقداری غیرصفر بازگرداند.
نکته
این اسکریپت مسئولیت کامل تغییر نام تمام دادههای لازمی را دارد که در این روش posix قابل دسترسی هستند. این امر میتواند الزامات متفاوتی برای بکاندهای گوناگون به همراه داشته باشد. بکاندهای tdbsam و smbpasswd به محتویات فایلهای مربوط به خود رسیدگی میکنند، بنابراین اسکریپت تنها مسئول تغییر نام کاربری POSIX و سایر دادههایی است که ممکن است بسته به شرایط شما مورد نیاز باشد، مانند دایرکتوری خانگی (home directory). لطفاً این نکته را نیز بررسی کنید که آیا نیازی به تغییر نام خود پوشههای خانگی واقعی دارید یا خیر. بکاند ldapsam به دلیل مشکلات احتمالی مرتبط با تغییر نام مشخصه نامگذاری LDAP، هیچ تغییری ایجاد نخواهد کرد. در این حالت، اسکریپت مسئول تغییر مشخصهای است که samba برای یافتن کاربران از آن استفاده میکند (uid)، و همچنین مسئول هر دادهای خواهد بود که باید برای سایر برنامههای استفادهکننده از همان دایرکتوری تغییر یابد.
require strong key (G)
فلگهای زیر الزامی خواهند بود: NETLOGON_NEG_STRONG_KEYS، NETLOGON_NEG_ARCFOUR و NETLOGON_NEG_AUTHENTICATED_RPC.
اگر برخی از کنترلکنندههای دامنه تنها از des پشتیبانی میکنند، میتوانید این گزینه را روی no تنظیم کنید. این کار ممکن است اجازه دهد تا رمزنگاریهای ضعیف، احتمالاً از طریق حملات تنزل رتبه امنیتی (downgrade attacks)، مورد توافق قرار گیرند.
این رفتار را میتوان به ازای هر دامنه netbios با استفاده از گزینه 'require strong key:NETBIOSDOMAIN = no' کنترل کرد.
توجه داشته باشید که برای دامنه active directory این گزینه بهطور ثابت روی 'yes' تنظیم شده است.
این گزینه توسط پارامتر reject md5 servers لغو (override) میشود.
این گزینه پارامتر client schannel را لغو میکند.
Default: require strong key = yes
reset on zero vc (G)
Default: reset on zero vc = no
restrict anonymous (G)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\RestrictAnonymous
این گزینه همچنین بر گزینه مرور (browse) که توسط کلاینتهای قدیمی متکی به مرور Netbios مورد نیاز است تأثیر میگذارد. با اینکه نسخههای مدرن ویندوز نباید با محدود کردن این دسترسی مشکلی داشته باشند، ممکن است همچنان برنامههایی وجود داشته باشند که به دسترسی ناشناس متکی هستند.
تنظیم restrict anonymous = 1 دسترسی ناشناس به SAMR را غیرفعال خواهد کرد.
تنظیم restrict anonymous = 2 علاوه بر محدود کردن دسترسی به SAMR، بهطور کلی اتصالهای ناشناس به اشتراک IPC$ را نیز غیرمجاز میکند. تنظیم guest ok = yes بر روی هر اشتراکی، این مزیت امنیتی را بیاثر خواهد ساخت.
Default: restrict anonymous = 0
root
root dir
root directory (G)
افزودن یک مدخل root directory به غیر از «/» یک سطح امنیتی اضافی ایجاد میکند، اما بهایی به همراه دارد. این تنظیم کاملاً تضمین میکند که هیچ دسترسی به فایلهای خارج از زیردرخت مشخصشده در گزینه root directory داده نشود، از جمله برخی فایلهای مورد نیاز برای عملکرد کامل سرور. برای حفظ کارایی کامل سرور، باید برخی از فایلهای سیستمی را در درخت root directory آینهسازی (mirror) کنید. بهویژه باید /etc/passwd (یا زیرمجموعهای از آن) و هر باینری یا فایل پیکربندی مورد نیاز برای چاپ (در صورت لزوم) را بازتاب دهید. مجموعه فایلهایی که باید بازتاب داده شوند، وابسته به سیستمعامل است.
Default: root directory =
Example: root directory = /homes/smb
root postexec (S)
Default: root postexec =
root preexec (S)
Default: root preexec =
root preexec close (S)
Default: root preexec close = no
rpc big endian (G)
اگر غیرفعال باشد، دادهها در قالب little endian (کوچکپایان) منتقل خواهند شد.
این رفتار مستقل از چینش بایتها (endianness) در ماشین میزبان است.
Default: rpc big endian = no
rpc server dynamic port range (G)
این پارامتر برای سرورهای RPC در تمامی نقشهای سرور (server roles) اعمال میشود.
Default: rpc server dynamic port range = 49152-65535
rpc server port (G)
این پارامتر پورت پیشفرض را برای تمامی پروتکلها، به جز NETLOGON کنترل میکند.
در صورت عدم تنظیم، نخستین پورت در دسترس از rpc server dynamic port range استفاده میشود، برای مثال 49152.
سرور NETLOGON از پورت در دسترس بعدی استفاده خواهد کرد، برای مثال 49153. برای تغییر این پورت میتوانید (برای نمونه) از rpc server port:netlogon = 4000 استفاده کنید.
علاوه بر این، برای همه سرورهای RPC میتوان پورت مورد استفاده را بهطور مستقل تعیین کرد؛ برای نمونه با rpc server port:drsuapi = 5000.
این گزینه در حال حاضر تنها زمانی اعمال میشود که samba(8) به عنوان کنترلکننده دامنه اکتیو دایرکتوری (Active Directory Domain Controller) اجرا شود.
مقدار پیشفرض 0 موجب میشود که سامبا نخستین پورت در دسترس را از rpc server dynamic port range انتخاب کند.
Default: rpc server port = 0
rpc start on demand helpers (G)
اگر samba-dcerpcd به صورت یک دیمن یا از طریق یک مدیر سرویس سیستمی مانند systemd راهاندازی شود، این پارامتر حتماً باید بر روی "no" تنظیم گردد؛ در غیر این صورت راهاندازی samba-dcerpcd با شکست مواجه خواهد شد.
Default: rpc start on demand helpers = yes
samba kcc command (G)
اصلاح این گزینه جز برای اهداف آزمایشی یا در صورتی که samba_kcc در مکانی غیرپیشفرض نصب شده باشد، نباید لازم باشد.
Default: samba kcc command = /build/samba/src/samba-4.24.6/source4/scripting/bin/samba_kcc
Example: samba kcc command = /usr/local/bin/kcc
security (G)
مگر آنکه server role مشخص شده باشد، حالت پیشفرض security = user است، چرا که این رایجترین تنظیم بوده و برای یک سرور فایل مستقل (standalone) یا یک DC به کار میرود.
جایگزینهای security = user شامل security = ads یا security = domain هستند که از پیوستن سامبا به یک دامنه ویندوز (Windows domain) پشتیبانی میکنند.
اگر عمدتاً مایل به راهاندازی اشتراکهای بدون گذرواژه (اشتراکهای مهمان یا guest shares) هستید، باید از security = user و map to guest استفاده کنید. این پیکربندی معمولاً برای یک سرور چاپگر اشتراکی به کار میرود.
اکنون تنظیمات مختلف توضیح داده میشوند.
SECURITY = AUTO
این تنظیم امنیتی پیشفرض در سامبا است و باعث میشود سامبا برای تعیین حالت امنیتی، پارامتر server role را (در صورت تنظیم بودن) بررسی کند.
SECURITY = USER
اگر server role مشخص نشده باشد، این حالت تنظیم امنیتی پیشفرض در سامبا است. با امنیت در سطح کاربر (user-level security)، کلاینت ابتدا باید با یک نام کاربری و گذرواژه معتبر «لاگین کند» (که این نام کاربری میتواند با استفاده از پارامتر username map نگاشت شود). گذرواژههای رمزنگاریشده (به پارامتر encrypt passwords مراجعه کنید) نیز میتوانند در این حالت امنیتی استفاده شوند. پارامترهایی از قبیل force user و guest only در صورت تنظیم بودن سپس اعمال میشوند و ممکن است کاربر یونیکس مورد استفاده در این اتصال را تغییر دهند، اما تنها پس از آنکه کاربر با موفقیت احراز هویت شد.
توجه داشته باشید که نام منبع درخواستی تا زمانی که سرور کلاینت را با موفقیت احراز هویت نکرده باشد، به سرور ارسال نمیشود. به همین دلیل است که اشتراکهای مهمان در امنیت سطح کاربر بدون اجازه دادن به سرور جهت نگاشت خودکار کاربران ناشناس به guest account کار نمیکنند. برای جزئیات در مورد انجام این کار، پارامتر map to guest را ببینید.
SECURITY = DOMAIN
این حالت تنها در صورتی بهدرستی کار خواهد کرد که از net(8) جهت افزودن این ماشین به یک دامنه Windows NT استفاده شده باشد. این حالت انتظار دارد پارامتر encrypt passwords بر روی yes تنظیم شده باشد. در این حالت، سامبا تلاش میکند تا با ارسال نام کاربری/گذرواژه به یک کنترلکننده اصلی یا پشتیبان دامنه (PDC یا BDC) در Windows NT، دقیقاً همانند یک Windows NT Server آن را اعتبارسنجی کند.
توجه داشته باشید که علاوه بر حساب کاربری در کنترلکننده دامنه، باید یک کاربر یونیکس معتبر نیز وجود داشته باشد تا سامبا بتواند دسترسی فایل را به یک حساب معتبر یونیکس نگاشت کند.
توجه داشته باشید که از دیدگاه کلاینت، security = domain همانند security = user است. این گزینه فقط بر نحوه برخورد سرور با احراز هویت اثر میگذارد و به هیچ وجه تأثیری بر آنچه کلاینت مشاهده میکند ندارد.
توجه داشته باشید که نام منبع درخواستی تا زمانی که سرور کلاینت را با موفقیت احراز هویت نکرده باشد، به سرور ارسال نمیشود. به همین دلیل است که اشتراکهای مهمان در امنیت سطح کاربر بدون اجازه دادن به سرور جهت نگاشت خودکار کاربران ناشناس به guest account کار نمیکنند. برای جزئیات در این خصوص، پارامتر map to guest را ببینید.
همچنین پارامتر password server و پارامتر encrypt passwords را ببینید.
SECURITY = ADS
در این حالت، سامبا به عنوان یک عضو دامنه در یک قلمرو (realm) ADS عمل خواهد کرد. برای فعالیت در این حالت، ماشینی که سامبا را اجرا میکند باید کربروس (Kerberos) را نصب و پیکربندی کرده باشد و سامبا با استفاده از ابزار net به قلمرو ADS پیوسته باشد.
توجه داشته باشید که این حالت موجب نمیشود سامبا به عنوان یک کنترلکننده دامنه اکتیو دایرکتوری (Active Directory Domain Controller) عمل کند.
توجه داشته باشید که این حالت مقادیر require strong key = yes و client schannel = yes را برای دامنه اصلی اجباری میکند.
برای جزئیات بیشتر، فصل مربوط به عضویت در دامنه (Domain Membership) را در HOWTO مطالعه کنید.
Default: security = AUTO
Example: security = DOMAIN
security mask (S)
بدون پیشفرض
server addresses (S)
یک فهرست خالی به معنای ارائه اشتراک روی تمامی رابطها است.
Default: server addresses =
max protocol
protocol
server max protocol (G)
مقادیر ممکن عبارتند از:
Default: server max protocol = SMB3
Example: server max protocol = LANMAN1
min protocol
server min protocol (G)
در حالت عادی این گزینه نباید تنظیم شود، چرا که مرحله مذاکره خودکار در پروتکل SMB وظیفه انتخاب پروتکل مناسب را بر عهده دارد، مگر اینکه کلاینتهای قدیمی داشته باشید که تنها قادر به کار با SMB1 هستند.
برای مشاهده فهرست کامل پروتکلهای موجود، به دستور مرتبط: server max protocol مراجعه کنید.
Default: server min protocol = SMB2_02
Example: server min protocol = NT1
server multi channel support (G)
این پارامتر در نسخه 4.4 اضافه شد.
توجه داشته باشید که این قابلیت تا نسخه 4.14 همچنان آزمایشی تلقی میشد.
به دلیل وابستگیها به APIهای کرنل لینوکس یا FreeBSD، در حال حاضر استفاده از این قابلیت تنها روی Linux و FreeBSD امکانپذیر است. برای مقاصد آزمایشی، میتوان با مشخص کردن اضافیِ force:server multi channel support=yes این محدودیت را نادیده گرفت.
این گزینه از نسخه 4.15 به بعد بهطور پیشفرض فعال است (روی Linux و FreeBSD).
Default: server multi channel support = yes
server reject aes schannel (G)
این گزینه کنترل میکند که آیا سرور netlogon (در حال حاضر تنها در حالت 'active directory domain controller')، کلاینتهایی را که از ServerAuthenticateKerberos پشتیبانی نمیکنند رد خواهد کرد یا خیر.
پشتیبانی از ServerAuthenticateKerberos از نسخه Server 2025 به ویندوز اضافه شد؛ این قابلیت در Samba از نسخه 4.22 با گزینههای 'server support krb5 netlogon = yes' و 'client use krb5 netlogon = yes' که بهطور پیشفرض غیرفعال هستند، در دسترس است.
توجه داشته باشید که این گزینه واقعاً به مشکلات امنیتی پیرامون CVE_2022_38023 مربوط نمیشود، اما همچنان از منطق و گزینههای مرتبط با سطح اشکالزدایی (debug level) استفاده میکند.
سامبا در صورتی که یک کلاینت قدیمی بدون گزینه صریح 'server reject aes schannel:COMPUTERACCOUNT = no' برای آن کلاینت رد شود، خطایی را در فایلهای لاگ در سطح لاگ 0 ثبت خواهد کرد. اگر نرمافزار کلاینت به آن نیاز داشته باشد، این پیام خط صریح 'server reject aes schannel:COMPUTERACCOUNT = no' را که باید اضافه شود مشخص میکند. (سطح لاگ را میتوان با 'CVE_2022_38023:error_debug_level = 1' تنظیم کرد تا فقط در سطح لاگ بالاتری اخطار دهد).
سامبا در صورتی که کلاینتی بدون گزینه صریح 'server reject aes schannel:COMPUTERACCOUNT = no' برای آن کلاینت مجاز دانسته شود، پیامی را در سطح لاگ 5 در فایلهای لاگ ثبت خواهد کرد. اگر نرمافزار کلاینت به آن نیاز داشته باشد، این پیام خط صریح 'server reject aes schannel:COMPUTERACCOUNT = no' را که باید اضافه شود مشخص میکند. (سطح لاگ را میتوان با 'NETLOGON_AES:usage_debug_level = 0' تنظیم کرد تا فقط در سطح لاگ پایینتر یا بالاتری گزارش دهد). از این قابلیت میتوان برای آمادهسازی پیکربندی پیش از تغییر به 'server reject aes schannel = yes' استفاده کرد.
مدیران سیستم میتوانند برای داشتن کنترل بیشتر از گزینههای 'server reject aes schannel:COMPUTERACCOUNT = no/yes' استفاده کنند.
هنگامی که روی 'yes' تنظیم شود، این گزینه بر گزینههای 'server reject md5 schannel:COMPUTERACCOUNT' و 'reject md5 clients' تقدم یافته و متضمن 'server reject md5 schannel:COMPUTERACCOUNT = no' خواهد بود.
این گزینه با گزینه 'server support krb5 netlogon' تعامل دارد.
در حال حاضر 'server reject aes schannel' آزمایشی (EXPERIMENTAL) است و نباید بهطور صریح پیکربندی شود.
Default: server reject aes schannel = no
Example: server reject aes schannel = yes
server reject aes schannel:COMPUTERACCOUNT (G)
توجه داشته باشید که این گزینه واقعاً به مشکلات امنیتی پیرامون CVE_2022_38023 مربوط نمیشود، اما همچنان از منطق و گزینههای مرتبط با سطح اشکالزدایی استفاده میکند.
اگر این گزینه روی "no" تنظیم شده باشد اما رایانه مربوطه به آن نیازی نداشته باشد، سامبا شکایتی را در سطح لاگ 0 درباره مشکل امنیتی در فایلهای لاگ ثبت خواهد کرد. (سطح لاگ را میتوان با 'CVE_2022_38023:warn_about_unused_debug_level = 1' تنظیم کرد تا فقط در سطح لاگ بالاتری اخطار دهد).
سامبا در صورتی که همچنان به این تنظیم برای حساب رایانه مشخصشده نیاز باشد، هشداری را در سطح لاگ 5 در فایلهای لاگ ثبت خواهد کرد.
این گزینه بر گزینه server reject aes schannel تقدم دارد.
هنگامی که روی 'yes' تنظیم شود، این گزینه بر گزینههای 'server reject md5 schannel:COMPUTERACCOUNT' و 'reject md5 clients' تقدم یافته و متضمن 'server reject md5 schannel:COMPUTERACCOUNT = no' خواهد بود.
server reject aes schannel:LEGACYCOMPUTER1$ = no server reject aes schannel:NASBOX$ = no server reject aes schannel:LEGACYCOMPUTER2$ = no server reject aes schannel:HIGHPRIVACYSRV$ = yes
بدون پیشفرض
server role (G)
مقدار پیشفرض server role = auto است که باعث میشود Samba بر اساس تنظیمات security یا در صورت مشخص نشدن، به عنوان یک کارساز فایل ساده که به هیچ دامنهای متصل نیست عمل کند.
گزینههای دیگر عبارتند از server role = standalone یا server role = member server که از پیوستن Samba به یک دامنه Windows پشتیبانی میکنند، به همراه server role = domain controller که Samba را به عنوان یک کنترلکننده دامنه Windows اجرا میکند.
اگر میخواهید عمدتاً اشتراکهای بدون گذرواژه (اشتراکهای مهمان یا guest shares) را راهاندازی کنید، باید از server role = standalone و map to guest استفاده نمایید. این مورد معمولاً برای یک کارساز چاپگر به اشتراک گذاشته شده استفاده میشود.
SERVER ROLE = AUTO
این نقش کارساز پیشفرض در Samba است و باعث میشود Samba پارامتر security را (در صورت تنظیم شدن) برای تعیین نقش کارساز بررسی کند، که رفتاری سازگار با نسخههای پیشین Samba فراهم میکند.
SERVER ROLE = STANDALONE
اگر security نیز مشخص نشده باشد، این تنظیم امنیتی پیشفرض در Samba است. در حالت مستقل (standalone)، کلاینت ابتدا باید با یک نام کاربری و گذرواژه معتبر (که میتواند با استفاده از پارامتر username map نگاشت شود) ذخیره شده روی این ماشین وارد (log-on) شود. گذرواژههای رمزگذاریشده (به پارامتر encrypt passwords مراجعه کنید) به صورت پیشفرض در این حالت امنیتی استفاده میشوند. پارامترهایی مانند force user و guest only در صورت تنظیم شدن اعمال میشوند و ممکن است کاربر UNIX مورد استفاده در این اتصال را تغییر دهند، اما تنها پس از آنکه کاربر با موفقیت احراز هویت شد.
SERVER ROLE = MEMBER SERVER
این حالت تنها در صورتی به درستی کار خواهد کرد که از net(8) برای افزودن این ماشین به یک دامنه Windows استفاده شده باشد. این حالت انتظار دارد پارامتر encrypt passwords روی yes تنظیم شده باشد. در این حالت Samba تلاش میکند نام کاربری/گذرواژه را با ارسال آن به یک کنترلکننده دامنه Windows یا Samba اعتبارسنجی کند، دقیقاً به همان روشی که یک Windows Server انجام میدهد.
توجه داشته باشید که علاوه بر حساب کاربری در کنترلکننده دامنه، یک کاربر معتبر UNIX نیز باید وجود داشته باشد تا به Samba اجازه دهد یک حساب معتبر UNIX برای نگاشت دسترسی به فایلها داشته باشد. Winbind میتواند این را فراهم کند.
SERVER ROLE = CLASSIC PRIMARY DOMAIN CONTROLLER
این حالت کاری یک کنترلکننده دامنه اصلی (PDC) کلاسیک Samba را اجرا میکند و خدمات ورود به دامنه را برای کلاینتهای Windows و Samba در یک دامنه شبیه به NT4 فراهم میسازد. کلاینتها برای ایجاد یک مسیر امن و قابل اعتماد در سراسر شبکه باید به دامنه ملحق شوند. به ازای هر محدوده NetBIOS (معمولاً یک شبکه پخشی یا کلاینتهایی که توسط یک کارساز WINS سرویسدهی میشوند) باید تنها یک PDC وجود داشته باشد.
SERVER ROLE = CLASSIC BACKUP DOMAIN CONTROLLER
این حالت کاری یک کنترلکننده دامنه پشتیبان (BDC) کلاسیک Samba را اجرا میکند و خدمات ورود به دامنه را برای کلاینتهای Windows و Samba در یک دامنه شبیه به NT4 فراهم میسازد. به عنوان یک BDC، این امکان را فراهم میکند که چندین کارساز Samba خدمات ورود زائد (redundant) را به یک محدوده NetBIOS واحد ارائه دهند.
SERVER ROLE = ACTIVE DIRECTORY DOMAIN CONTROLLER
این حالت کاری Samba را به عنوان یک کنترلکننده دامنه Active Directory اجرا میکند و خدمات ورود به دامنه را به کلاینتهای Windows و Samba دامنه ارائه میدهد. این نقش به پیکربندی ویژهای نیاز دارد، به Samba4 HOWTO مراجعه کنید.
SERVER ROLE = IPA PRIMARY DOMAIN CONTROLLER
این حالت کاری Samba را در یک حالت ترکیبی (هیبرید) برای کنترلکننده دامنه IPA اجرا میکند و اعتماد بیشهای (forest trust) را به Active Directory فراهم میسازد. این نقش نیازمند پیکربندی ویژهای است که توسط نصابهای IPA انجام میشود و نباید به صورت دستی توسط هیچ مدیر سیستمی استفاده شود.
Default: server role = AUTO
Example: server role = ACTIVE DIRECTORY DOMAIN CONTROLLER
server schannel (G)
از استفاده از این گزینه خودداری کنید! در عوض به طور صریح از 'server require schannel:COMPUTERACCOUNT = no' استفاده کنید!
اگر کلاینت قدیمی رد شود یا بدون گزینه صریح 'server require schannel:COMPUTERACCOUNT = no' برای آن کلاینت مجاز دانسته شود، Samba خطایی را در فایلهای لاگ در سطح لاگ ۰ ثبت خواهد کرد. پیام لاگ، خط صریح 'server require schannel:COMPUTERACCOUNT = no' را که در صورت نیاز نرمافزار کلاینت قدیمی باید اضافه شود نشان میدهد. (سطح لاگ را میتوان با 'CVE_2020_1472:error_debug_level = 1' تنظیم کرد تا فقط در سطح لاگ بالاتری هشدار داده شود).
این به مدیران سیستم اجازه میدهد از "auto" تنها برای یک دوره موقت مهلت (grace period) استفاده کنند تا گزینههای صریح 'server require schannel:COMPUTERACCOUNT = no' را جمعآوری نمایند.
ببینید: CVE-2020-1472(ZeroLogon)، https://bugzilla.samba.org/show_bug.cgi?id=14497.
این گزینه توسط گزینه server require schannel:COMPUTERACCOUNT بازنویسی (نادیده گرفته) میشود.
این گزینه توسط مقدار مؤثر 'yes' حاصل از گزینههای 'server schannel require seal:COMPUTERACCOUNT' و/یا 'server schannel require seal' بازنویسی میشود.
Default: server schannel = yes
server require schannel:COMPUTERACCOUNT (G)
اگر گزینه روی "no" تنظیم نشده باشد اما رایانه مربوطه واقعاً از ویژگی کانال امن netlogon (همان schannel) استفاده کند، Samba در فایلهای لاگ در سطح لاگ ۰ درباره این مشکل امنیتی هشدار خواهد داد. (سطح لاگ را میتوان با 'CVE_2020_1472:warn_about_unused_debug_level = 1' تنظیم کرد تا فقط در سطح لاگ بالاتری هشدار داده شود).
اگر تنظیمی همچنان برای حساب رایانه مشخصشده نیاز باشد، Samba در فایلهای لاگ در سطح لاگ ۵ هشدار خواهد داد.
ببینید: CVE-2020-1472(ZeroLogon)، https://bugzilla.samba.org/show_bug.cgi?id=14497.
این گزینه، گزینه server schannel را بازنویسی میکند.
این گزینه توسط مقدار مؤثر 'yes' حاصل از گزینههای 'server schannel require seal:COMPUTERACCOUNT' و/یا 'server schannel require seal' نادیده گرفته میشود.
این بدان معناست که 'server require schannel:COMPUTERACCOUNT = no' تنها در ترکیب با 'server schannel require seal:COMPUTERACCOUNT = no' مفید است.
server require schannel:LEGACYCOMPUTER1$ = no server require schannel seal:LEGACYCOMPUTER1$ = no server require schannel:NASBOX$ = no server require schannel seal:NASBOX$ = no server require schannel:LEGACYCOMPUTER2$ = no server require schannel seal:LEGACYCOMPUTER2$ = no
بدون پیشفرض
server schannel require seal (G)
این گزینه کنترل میکند که آیا کارساز netlogon، استفاده از کانال امن netlogon را بدون حریمخصوصی/رمزنگاری (privacy/encryption) رد میکند یا خیر.
این گزینه بر اساس کلید رجیستری موجود در Windows الگوبرداری شده است.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\RequireSeal=2
از استفاده از این گزینه خودداری کنید! در عوض از گزینه اختصاصی به ازای هر حساب رایانه 'server schannel require seal:COMPUTERACCOUNT' استفاده کنید! این گزینه با وصلههای مربوط به CVE-2022-38023 در دسترس است؛ ببینید: https://bugzilla.samba.org/show_bug.cgi?id=15240.
اگر یک کلاینت قدیمی رد شود یا بدون یک گزینه صریح 'server schannel require seal:COMPUTERACCOUNT = no' برای کلاینت مجاز دانسته شود، Samba خطایی را در فایلهای لاگ در سطح لاگ ۰ ثبت خواهد کرد. پیام لاگ، خط صریح 'server schannel require seal:COMPUTERACCOUNT = no' را که در صورت نیاز نرمافزار کلاینت قدیمی باید اضافه شود نشان خواهد داد. (سطح لاگ را میتوان با 'CVE_2022_38023:error_debug_level = 1' تنظیم کرد تا فقط در سطح لاگ بالاتری هشدار داده شود).
این به مدیران سیستم اجازه میدهد از "no" فقط برای یک دوره موقت مهلت (grace period) استفاده کنند تا گزینههای صریح 'server schannel require seal:COMPUTERACCOUNT = no' را جمعآوری نمایند.
هنگامی که روی 'yes' تنظیم شود، این گزینه بر گزینههای 'server require schannel:COMPUTERACCOUNT' و 'server schannel' تقدم یافته و به معنی 'server require schannel:COMPUTERACCOUNT = yes' خواهد بود.
این گزینه توسط گزینه server schannel require seal:COMPUTERACCOUNT بازنویسی (بیاثر) میشود.
Default: server schannel require seal = yes
server schannel require seal:COMPUTERACCOUNT (G)
اگر این گزینه روی "no" تنظیم شده باشد اما رایانه مربوطه به آن نیاز نداشته باشد، Samba هشداری را در فایلهای لاگ در سطح لاگ ۰ درباره این مشکل امنیتی ثبت خواهد کرد. (سطح لاگ را میتوان با 'CVE_2022_38023:warn_about_unused_debug_level = 1' تنظیم کرد تا تنها در سطوح لاگ بالاتر هشدار داده شود).
اگر همچنان تنظیمی برای حساب رایانه مشخصشده مورد نیاز باشد، Samba در فایلهای لاگ در سطح لاگ ۵ هشدار خواهد داد.
ببینید: CVE-2022-38023، https://bugzilla.samba.org/show_bug.cgi?id=15240.
این گزینه بر گزینه 'server schannel require seal' تقدم دارد.
هنگامی که روی 'yes' تنظیم شود، این گزینه بر گزینههای 'server require schannel:COMPUTERACCOUNT' و 'server schannel' تقدم داشته و متضمن 'server require schannel:COMPUTERACCOUNT = yes' است.
server require schannel seal:LEGACYCOMPUTER1$ = no server require schannel seal:NASBOX$ = no server require schannel seal:LEGACYCOMPUTER2$ = no
بدون پیشفرض
server services (G)
یک مدخل در فایل smb.conf میتواند مقدار قبلی را به طور کامل بازنویسی کند یا با افزودن پیشوند + یا - به مدخلها، مواردی را از آن حذف کرده یا به آن اضافه کند.
Default: server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, ft_scanner, winbindd, ntp_signd, kcc, dnsupdate, dns
Example: server services = -s3fs, +smb
server signing (G)
به طور پیشفرض و زمانی که smb signing روی default تنظیم شده است، امضای smb هنگامی که server role برابر با active directory domain controller باشد الزامی است و در غیر این صورت غیرفعال (disabled) خواهد بود.
هنگامی که روی auto تنظیم شود، امضای SMB1 پیشنهاد میشود اما اجباری نیست. هنگامی که روی mandatory تنظیم شود، امضای SMB1 الزامی است و در صورت تنظیم روی disabled، امضای SMB حتی پیشنهاد هم نخواهد شد.
برای پروتکل SMB2 بر اساس طراحی، امضا نمیتواند غیرفعال شود. در حالتی که بر سر SMB2 مذاکره (negotiate) شود، اگر این پارامتر روی disabled تنظیم شده باشد، با آن مانند auto رفتار خواهد شد. تنظیم آن روی mandatory همچنان کلاینتهای SMB2 را ملزم به استفاده از امضا خواهد کرد.
Default: server signing = default
server smb encrypt (S)
اثرات در SMB1
این گزینه ممکن است بر مبنای هر اشتراک تنظیم شود، اما کلاینتها ممکن است ترجیح دهند به جای ترافیک مربوط به یک اشتراک خاص، کل نشست را رمزنگاری کنند. اگر این مقدار روی mandatory تنظیم شود، پس از برقراری اتصال به اشتراک، تمامی ترافیک به سمت آن اشتراک باید رمزنگاری شود. سرور برای تمامی درخواستهای رمزنگارینشده روی چنین اشتراکی، خطای "access denied" را برمیگرداند. انتخاب ترافیک رمزنگاریشده توان عملیاتی را کاهش میدهد، زیرا باید از بستههای با اندازه کوچکتری استفاده شود (خواندن/نوشتنهای بزرگ به سبک UNIX مجاز نیستند) و علاوه بر آن سربار رمزنگاری و امضای تمامی دادهها نیز وجود دارد.
در صورت انتخاب رمزنگاری SMB، امضای SMB به سبک Windows (گزینه server signing را ببینید) دیگر ضروری نیست، زیرا فلگهای GSSAPI هر دو عملیات امضا و مهر و موم دادهها را انتخاب میکنند.
هنگامی که روی auto یا default تنظیم شود، رمزنگاری SMB پیشنهاد میشود اما اجبار نمیگردد. هنگامی که روی mandatory تنظیم شود، رمزنگاری SMB الزامی است و در صورت تنظیم روی disabled، امکان مذاکره برای رمزنگاری SMB وجود ندارد.
اثرات در SMB3.0 و جدیدتر
پیادهسازی پروتکل گزینههای گوناگونی را ارائه میدهد:
توجه داشته باشید که این موضوع اجازه میدهد اعمال اجبار به ازای هر اشتراک در Samba متفاوت از Windows کنترل شود: در Windows، گزینه RejectUnencryptedAccess یک تنظیم سراسری است، و اگر تنظیم شود، تمام اشتراکهایی که رمزنگاری دادهها در آنها روشن است به صورت خودکار رمزنگاری را اجباری میکنند. برای دستیابی به همین اثر در Samba، باید به صورت سراسری server smb encrypt را روی if_required تنظیم کرد و سپس تمام اشتراکهایی را که باید رمزنگاری شوند روی required قرار داد. علاوه بر این، در Samba این امکان وجود دارد که برخی اشتراکها دارای رمزنگاری required و برخی دیگر تنها دارای رمزنگاری desired باشند، امری که در Windows ممکن نیست.
Default: server smb encrypt = default
server smb3 encryption algorithms (G)
همچنین حذف الگوریتمهای مجزا از فهرست پیشفرض، با قرار دادن پیشوند '-' در ابتدای آنها امکانپذیر است. این امر میتواند از الزام به مشخص کردن یک فهرست ثابت (hardcoded) جلوگیری کند.
توجه: حذف AES-128-CCM از این فهرست منجر به در دسترس نبودن SMB3_00 و SMB3_02 خواهد شد، زیرا این الگوریتم، الگوریتم پیشفرض و تنها الگوریتم موجود برای این گویشها است.
Default: server smb3 encryption algorithms = AES-128-GCM, AES-128-CCM, AES-256-GCM, AES-256-CCM
Example: server smb3 encryption algorithms = AES-256-GCM
Example: server smb3 encryption algorithms = -AES-128-GCM -AES-128-CCM
server smb encryption over quic (G)
پارامتر server smb encrypt استفاده از سازوکار رمزنگاری معرفیشده در SMB3.0 را کنترل میکند. اگر مقدار server smb encryption over quic روی no تنظیم شده باشد، و کلاینت از طریق یک اتصال QUIC معتبر (و در نتیجه TLS) متصل شود، سرور الزامات ناشی از پارامتر server smb encrypt را نادیده گرفته و تمامی بستههای سطح SMB درون اتصال QUIC را به عنوان بستههایی که به شیوهای قابل اعتماد رمزنگاری شدهاند میپذیرد. این امر از رمزنگاری مضاعف و پرهزینه جلوگیری میکند.
اگر server smb encryption over quic روی مقدار پیشفرض خود یعنی yes باقی بماند، کلاینت از طریق TCP معمولی متصل شود، یا کلاینت اعلام نکند که میتواند به اتصال QUIC مورد استفاده اعتماد کند، الزامات server smb encrypt اعمال خواهند شد.
توجه داشته باشید که رمزنگاری لایه QUIC مبتنی بر گواهی ارائهشده در سطح TLS توسط سرور است. رمزنگاری لایه SMB مبتنی بر نشستهای انفرادی کاربر و در نتیجه اساساً مبتنی بر اعتبارنامههای اولیه کاربر مانند گذرواژه کاربر یا اعتبارنامههای معادل استفادهشده برای ورود به یک نشست Windows است. این موضوع ممکن است بر ارزیابی امنیتی شما در رابطه با پارامتر server smb encryption over quic تأثیر بگذارد.
ویندوز دارای تنظیم مشابهی در سرور SMB با سوییچ DisableSmbEncryptionOnSecureConnection در کامندلت پاورشل Set-SmbServerConfiguration است.
Default: server smb encryption over quic = yes
server smb3 signing algorithms (G)
همچنین میتوان الگوریتمهای خاصی را با افزودن پیشوند '-' پیش از نام آنها، از فهرست پیشفرض حذف کرد. این کار از لزوم تعیین یک فهرست ثابت و هاردکدشده (hardcoded) جلوگیری میکند.
نکته: توجه داشته باشید که حذف AES-128-CMAC از فهرست، منجر به عدم دسترسی به SMB3_00 و SMB3_02 خواهد شد، و حذف HMAC-SHA256 منجر به عدم دسترسی به SMB2_02 و SMB2_10 میشود؛ چرا که اینها الگوریتمهای پیشفرض و تنها الگوریتمهای موجود برای این لهجهها هستند.
Default: server smb3 signing algorithms = AES-128-GMAC, AES-128-CMAC, HMAC-SHA256
Example: server smb3 signing algorithms = AES-128-CMAC, HMAC-SHA256
Example: server smb3 signing algorithms = -AES-128-CMAC
server smb transports (G)
ترتیب موارد تنها برای ثبتهای mDNS اهمیت دارد؛ نخستین پورت 'tcp' یا 'nbt' برای این منظور به کار میرود.
لایهٔ انتقال 'tcp' از پروتکل TCP خام با یک سرایند طول ۴ بایتی به ازای هر SMB PDU استفاده میکند. پورت پیشفرض برای 'tcp' برابر با 445 است. سایر پورتها را میتوان با درج پس از علامت ':' تعیین کرد، به عنوان مثال 'tcp:1445'.
لایهٔ انتقال 'nbt' از فریمبندی NetBIOS بر روی TCP به ازای هر SMB PDU استفاده میکند. پورت پیشفرض برای 'nbt' برابر با 139 است. سایر پورتها را میتوان با درج پس از علامت ':' تعیین کرد، به عنوان مثال 'nbt:1139'.
لایهٔ انتقال 'quic' از پروتکل QUIC بر روی UDP استفاده میکند. پورت پیشفرض برای 'quic' برابر با 443 است. سایر پورتها را میتوان با درج پس از علامت ':' تعیین کرد، به عنوان مثال 'quic:1443'. گزینههای زیر نیز مرتبط هستند: tls enabled, tls cafile, tls certfile و tls keyfile. اگر فایلهایی که توسط tls cafile, tls certfile و tls keyfile به آنها اشاره شده است هیچکدام وجود نداشته باشند، یک گواهی خودامضا (self-signed) برای TLS در هنگام راهاندازی به صورت خودکار ایجاد میشود.
نکته: انتقال 'quic' نیازمند ماژول هستهٔ quic.ko برای Linux از نشانی https://github.com/lxin/quic است (بر روی Linux 6.14 آزمایش شده است). ممکن است نسخههای آیندهٔ لینوکس به صورت بومی از آن پشتیبانی کنند.
پورتهای عددی به عنوان 'tcp' مدیریت میشوند، به جز پورت '139' که به عنوان 'nbt' در نظر گرفته میشود.
توجه داشته باشید که در حال حاضر محدودیتی معادل ۱۰ لایهٔ انتقال منحصربهفرد وجود دارد و تمام موارد مازاد بر آن نادیده گرفته خواهند شد.
Default: server smb transports = tcp, nbt
Example: server smb transports = 445
Example: server smb transports = tcp, tcp:1445
Example: server smb transports = 8000, nbt:1139
Example: server smb transports = tcp, quic, nbt
Example: server smb transports = +quic
smb ports (G)
No default
server string (G)
این پارامتر همچنین متنی را که در فهرستهای مرور (browse lists) در کنار نام رایانه ظاهر میشود، تنظیم میکند.
شناسهٔ %v با شماره نسخهٔ Samba جایگزین خواهد شد.
شناسهٔ %h با نام میزبان (hostname) جایگزین خواهد شد.
Default: server string = Samba %v
Example: server string = University of GNUs Samba Server
server support krb5 netlogon (G)
این گزینه تعیین میکند که آیا سرور netlogon (در حال حاضر تنها در حالت 'active directory domain controller')، از ServerAuthenticateKerberos پشتیبانی خواهد کرد یا خیر.
پشتیبانی از ServerAuthenticateKerberos از نسخهٔ Server 2025 به Windows افزوده شده است و در Samba از نسخهٔ 4.22 با گزینههای 'server support krb5 netlogon = yes' و 'client use krb5 netlogon = yes' که به صورت پیشفرض غیرفعال هستند، در دسترس قرار دارد.
این گزینه با گزینههای 'server reject aes schannel:COMPUTERACCOUNT = yes' و 'server reject aes schannel = yes' در تعامل است.
Default: server support krb5 netlogon = no
Example: server support krb5 netlogon = yes
set primary group script (G)
Default: set primary group script =
Example: set primary group script = /usr/sbin/usermod -g '%g' '%u'
set quota command (G)
این گزینه تنها در صورتی فعال است که Samba همراه با پشتیبانی از quota کامپایل شده باشد.
این پارامتر باید مسیر اسکریپتی را مشخص کند که بتواند سهمیهبندی (quota) را برای آرگومانهای تعیینشده اعمال نماید.
اسکریپت مشخصشده باید آرگومانهای زیر را بپذیرد:
Default: set quota command =
Example: set quota command = /usr/local/sbin/set_quota
share:fake_fscaps (S)
با share:fake_fscaps = 64 فلگ قابلیت سیستم فایل SPARSE_FILES (0x40) تنظیم میشود.
با share:fake_fscaps = 134217728 فلگ قابلیت سیستم فایل SUPPORTS_BLOCK_REFCOUNTING (0x8000000) تنظیم میشود. در زمان نگارش این مستند، سیستمفایلهایی که از این ویژگی پشتیبانی میکنند عبارتند از BTRFS، XFS و ZFS.
فهرست کامل را میتوان در MS-FSCC 2.5.1 FileFsAttributeInformation یافت. توجه داشته باشید که در پیکربندی تنها میتوان از مقادیر دهدهی (decimal) استفاده کرد.
Default: share:fake_fscaps = 0
short preserve case (S)
بخش NAME MANGLING را ببینید.
Default: short preserve case = yes
show add printer wizard (G)
در شرایط عادی، کلاینت Windows NT/2000 با فراخوانی OpenPrinterEx() و درخواست دسترسیهای Administrator، یک هندل (handle) روی سرور چاپ باز میکند. اگر کاربر دسترسی مدیریتی روی سرور چاپ نداشته باشد (یعنی کاربر root نباشد یا امتیاز SePrintOperatorPrivilege به او اعطا نشده باشد)، فراخوانی OpenPrinterEx() با شکست مواجه میشود و کلاینت یک فراخوانی باز کردن دیگر با درخواست سطح دسترسی پایینتر انجام میدهد. این فراخوانی باید با موفقیت انجام شود، اما آیکون APW نمایش داده نخواهد شد.
غیرفعال کردن پارامتر show add printer wizard همواره باعث ناموفق شدن OpenPrinterEx() روی سرور خواهد شد. بنابراین آیکون APW هرگز نمایش داده نخواهد شد.
نکته
این امر مانع از داشتن دسترسی مدیریتی همان کاربر روی یک چاپگر مجزا نمیشود.
shutdown script (G)
اگر کاربر متصلشده دارای امتیاز SeRemoteShutdownPrivilege باشد، این دستور با دسترسی root اجرا خواهد شد.
متغیرهای %z %t %r %f به صورت زیر جایگزین میشوند:
#!/bin/bash
time=$2
let time="${time} / 60"
let time="${time} + 1"
/sbin/shutdown $3 $4 +$time $1 &
دستور shutdown خاتمه نمییابد (خروجی بازنمیگرداند)، بنابراین باید آن را در پسزمینه (background) اجرا کنیم.
Default: shutdown script =
Example: shutdown script = /usr/local/samba/sbin/shutdown %m %t %r %f
unix extensions
smb1 unix extensions (G)
توجه داشته باشید که در صورت فعال بودن این پارامتر، پارامتر wide links به صورت خودکار غیرفعال خواهد شد.
اگر میخواهید این پیوند میان این دو پارامتر را تغییر دهید، پارامتر allow insecure wide links را ببینید.
Default: smb1 unix extensions = yes
smb2 disable lock sequence checking (G)
مشخصات [MS-SMB2] (در بخش 3.3.5.14 Receiving an SMB2 LOCK Request) مستند کرده است که سرور در صورتی که Open.IsResilient یا Open.IsDurable یا Open.IsPersistent برابر TRUE باشد، یا اگر Connection.Dialect به خانواده گویشهای SMB 3.x تعلق داشته و Connection.ServerCapabilities شامل SMB2_GLOBAL_CAP_MULTI_CHANNEL باشد، باید بررسی توالی قفل را انجام دهد.
اما Windows Server (حداقل تا نسخه v2004) این بررسیها را تنها برای Open.IsResilient و Open.IsPersistent انجام میدهد. این بدان معناست که آنها رفتاری را که در [MS-SMB2] تصریح شده است، پیادهسازی نمیکنند.
به طور پیشفرض Samba مطابق با این مشخصات عمل میکند و هنگام استفاده از multi-channel، بررسی توالی قفل را پیادهسازی مینماید.
هشدار: این گزینه را تنها در صورتی فعال کنید که کلاینتهای موجود نتوانند بررسی توالی قفل را برای هندلهای فاقد Open.IsResilient و Open.IsPersistent پردازش کنند و مشخص شود که رفتار Windows Server مورد نیاز است.
نکته: به احتمال زیاد در صورتی که نسخههای آینده ویندوز رفتار خود را تغییر دهند، این گزینه دوباره حذف خواهد شد.
نکته: Samba هنوز Open.IsResilient و Open.IsPersistent را پیادهسازی نکرده است.
Default: smb2 disable lock sequence checking = no
Example: smb2 disable lock sequence checking = yes
smb2 disable oplock break retry (G)
مشخصات [MS-SMB2] مستند کرده است که سرور باید تلاشهای مجدد اعلان شکستن oplock در SMB2 را روی تمام کانالهای موجود برای کلاینت مربوطه ارسال نماید.
اما نسخههای Windows Server (حداقل تا نسخه 2019) تلاشهای مجدد اعلان شکستن oplock در SMB2 را در هنگام بروز خطای کانال ارسال نمیکنند. این بدان معناست که آنها رفتار مشخصشده در [MS-SMB2] را پیادهسازی نمیکنند.
به طور پیشفرض Samba مطابق با این مشخصات عمل کرده و تلاشهای مجدد اعلان شکستن oplock در SMB2 را ارسال میکند.
هشدار: این گزینه را تنها در صورتی فعال کنید که کلاینتهای موجود نتوانند تلاشهای مجدد احتمالی را پردازش کنند و ثابت شود که رفتار Windows Server ضروری است.
نکته: به احتمال زیاد در صورتی که نسخههای آینده ویندوز رفتار خود را تغییر دهند، این گزینه دوباره حذف خواهد شد.
نکته: این مورد تنها روی oplockها اعمال میشود و شامل SMB2 leases نمیگردد.
Default: smb2 disable oplock break retry = no
Example: smb2 disable oplock break retry = yes
smb2 leases (G)
این قابلیت تنها با oplocks = yes و kernel oplocks = no در دسترس است.
Default: smb2 leases = yes
smb2 max credits (G)
مقدار پیشفرض 8192 اعتبار (credits) است که دقیقاً مشابه یک سرور SMB2 در Windows 2008R2 میباشد.
Default: smb2 max credits = 8192
smb2 max read (G)
حداکثر مقدار ۸۳۸۸۶۰۸ بایت (8MiB) است که با مقدار موجود در Windows Server 2012 r2 یکسان است.
لطفاً توجه داشته باشید که مقدار پیشفرض 8MiB است، اما محدودیت آن بر اساس لهجه/گویش (dialect) پروتکل smb2 تعیین میشود (۶۴ کیبیبایت برای SMB == 2.0 و ۸ مبیبایت برای SMB >= 2.1 با LargeMTU). قابلیت Large MTU بر روی NBT (پورت tcp شماره ۱۳۹) پشتیبانی نمیشود.
Default: smb2 max read = 8388608
smb2 max trans (G)
حداکثر مقدار ۸۳۸۸۶۰۸ بایت (8MiB) است که با مقدار موجود در Windows Server 2012 r2 یکسان است.
لطفاً توجه داشته باشید که مقدار پیشفرض 8MiB است، اما محدودیت آن بر اساس لهجه/گویش (dialect) پروتکل smb2 تعیین میشود (۶۴ کیبیبایت برای SMB == 2.0 و ۱ مبیبایت برای SMB >= 2.1 با LargeMTU). قابلیت Large MTU بر روی NBT (پورت tcp شماره ۱۳۹) پشتیبانی نمیشود.
Default: smb2 max trans = 8388608
smb2 max write (G)
حداکثر مقدار ۸۳۸۸۶۰۸ بایت (8MiB) است که با مقدار موجود در Windows Server 2012 r2 یکسان است.
لطفاً توجه داشته باشید که مقدار پیشفرض 8MiB است، اما محدودیت آن بر اساس لهجه/گویش (dialect) پروتکل smb2 تعیین میشود (۶۴ کیبیبایت برای SMB == 2.0 و ۸ مبیبایت برای SMB => 2.1 با LargeMTU). قابلیت Large MTU بر روی NBT (پورت tcp شماره ۱۳۹) پشتیبانی نمیشود.
Default: smb2 max write = 8388608
smb3 directory leases (G)
مقادیر ممکن برای smb3 directory leases عبارتند از yes، no و auto، که auto مقدار پیشفرض است.
هنگامی که بر روی auto تنظیم شود، مقدار موثر به گزینه clustering بستگی دارد. اگر clustering فعال باشد، smb3 directory leases غیرفعال میشود و برعکس.
smb3 directory leases تنها در صورت فعال بودن smb2 leases = yes، oplocks = yes و kernel oplocks = no در دسترس است.
فعال کردن smb3 directory leases بهطور ضمنی strict rename را نیز فعال میکند.
Default: smb3 directory leases = auto
smb3 share cap:CONTINUOUS AVAILABILITY (S)
نکته: این گزینه فقط برای اشتراکهای دیسک (disk shares) اعمال میشود.
در یک کلاستر ctdb اشتراکها بهطور مداوم در دسترس (continuously available) هستند، اما کلاینتهای ویندوز این ویژگی را با پشتیبانی سراسری از دستگیرههای پایدار (persistent handles) در هم میآمیزند.
در صورتی که SMB2_SHARE_CAP_CONTINUOUS_AVAILABILITY وجود داشته باشد، دستگیرههای پایدار حتی بدون SMB2_CAP_PERSISTENT_HANDLES نیز درخواست میشوند.
و وجود SMB2_SHARE_CAP_CONTINUOUS_AVAILABILITY برای موثر واقع شدن SMB2_SHARE_CAP_CLUSTER الزامی است.
بنابراین بهتر است تا زمانی که از دستگیرههای پایدار پشتیبانی نمیکنیم، این مورد را بهطور پیشفرض اعلام نکنیم.
گزینه smb3 share cap:CONTINUOUS AVAILABILITY میتواند برای اجبار به اعلام SMB2_SHARE_CAP_CONTINUOUS_AVAILABILITY استفاده شود.
هشدار: فقط در صورتی از این گزینه استفاده کنید که کاملاً میدانید چه کاری انجام میدهید!
smb3 share cap:CONTINUOUS AVAILABILITY = yes
No default
smb3 share cap:SCALE OUT (S)
نکته: این گزینه فقط برای اشتراکهای دیسک اعمال میشود.
در یک کلاستر ctdb ما چندین گره (node) فعال داریم، بنابراین در یک کلاستر SMB2_SHARE_CAP_SCALEOUT را اعلام میکنیم.
گزینه smb3 share cap:SCALE OUT میتواند برای غیرفعال کردن اعلام SMB2_SHARE_CAP_SCALEOUT استفاده شود، حتی اگر clustering برابر yes باشد.
clustering = yes smb3 share cap: SCALE OUT = no
No default
smb3 share cap:CLUSTER (S)
نکته: این گزینه فقط برای اشتراکهای دیسک اعمال میشود.
دیمن rpcd_witness تنها در صورتی فعال است که samba-dcerpcd(8) به عنوان دستیار درخواستی (on demand helper) شروع نشده باشد و فقط در یک کلاستر ctdb اجرا شده باشد.
بنابراین ما SMB2_SHARE_CAP_CLUSTER را تنها در صورتی اعلام میکنیم که clustering برابر yes و rpc start on demand helpers برابر no باشد.
گزینه smb3 share cap:SCALE OUT میتواند برای کنترل اعلام SMB2_SHARE_CAP_CLUSTER مستقل از clustering و rpc start on demand helpers استفاده شود.
Example برای غیرفعال کردن اعلام SMB2_SHARE_CAP_CLUSTER:
clustering = yes rpc start on demand helpers = no smb3 share cap: CLUSTER = no
Example برای اجبار به اعلام SMB2_SHARE_CAP_CLUSTER:
smb3 share cap: CLUSTER = yes
Example برای اجازه دادن به کلاینتهای ویندوز جهت استفاده از سرویس witness، گزینه smb3 share cap:CONTINUOUS AVAILABILITY را ببینید و با مسئولیت خود استفاده کنید (USE AT YOUR OWN RISK!):
clustering = yes rpc start on demand helpers = no # This is the default with the above: # smb3 share cap: CLUSTER = yes # # Use at you own risk! smb3 share cap: CONTINUOUS AVAILABILITY = yes
No default
smb3 share cap:ASYMMETRIC (S)
نکته: این گزینه فقط برای اشتراکهای دیسک اعمال میشود.
اشتراکها در یک کلاستر ctdb بر اساس طراحی متقارن هستند، بنابراین ما بهطور پیشفرض SMB2_SHARE_CAP_ASYMMETRIC را اعلام نمیکنیم.
گزینه smb3 share cap:ASYMMETRIC میتواند برای اجبار به اعلام SMB2_SHARE_CAP_ASYMMETRIC استفاده شود.
Example برای اجبار به اعلام SMB2_SHARE_CAP_ASYMMETRIC:
smb3 share cap: ASYMMETRIC = yes
Example برای اجازه دادن به کلاینتهای ویندوز جهت استفاده از سرویس witness، گزینه smb3 share cap:CONTINUOUS AVAILABILITY را ببینید و با مسئولیت خود استفاده کنید (USE AT YOUR OWN RISK!):
clustering = yes rpc start on demand helpers = no # This is the default with the above: # smb3 share cap: CLUSTER = yes # # Use at you own risk! smb3 share cap: CONTINUOUS AVAILABILITY = yes smb3 share cap: ASYMMETRIC = yes
No default
smb3 unix extensions (S)
Default: smb3 unix extensions = yes
smbd async dosmode (S)
Default: smbd async dosmode = no
smbd getinfo ask sharemode (S)
Default: smbd getinfo ask sharemode = yes
smbd max async dosmode (S)
Default: smbd max async dosmode = aio max threads * 2
smbd max xattr size (S)
Default: smbd max xattr size = 65536
smbd profiling share (S)
Default: smbd profiling share = no
smbd profiling level (G)
مقادیر ممکن عبارتند از off، count و on.
Default: smbd profiling level = off
Example: smbd profiling level = on
smbd search ask sharemode (S)
Default: smbd search ask sharemode = yes
smb encrypt (S)
Default: smb encrypt = default
smb passwd file (G)
یک نمونه از کاربرد آن:
smb passwd file = /etc/samba/smbpasswd
Default: smb passwd file = /var/lib/samba/private/smbpasswd
socket options (G)
هشدار
سیستمعاملهای سرور مدرن در اکثر موقعیتها برای کارایی بالای شبکه تنظیم شدهاند؛ هنگامی که socket options را تعیین میکنید، آن تنظیمات را بازنویسی مینمایید. لینوکس بهویژه دارای یک سازوکار تنظیم خودکار (auto-tuning) برای اندازهٔ بافرها است که در صورت مشخص کردن اندازهٔ بافر سوکت، غیرفعال خواهد شد. این امر میتواند بهطور بالقوه پشتهٔ TCP/IP شما را دچار اختلال جدی کند.
تنظیم صحیح گزینههای سوکت میتواند تفاوت چشمگیری در کارایی شما ایجاد کند، اما تنظیم نادرست آنها میتواند به همان میزان آن را تنزل دهد. همانند هر تنظیم سطح پایین دیگری، اگر مجبور به اعمال تغییرات هستید، تغییرات کوچک ایجاد کرده و پیش از اعمال هرگونه تغییر اساسی، تأثیر آن را آزمایش کنید.
این گزینه به شما اجازه میدهد گزینههای سوکت مورد استفاده هنگام ارتباط با کلاینت را مشخص کنید.
گزینههای سوکت، کنترلهایی بر روی لایهٔ شبکه در سیستمعامل هستند که امکان تنظیم دقیق (tune) اتصال را فراهم میکنند.
این گزینه معمولاً برای تنظیم سرور Samba جهت دستیابی به عملکرد بهینه در شبکهٔ محلی شما استفاده میشود. Samba بههیچوجه نمیتواند بداند چه پارامترهایی برای شبکهٔ شما بهینهاند، بنابراین باید خودتان آنها را آزمایش کرده و انتخاب کنید. ما اکیداً توصیه میکنیم ابتدا مستندات مربوط به سیستمعامل خود را بخوانید (شاید man setsockopt کمک کند).
ممکن است مشاهده کنید که در برخی سیستمها، هنگام وارد کردن یک گزینه Samba پیام "Unknown socket option" را نمایش میدهد. این بدان معناست که یا آن را اشتباه تایپ کردهاید یا باید یک فایل include به includes.h برای سیستمعامل خود بیفزایید. اگر مورد دوم صادق است، لطفاً وصله (patch) مربوطه را به samba-technical@lists.samba.org ارسال نمایید.
هر یک از گزینههای سوکتِ پشتیبانیشده را میتوان به هر شکلی که مایل باشید با یکدیگر ترکیب کرد، مشروط بر آنکه سیستمعامل شما اجازه دهد.
این فهرست گزینههای سوکتی است که در حال حاضر با استفاده از این گزینه قابل تنظیم هستند:
برای تعیین یک آرگومان از نحو SOME_OPTION = VALUE استفاده کنید؛ برای مثال SO_SNDBUF = 8192. توجه داشته باشید که نباید قبل یا بعد از علامت = هیچ فاصلهای قرار دهید.
اگر در یک شبکهٔ محلی هستید، یک گزینهٔ معقول میتواند به این صورت باشد:
socket options = IPTOS_LOWDELAY
اگر یک شبکهٔ محلی دارید، میتوانید این را امتحان کنید:
socket options = IPTOS_LOWDELAY TCP_NODELAY
اگر در یک شبکهٔ گسترده (WAN) قرار دارید، تنظیم IPTOS_THROUGHPUT را امتحان کنید.
توجه داشته باشید که چندین مورد از این گزینهها ممکن است باعث شوند سرور Samba شما کاملاً از کار بیفتد. از این گزینهها با احتیاط استفاده کنید!
Default: socket options = TCP_NODELAY
Example: socket options = IPTOS_LOWDELAY
spn update command (G)
Default: spn update command = /build/samba/src/samba-4.24.6/source4/scripting/bin/samba_spnupdate
Example: spn update command = /usr/local/sbin/spnupdate
spoolss: architecture (G)
Default: spoolss: architecture = Windows x64
Example: spoolss: architecture = Windows NT x86
spoolss: os_major (G)
Default: spoolss: os_major = 5
Example: spoolss: os_major = 6
spoolss: os_minor (G)
Default: spoolss: os_minor = 0
Example: spoolss: os_minor = 1
spoolss: os_build (G)
Default: spoolss: os_build = 2195
Example: spoolss: os_build = 7601
spoolss_client: os_major (G)
Default: spoolss_client: os_major = 6
spoolss_client: os_minor (G)
Default: spoolss_client: os_minor = 1
spoolss_client: os_build (G)
Default: spoolss_client: os_build = 7007
spotlight (S)
Spotlight چندین پیشنیاز دارد:
Default: spotlight = no
spotlight backend (S)
Default: spotlight backend = noindex
stat cache (G)
Default: stat cache = yes
state directory (G)
این گزینه دایرکتوری محل ذخیرهسازی فایلهای TDB حاوی دادههای مهم ماندگار را مشخص میکند.
Default: state directory = /var/lib/samba
Example: state directory = /var/run/samba/locks/state
store dos attributes (S)
Default: store dos attributes = yes
strict allocate (S)
این گزینه در واقع برای سیستمهای فایلی طراحی شده است که از تخصیص سریع تعداد زیادی بلوک پشتیبانی میکنند، مانند سیستمهای فایل مبتنی بر اکستنت (extent-based). در سیستمهای فایلی که از اکستنتها پشتیبانی نمیکنند (بهویژه ext3) این گزینه میتواند سامبا را کندتر کند. هنگامی که با فایلهای بزرگ با حجم بیش از ۱۰۰ مگابایت روی سیستمهای فایل بدون اکستنت کار میکنید، حتی ممکن است با مشکل اتمام مهلت زمانی (timeout) کلاینتها مواجه شوید.
هنگامی که یک سیستم فایل مبتنی بر اکستنت دارید، احتمالاً میتوان از اکستنتهای نانوشته (unwritten extents) استفاده کرد که به سامبا اجازه میدهد مقادیر زیادی فضا را نیز بسیار سریع تخصیص دهد و شما با مشکلات timeout ناشی از strict allocate مواجه نخواهید شد. همچنین با استفاده از strict allocate، در صورت فعال بودن سهمیهبندی (کوتا) پیامهای بسیار بهتری در مورد اتمام سهمیه (out of quota) دریافت خواهید کرد. مزیت دیگر فعالسازی این تنظیم این است که به کاهش تکهتکهشدگی فایلها (fragmentation) کمک میکند.
برای این که دیدی به دست آورید که این تنظیم در حال حاضر روی کدام سیستمهای فایل ممکن است گزینه مناسبی باشد: سیستمهای فایل XFS، ext4، btrfs، ocfs2 در لینوکس و JFS2 در AIX از اکستنتهای نانوشته پشتیبانی میکنند. در سیستمهای فایلی که از آن پشتیبانی نمیکنند، پیشتخصیص احتمالاً عملیاتی سنگین و پرهزینه است که در آن شاهد کاهش کارایی خواهید بود و در زمان ایجاد فایلهای بزرگ با خطر خطای وقفه زمانی کلاینتها روبهرو میشوید. نمونههایی از این دست عبارتند از ext3، ZFS، HFS+ و اغلب سیستمهای فایل دیگر؛ بنابراین اگر این تنظیم را روی این دسته از سیستمهای فایل فعال میکنید مراقب باشید.
Default: strict allocate = no
strict locking (S)
هنگامی که strict locking روی Auto (پیشفرض) تنظیم شده باشد، سرور بررسی قفل فایل را تنها روی فایلهای بدون oplock انجام میدهد. از آنجا که بیشتر هدایتکنندههای ویندوز بررسی قفل فایل را به صورت محلی روی فایلهای دارای oplock انجام میدهند، این گزینه مصالحهای عالی برای بهبود کارایی است.
هنگامی که strict locking غیرفعال باشد، سرور بررسی قفل فایل را تنها زمانی انجام میدهد که کلاینت صریحاً آن را درخواست کند.
کلاینتهای استاندارد همیشه در مواقع مهم بررسی قفل را درخواست میکنند. بنابراین در اکثریت قریب به اتفاق موارد، strict locking = Auto یا strict locking = no قابل قبول خواهد بود.
Default: strict locking = Auto
strict rename (S)
این پارامتر بولی به سامبا اجازه میدهد تا با رفتار ویندوز مطابقت یابد. تنظیم این گزینه روی "yes" تغییری بسیار پرهزینه است، زیرا سامبا را وادار میکند تا در هر درخواست تغییر نام دایرکتوری، کل پایگاهداده هندلهای فایل باز را پیمایش کند. در یک سیستم سامبای کلاسترشده، هزینه این کار حتی بیشتر از حالت غیرکلاستر است.
هنگامی که روی "no" تنظیم شود، smbd به جای بررسی فایلهای باز در میان تمام فرآیندهای smbd، فقط فرآیند محلی را که کلاینت به آن متصل است برای فایلهای بازِ زیر دایرکتوری در حال تغییر نام بررسی میکند.
به دلیل هزینه ناشی از جستجوی کامل پایگاهداده، مقدار پیشفرض "no" است و توصیه میشود به همان صورت رها شود مگر اینکه یک برنامه کاربردی خاص ویندوز الزام به تغییر آن داشته باشد.
اگر کلاینت افزونههای یونیکس (POSIX pathnames) را درخواست کرده باشد، در این صورت تغییر نامها همواره مجاز بوده و این پارامتر هیچ اثری ندارد.
فعال کردن smb3 directory leases بهطور ضمنی strict rename را فعال میکند.
Default: strict rename = no
strict sync (S)
در سامبا 4.7.0، مقدار پیشفرض این پارامتر از no به yes تغییر یافت تا با انتظارات کلاینتهای SMB2/3 تطابق بهتری داشته باشد و ایمنی برنامهها هنگام کار با smbd بهبود یابد.
درخواست تخلیه بافر (flush) از سوی کلاینتهای SMB2/3 به صورت ناهمگام در داخل smbd پردازش میشود، بنابراین باقی گذاشتن این پارامتر روی مقدار پیشفرض yes مانع پردازش سایر درخواستها در فرآیند smbd نمیشود.
به نظر میرسید برنامههای قدیمی ویندوز (مانند پوسته اکسپلورر ویندوز ۹۸) نوشتن محتوای بافر در سیستمعامل را با نوشتن همگام دادههای معلق بر روی ذخیرهساز پایدار دیسک اشتباه میگرفتند. تغییر این پارامتر به no بدین معناست که smbd(8) درخواست برنامههای کاربردی ویندوز برای همگامسازی دادههای نوشتهنشده بر روی دیسک را نادیده میگیرد. تنها در صورتی تغییر این مورد را مد نظر قرار دهید که smbd در حال سرویسدهی به کلاینتهای منسوخ SMB1 ویندوز قبل از ویندوز XP (ویندوز ۹۸ و قبل از آن) باشد. برای عملیات عادی نباید نیازی به تغییر این تنظیم باشد.
Default: strict sync = yes
svcctl list (G)
مدیر سیستم باید دایرکتوریای به نام svcctl در $(libdir) سامبا بسازد و پیوندهای نمادینی (symbolic links) به اسکریپتهای init در /etc/init.d/ ایجاد کند. نام پیوندها باید با نامهای مشخصشده در svcctl list مطابقت داشته باشد.
Default: svcctl list =
Example: svcctl list = cups postfix portmap httpd
sync always (S)
Default: sync always = no
sync machine password script (G)
اگر در محیطهای کلاسترشده نیاز به تولید keytabها باشد، توصیه میشود آنها را روی همه گرهها بهروزرسانی کنید. در حالت کلاسترینگ میتوانید این گزینه پیکربندی را به /usr/share/ctdb/scripts/winbind_ctdb_updatekeytab.sh تنظیم کنید. همچنین نیاز است که 46.update-keytabs.script در ctdb فعال شود؛ این اسکریپت در طول رویداد ctdb recovered فایل keytab را دوباره ایجاد میکند:
onnode all ctdb event script enable legacy 46.update-keytabs.script
Default: sync machine password script =
Example: sync machine password script = /usr/share/ctdb/scripts/winbind_ctdb_updatekeytab.sh
sync machine password to keytab (G)
wbinfo --change-secret rpcclient --machine-pass -c change_trust_pw net rpc changetrustpw net ads changetrustpw
یا از طریق بهروزرسانیهای منظمی که توسط winbindd انجام میشود (ببینید machine password timeout)
این گزینه فهرستی از رشتههای keytab را برای توصیف نحوه همگامسازی محتوای آن keytabها یا یک مقدار منفرد 'disabled' برای غیرفعال کردن همگامسازی میپذیرد. هر رشته دارای این قالب است:
absolute_path_to_keytab:spn_spec[:spn_spec]*[:sync_etypes][:sync_kvno][:netbios_aliases][:additional_dns_hostnames][:machine_password]
مقدار spn_spec میتواند چندین بار مشخص شود (با استفاده از ':' جدا میشود) و هر spn_spec میتواند دقیقاً یکی از این قالبها را داشته باشد:
account_name sync_account_name sync_upn sync_spns spn_prefixes=value1[,value2[...]] spns=value1[,value2[...]]
هر keytab شامل principalهایی بر اساس مشخصات زیر است:
account_name - COMPUTER$@REALM
sync_account_name - استفاده از مشخصه "sAMAccountName" از AD
sync_upn - استفاده از مشخصه "userPrincipalName" (در صورت وجود در AD)
sync_spns - استفاده از مشخصه "servicePrincipalName" (در صورت وجود در AD)
spn_prefixes - ایجاد این دو principal از هر پیشوند؛ به عنوان مثال:
prefix/netbios name@REALM
prefix/dns hostname@REALM
همراه با :netbios_aliases به ازای هر netbiosalias در netbios aliases
prefix/netbiosalias@REALM
prefix/netbiosalias.dnsdomain@REALM
همراه با :additional_dns_hostnames به ازای هر additionaldnshostname در additional dns hostnames
prefix/additionaldnshostname@REALM
- مورد 'host' principal باید با استفاده از مشخصکننده spn_prefixes ایجاد شود
spns - فقط principalهای تعریفشده در فهرست را ایجاد میکند
مقادیر 'account_name' و 'sync_account_name' یکسان هستند، تنها منبع آنها تفاوت دارد (secrets.tdb در مقابل AD).
گزینهها:
sync_etypes - مشخصه "msDS-SupportedEncryptionTypes" از AD خوانده شده و برای یافتن بالاترین نوع رمزگذاری مشترک بین AD و کتابخانه KRB5 استفاده میشود. sync_kvno - مشخصه "msDS-KeyVersionNumber" از AD برای تعیین KVNO استفاده میشود. اگر این گزینه وجود نداشته باشد، KVNO روی -1 تنظیم میشود. netbios_aliases - تنها برای spn_prefixes ارزیابی میشود (جزئیات بالا را ببینید). additional_dns_hostnames - تنها برای spn_prefixes ارزیابی میشود (جزئیات بالا را ببینید). machine_password - الزامی است؛ در صورت نبودن، این مدخل نادیده گرفته میشود. برای کاربرد در آینده.
Example:
"/path/to/keytab0:account_name:machine_password", "/path/to/keytab1:account_name:sync_etypes:sync_kvno:machine_password", "/path/to/keytab2:sync_spns:machine_password", "/path/to/keytab3:sync_spns:sync_kvno:machine_password", "/path/to/keytab4:spn_prefixes=imap,smtp:machine_password", "/path/to/keytab5:spn_prefixes=imap,smtp:netbios_aliases:additional_dns_hostnames:sync_kvno:machine_password", "/path/to/keytab6:spns=wurst/brot@REALM:machine_password", "/path/to/keytab7:spns=wurst/brot@REALM,wurst2/brot@REALM:sync_kvno:machine_password", "/path/to/keytab8:sync_account_name:sync_upn:sync_spns:spn_prefixes=host,cifs,http:spns=wurst/brot@REALM:sync_kvno:machine_password"
اگر sync_etypes یا sync_kvno یا sync_spns وجود داشته باشد، winbind به DC متصل میشود. برای «عضویت آفلاین در دامین» (offline domain join) ممکن است مفید باشد که از این گزینهها استفاده نشود.
اگر مقداری مشخص نشده باشد و kerberos method مقداری غیر از 'secrets only' داشته باشد، رفتار میان winbind و ابزار net متفاوت خواهد بود:
/path/to/keytab:host:account_name:sync_spns:sync_kvno:machine_password
که در آن مسیر keytab یا از کتابخانه krb5 یا از dedicated keytab file به دست میآید.
پیکربندی پیشنهادی به همراه kerberos method تنظیمشده روی مقدار پیشفرض 'secrets only' است.
در محیطهای کلاسترشده توصیه میشود sync machine password script تنظیم گردد تا گذرواژه ماشین بر روی تمامی گرهها بهروزرسانی شود.
No default
syslog (G)
این پارامتر آستانه ارسال پیامها به syslog را تعیین میکند. تنها پیامهایی با سطح اشکالزدایی کمتر از این مقدار به syslog ارسال خواهند شد. حتی اگر syslog only فعال باشد، همچنان مقداری ثبت وقایع در log.[sn]mbd انجام خواهد شد.
به جای این، باید از پارامتر logging استفاده شود. زمانی که logging تنظیم شود، پارامتر syslog را لغو میکند.
Default: syslog = 1
syslog only (G)
به جای این، باید از پارامتر logging استفاده شود. زمانی که logging تنظیم شود، پارامتر syslog only را لغو میکند.
Default: syslog only = no
template homedir (G)
Default: template homedir = /home/%D/%U
template shell (G)
Default: template shell = /bin/false
time server (G)
Default: time server = no
debug timestamp
timestamp logs (G)
Default: timestamp logs = yes
tls ca directories (G)
No default
tls cafile (G)
اگر مسیر با / آغاز نشود، این مسیر نسبت به private dir خواهد بود.
Default: tls cafile = tls/ca.pem
tls certfile (G)
اگر مسیر با / آغاز نشود، این مسیر نسبت به private dir خواهد بود.
Default: tls certfile = tls/cert.pem
tls crlfile (G)
اگر مسیر با / آغاز نشود، این مسیر نسبت به private dir خواهد بود.
Default: tls crlfile =
tls dh params file (G)
اگر مسیر با / آغاز نشود، این مسیر نسبت به private dir خواهد بود.
Default: tls dh params file =
tls enabled (G)
Default: tls enabled = yes
tls keyfile (G)
اگر مسیر با / آغاز نشود، این مسیر نسبت به private dir خواهد بود.
Default: tls keyfile = tls/key.pem
tls priority (G)
این رشته به انتهای فهرست اولویت پیشفرض GnuTLS افزوده میشود.
گزینههای معتبر در مستندات اولویتبندی رشتههای GNUTLS در نشانی http://gnutls.org/manual/html_node/Priority-Strings.html توصیف شدهاند.
پروتکل SSL3.0 غیرفعال خواهد شد.
Default: tls priority = NORMAL:-VERS-SSL3.0
tls trust system cas (G)
لطفاً با احتیاط از این گزینه استفاده کنید، زیرا این کار در واقع به معنای اعتماد به تمامی CAهای نصبشده روی سیستم است!
Default: tls trust system cas = no
tls verify peer (G)
هنگامی که روی no_check تنظیم شود، گواهی اصلاً بررسی نمیشود، که این امر امکان حملات ساده مرد میانی (man-in-the-middle) را فراهم میسازد.
هنگامی که روی ca_only تنظیم شود، بررسی میشود که گواهی توسط یک CA مشخصشده در گزینه tls ca file امضا شده باشد. به عنوان جایگزین میتوان از tls ca directories یا tls trust system cas استفاده کرد. ارائه حداقل یک گواهی معتبر CA الزامی است. طول عمر گواهی نیز بررسی میشود. اگر گزینه tls crl file پیکربندی شده باشد، گواهی در برابر CRL مربوط به CA نیز بررسی خواهد شد.
هنگامی که روی ca_and_name_if_available تنظیم شود، تمام بررسیهای ca_only انجام میشوند. علاوه بر این، در صورتی که نام میزبان طرف مقابل توسط لایه کاربرد ارائه شده باشد و به صورت رشته آدرس IP داده نشده باشد، با نام گواهی تطبیق داده میشود.
هنگامی که روی ca_and_name تنظیم شود، تمام بررسیهای ca_and_name_if_available انجام میشوند. افزون بر این، نام میزبان طرف مقابل باید ارائه شود و حتی آدرس IP نیز در برابر نام گواهی بررسی میشود.
هنگامی که روی as_strict_as_possible تنظیم شود، تمام بررسیهای ca_and_name انجام میشوند. علاوه بر این، گزینه tls crl file باید پیکربندی شده باشد. نسخههای بعدی سامبا ممکن است بررسیهای بیشتری را پیادهسازی کنند.
Default: tls verify peer = as_strict_as_possible
unicode (G)
اگر این گزینه روی false تنظیم شود، استفاده از ASCII اجباری خواهد شد.
Default: unicode = yes
unix charset (G)
این همان مجموعهنویسهای نیز هست که سامبا هنگام مشخص کردن آرگومانها برای اسکریپتهایی که فراخوانی میکند، استفاده خواهد کرد.
Default: unix charset = UTF-8
Example: unix charset = ASCII
unix password sync (G)
اگر samba به عنوان یک کنترلکننده دامنه اکتیو دایرکتوری (Active Directory Domain Controller) در حال اجرا باشد، این گزینه هیچ تأثیری نخواهد داشت؛ در آن حالت به گزینه password hash gpg key ids و دستور samba-tool user syncpasswords مراجعه کنید.
Default: unix password sync = no
use client driver (S)
عامل متمایزکننده این است که در شرایط عادی، کلاینت NT/2000 تلاش خواهد کرد چاپگر شبکه را با استفاده از MS-RPC باز کند. مشکل اینجاست که چون کلاینت چاپگر را محلی میداند، تلاش خواهد کرد فراخوانی OpenPrinterEx() را با درخواست حقوق دسترسی مرتبط با کاربر واردشده صادر کند. اگر کاربر دارای حقوق مدیر محلی (administrator) باشد اما دسترسی root روی میزبان سامبا نداشته باشد (که اغلب چنین است)، فراخوانی OpenPrinterEx() با شکست مواجه خواهد شد. در نتیجه، اکنون کلاینت پیام "Access Denied; Unable to connect" را در پنجره صف چاپگر نمایش میدهد (هرچند ممکن است کارها با موفقیت چاپ شوند).
اگر این پارامتر برای یک چاپگر فعال شود، هرگونه تلاش برای باز کردن چاپگر با حق دسترسی PRINTER_ACCESS_ADMINISTER، به جای آن به PRINTER_ACCESS_USE نگاشت میشود. در نتیجه به فراخوانی OpenPrinterEx() اجازه موفقیت میدهد. این پارامتر نباید روی یک اشتراک چاپ که درایور چاپ معتبری روی سرور سامبا برای آن نصب شده است فعال شود.
Default: use client driver = no
use mmap (G)
Default: use mmap = yes
username level (G)
اگر این پارامتر روی مقداری غیر از صفر تنظیم شود، این رفتار تغییر میکند. این پارامتر عددی است که تعداد ترکیبهای حروف بزرگ را که باید هنگام تعیین نام کاربری UNIX آزموده شوند، مشخص میکند. هر چه این عدد بزرگتر باشد، ترکیبهای بیشتری آزمایش میشوند، اما روند کشف نامهای کاربری کندتر خواهد بود. هنگامی که نامهای کاربری نامتعارفی روی ماشین UNIX خود دارید، مانند AstrangeUser ، از این پارامتر استفاده کنید.
این پارامتر تنها در سیستمهای UNIX که نامهای کاربری حساس به حروف بزرگ و کوچک دارند، مورد نیاز است.
Default: username level = 0
Example: username level = 5
username map (G)
لطفاً توجه داشته باشید که برای امنیت در سطح کاربر (user mode security)، username map پیش از اعتبارسنجی مشخصات کاربر اعمال میشود. سرورهای عضو دامنه (domain یا ads) نگاشت نام کاربری را پس از اینکه کاربر با موفقیت توسط کنترلکننده دامنه احراز هویت شد اعمال میکنند و نیازمند مدخلهای کاملاً واجد شرایط (fully qualified) در جدول نگاشت هستند (مانند biddle = DOMAIN\foo).
فایل نگاشت خط به خط پردازش میشود. هر خط باید شامل یک نام کاربری UNIX منفرد در سمت چپ، سپس یک '=' و به دنبال آن فهرستی از نامهای کاربری در سمت راست باشد. فهرست نامهای کاربری در سمت راست ممکن است شامل نامهایی به فرمت @group باشد که در این صورت با هر نام کاربری UNIX در آن گروه مطابقت خواهند داشت. نام کلاینت ویژه '*' یک نویسه عام (wildcard) است و با هر نامی مطابقت مییابد. هر خط از فایل نگاشت میتواند تا ۱۰۲۳ نویسه طول داشته باشد.
این فایل روی هر خط با گرفتن نام کاربری ارائهشده و مقایسه آن با هر نام کاربری در سمت راست نمادهای '=' پردازش میشود. اگر نام ارائهشده با هر یک از نامهای سمت راست مطابقت داشته باشد، با نام سمت چپ جایگزین میشود. سپس پردازش با خط بعدی ادامه مییابد.
اگر خطی با '#' یا ';' آغاز شود، نادیده گرفته میشود.
اگر خطی با '!' آغاز شود، در صورتی که توسط آن خط نگاشتی انجام گیرد، پردازش پس از آن خط متوقف خواهد شد. در غیر این صورت، نگاشت با پردازش تمام خطوط ادامه مییابد. استفاده از '!' بیش از همه زمانی مفید است که یک خط نگاشت عام (wildcard) در ادامه فایل داشته باشید.
به عنوان مثال، برای نگاشت نام admin یا administrator به نام یونیکسی root از این الگو استفاده خواهید کرد:
root = admin administrator
یا برای نگاشت هر کاربری در گروه یونیکسی system به نام یونیکسی sys از این الگو استفاده خواهید کرد:
sys = @system
میتوانید هر تعداد نگاشت که مایل باشید در فایل username map داشته باشید.
اگر سیستم شما از گزینه NIS NETGROUP پشتیبانی کند، پایگاه داده netgroup پیش از پایگاه داده /etc/group برای یافتن گروههای منطبق بررسی میشود.
میتوانید نامهای کاربری Windows را که در آنها فاصله (space) وجود دارد با قرار دادن علامت نقلقول دوتایی در اطراف نام، نگاشت کنید. برای مثال:
tridge = "Andrew Tridgell"
نام کاربری ویندوزی "Andrew Tridgell" را به نام کاربری یونیکسی "tridge" نگاشت میکند.
مثال زیر mary و fred را به کاربر یونیکسی sys نگاشت میکند و مابقی را به guest نگاشت خواهد داد. به استفاده از '!' برای اعلام توقف پردازش به سامبا در صورت یافتن تطابق در آن خط دقت کنید:
!sys = mary fred guest = *
توجه داشته باشید که نگاشت مجدد برای تمام رخدادهای نامهای کاربری اعمال میشود. بنابراین اگر به \\server\fred متصل شوید و fred به mary نگاشت مجدد شده باشد، در واقع شما به \\server\mary متصل میشوید و باید گذرواژهای مناسب برای mary ارائه دهید نه fred. تنها استثنا برای این مورد، نام کاربری ارسالشده به یک کنترلکننده دامنه (در صورت وجود) است. کنترلکننده دامنه هر نام کاربری که کلاینت ارائه دهد را بدون تغییر دریافت خواهد کرد.
همچنین توجه داشته باشید که هیچ نگاشت معکوسی انجام نمیشود. اثر اصلی این موضوع در بخش چاپ است. کاربرانی که نگاشت شدهاند ممکن است هنگام حذف کارهای چاپی دچار مشکل شوند زیرا PrintManager تحت WfWg تصور خواهد کرد آنها مالک کار چاپی نیستند.
نسخههای سامبا پیش از 3.0.8 فقط هنگام انجام ورود Kerberos از طرف یک کلاینت، از خواندن نام کاربری کامل (مانند: DOMAIN\user) از username map پشتیبانی میکردند. با این حال، هنگام جستجوی یک مدخل نگاشت برای کاربری که با NTLM[SSP] احراز هویت شده بود، فقط از نام ورود برای تطابق استفاده میشد. این امر منجر به رفتاری ناسازگار، حتی گاهی روی یک سرور میشد.
عملکرد زیر در نسخه 3.0.8 و بالاتر رعایت میشود:
هنگام انجام احراز هویت محلی، username map پیش از تلاش برای احراز هویت اتصال، روی نام ورود اعمال میشود.
هنگام تکیه بر یک کنترلکننده دامنه خارجی برای اعتبارسنجی درخواستهای احراز هویت، smbd تنها پس از احراز هویت موفقیتآمیز کاربر، username map را روی نام کاربری کامل (یعنی DOMAIN\user) اعمال میکند.
یک مثال از نحوه استفاده:
username map = /usr/local/samba/lib/users.map
Default: username map = # no username map
username map cache time (G)
پارامتر username map cache time حافظه موقت (کَش) نگاشت را کنترل میکند. این پارامتر تعداد ثانیههایی را مشخص میکند که طی آن نگاشت حاصل از فایل username map یا اسکریپت بهصورت کارآمد ذخیره موقت میشود. مقدار پیشفرض 0 به این معنی است که هیچ کش کردنی انجام نمیشود.
Default: username map cache time = 0
Example: username map cache time = 60
username map script (G)
Default: username map script =
Example: username map script = /etc/samba/scripts/mapusers.sh
usershare allow guests (G)
Default: usershare allow guests = no
usershare max shares (G)
Default: usershare max shares = 0
usershare owner only (G)
Default: usershare owner only = yes
usershare path (G)
برای مثال، یک دایرکتوری معتبر usershare میتواند /usr/local/samba/lib/usershares باشد که به صورت زیر برپا شده است.
ls -ld /usr/local/samba/lib/usershares/ drwxrwx--T 2 root power_users 4096 2006-05-05 12:27 /usr/local/samba/lib/usershares/
در این حالت، فقط اعضای گروه «power_users» میتوانند اشتراکهای تعریفشده توسط کاربر را ایجاد کنند.
Default: usershare path = /var/lib/samba/usershares
usershare prefix allow list (G)
اگر هم «usershare prefix deny list» و هم «usershare prefix allow list» وجود داشته باشد، ابتدا فهرست deny و سپس فهرست allow پردازش میشود که منجر به سختگیرانهترین حالت تفسیر میگردد.
Default: usershare prefix allow list =
Example: usershare prefix allow list = /home /data /space
usershare prefix deny list (G)
اگر هم «usershare prefix deny list» و هم «usershare prefix allow list» وجود داشته باشد، ابتدا فهرست deny و سپس فهرست allow پردازش میشود که منجر به سختگیرانهترین حالت تفسیر میگردد.
Default: usershare prefix deny list =
Example: usershare prefix deny list = /etc /dev /private
usershare template share (G)
اشتراک هدف میتواند با تنظیم پارامتر «-valid = False» در تعریف اشتراک الگو، برای اشتراکگذاری واقعی فایل نامعتبر اعلام شود. این کار باعث میشود به عنوان یک اشتراک صادرشده واقعی دیده نشود، اما همچنان بتواند به عنوان یک الگو برای usershareها مورد استفاده قرار گیرد.
Default: usershare template share =
Example: usershare template share = template_share
use sendfile (S)
Default: use sendfile = no
utmp (G)
به دلیل الزامات رکورد utmp، ما ملزم به ایجاد یک شناسه منحصربهفرد برای کاربر ورودی هستیم. فعال کردن این گزینه یک الگوریتم با پیچیدگی n^2 برای یافتن این شماره ایجاد میکند. این موضوع ممکن است کارایی را در سامانههای بزرگ کاهش دهد.
Default: utmp = no
utmp directory (G)
Default: utmp directory = # Determined automatically
Example: utmp directory = /var/run/utmp
-valid (S)
این گزینه نباید توسط کاربران عادی استفاده شود، اما ممکن است برای توسعهدهندگان مفید باشد. سامبا از این گزینه به صورت داخلی برای علامتگذاری اشتراکها به عنوان حذفشده استفاده میکند.
Default: -valid = yes
valid users (S)
اگر خالی باشد (پیشفرض)، هر کاربری میتواند وارد شود. اگر یک نام کاربری هم در این فهرست و هم در فهرست invalid users باشد، دسترسی برای آن کاربر رد میشود.
نام سرویس فعلی به جای %S جایگزین میشود. این ویژگی در بخش [homes] کاربرد دارد.
نکته: در صورت استفاده در بخش [global]، این پارامتر ممکن است عوارض جانبی ناخواستهای داشته باشد. برای مثال: اگر سامبا به عنوان یک MASTER BROWSER پیکربندی شده باشد (ببینید: local master، os level، domain master، preferred master)، این گزینه مانع از امکان مرور شبکه توسط ایستگاههای کاری (workstations) خواهد شد.
Default: valid users = # No valid users list (anyone can login)
Example: valid users = greg, @pcusers
veto files (S)
veto files همچنین میتواند به عنوان یک گزینه پارامتری استفاده شود که در آن NAME در
veto files : NAME =
یک نام کاربری یا گروهی را با همان ساختار نحوی valid users مشخص میکند. این شکل پارامتری میتواند چندین بار برای کاربران یا گروههای مختلف مشخص شود. این بدان معناست که «veto files : NAME» تنظیمشده در هر دو بخش [global] و بخش اشتراک با هم جمع میشوند، در حالی که معمولاً گزینههای تنظیمشده در یک بخش اشتراک، مقدار پیشفرض را در بخش [global] بازنویسی میکنند.
هر نام فایل باید یک مسیر یونیکس باشد، نه مسیر داس، و نباید شامل جداکننده دایرکتوری یونیکس '/' باشد.
توجه داشته باشید که گزینه case sensitive در وتو کردن فایلها اعمال میشود.
یکی از ویژگیهای پارامتر veto files که آگاهی از آن اهمیت دارد، رفتار سامبا هنگام تلاش برای حذف یک دایرکتوری است. اگر دایرکتوری که قرار است حذف شود چیزی به جز فایلهای وتوشده نداشته باشد، این حذف شکست خواهد خورد مگر اینکه پارامتر delete veto files را نیز روی yes تنظیم کرده باشید.
تنظیم این پارامتر بر کارایی سامبا تأثیر خواهد گذاشت، زیرا هنگام پیمایش همه فایلها و دایرکتوریها مجبور به بررسی تطابق آنها خواهد بود.
مثالهای استفاده عبارتند از:
; وتو کردن هر فایلی که شامل کلمه Security است، ; هر فایلی که به .tmp ختم میشود، و هر دایرکتوری شامل ; کلمه root. veto files = /*Security*/*.tmp/*root*/ ; وتو کردن برخی فایلها برای همه و برخی برای کاربران و گروههای خاص veto files = /vetoforall1/ veto files : USER = /vetotoforuser/ veto files : GROUP = /vetoforgroup/ veto files : UNIVERSITY\Alumnis = /somefile.txt/ veto files : john@university.org = /anotherfile.txt/ veto files : S-1-5-21-123-456-789-1000 = /secretfile.txt/ ; وتو کردن فایلهای خاص Apple که توسط یک سرور ; NetAtalk ایجاد میشود. veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
Default: veto files = # No files or directories are vetoed
veto oplock files (S)
ممکن است بخواهید این کار را برای فایلهایی انجام دهید که میدانید کلاینتها تقاضا و رقابت بالایی برای آنها خواهند داشت. یک نمونه خوب از این مورد در برنامه محک SMB با نام NetBench است که باعث رقابت شدید کلاینتها برای فایلهای با پسوند .SEM میشود. برای اینکه سامبا روی این فایلها oplock اعطا نکند، میتوانید از این خط (چه در بخش [global] و چه در بخش مربوط به آن اشتراک خاص NetBench) استفاده کنید.
نمونهای از کاربرد:
veto oplock files = /.*SEM/
Default: veto oplock files = # No files are vetoed for oplock grants
vfs mkdir use tmp name (S)
سایر کلاینتها نباید وجود دایرکتوریای را که در حال ایجاد شدن است مشاهده کنند!
این گزینه یک نوع شمارشی (enumerated) است که استفاده از یک نام دایرکتوری موقت را کنترل میکند. هنگامی که این گزینه روی yes تنظیم شود، پیشوند '.::TMPNAME:D:$SERVERID:' به ابتدای نام دایرکتوری افزوده میشود (که در آن $SERVERID یک شناسه یکتا برای فرایند جاری است).
هنگامی که این گزینه روی Auto (پیشفرض) تنظیم شده باشد، در صورتی که حداقل یکی از گزینههای زیر در عمل روی no تنظیم نشده باشد، سرور از یک نام دایرکتوری موقت استفاده میکند: inherit acls، inherit owner، inherit permissions، nt acl support یا store dos attributes. توجه داشته باشید که در OpenBSD مقدار Auto (پیشفرض) به no نگاشت میشود، ببینید: https://bugzilla.samba.org/show_bug.cgi?id=15801.
اشتراکگذاری مجدد (re-export) یک نقطه اتصال SMB/CIFS ممکن است یکی از موارد نادری باشد که در آن vfs mkdir use tmp name = no میتواند مفید واقع شود.
در بیشتر موارد باید مقدار vfs mkdir use tmp name = Auto حفظ شود.
Default: vfs mkdir use tmp name = Auto
vfs object
vfs objects (S)
Default: vfs objects =
Example: vfs objects = extd_audit recycle
volume (S)
Default: volume = # the name of the share
volume serial number (S)
مقدار ویژه -1 (پیشفرض) نشاندهنده یک شماره یکتا است که برای هر اشتراک محاسبه میشود.
Default: volume serial number = -1
Example: volume serial number = 0xabcdefgh
wide links (S)
نکته: فعال کردن این پارامتر در زمانی که افزونههای یونیکس (UNIX extensions) فعال هستند، به کلاینتهای UNIX امکان میدهد پیوندهای نمادین (symbolic links) روی اشتراک ایجاد کنند که میتوانند به فایلها یا دایرکتوریهای خارج از مسیر محدود صادرشده توسط تعریف اشتراک اشاره کنند. این امر میتواند موجب دسترسی به نواحی خارج از اشتراک شود. به دلیل این مشکل، در صورتی که گزینه unix extensions روشن باشد، این پارامتر بهطور خودکار (همراه با پیامی در فایل لاگ) غیرفعال خواهد شد.
اگر مایلید این وابستگی میان دو پارامتر را تغییر دهید، پارامتر allow insecure wide links را ببینید.
Default: wide links = no
winbind cache time (G)
این موضوع برای درخواستهای احراز هویت اعمال نمیشود؛ این درخواستها همیشه بهصورت بلادرنگ (real time) ارزیابی میشوند مگر اینکه گزینه winbind offline logon فعال شده باشد.
Default: winbind cache time = 300
winbindd socket directory (G)
به جز در اسکریپتهای آزمون خودکار، این مقدار نباید تغییر یابد، زیرا ابزارهای کلاینت (مانند nss_winbind و غیره) این پارامتر را رعایت نمیکنند. در صورت تغییر، ابزارهای کلاینت باید با استفاده از متغیر محیطی WINBINDD_SOCKET_DIR از مسیر تغییریافته مطلع شوند.
Default: winbindd socket directory = /run/samba/winbindd
winbind enum groups (G)
هشدار (Warning)
غیرفعال کردن شمارش گروهها ممکن است باعث شود برخی برنامهها رفتاری غیرعادی نشان دهند.
winbind enum users (G)
هشدار (Warning)
غیرفعال کردن شمارش کاربران ممکن است باعث شود برخی برنامهها رفتاری غیرعادی نشان دهند. به عنوان مثال، برنامه finger هنگام جستجوی نامهای کاربری منطبق، به داشتن دسترسی به کل فهرست کاربران متکی است.
winbind expand groups (G)
این گزینه همچنین بر بازگرداندن عضویت در گروههای غیر تو در توی کاربران دامنه ویندوز تأثیر میگذارد. با مقدار پیشفرض جدید «winbind expand groups = 0»، دیمن winbind عضویت در گروهها را اصلاً پرسوجو نمیکند.
توجه داشته باشید که یک مقدار بالا برای این پارامتر میتواند منجر به کُند شدن سیستم شود، زیرا دیمن والد اصلی winbindd باید عملیات باز کردن گروه (group unrolling) را انجام دهد و در طول این مدت قادر به پاسخگویی به درخواستهای ورودی NSS یا احراز هویت نخواهد بود.
مقدار پیشفرض در Samba 4.2 از ۱ به ۰ تغییر یافت. برخی از برنامههای معیوب (شامل برخی پیادهسازیهای newgrp و sg) عضویت کاربران در گروهها را با پیمایش گروهها محاسبه میکنند؛ چنین برنامههایی به «winbind expand groups = 1» نیاز خواهند داشت. اما مقدار پیشفرض جدید باعث پایداری و قابلیت اطمینان بیشتر winbindd میشود، زیرا نیازی به دسترسی SAMR به کنترلکنندههای دامنه (Domain Controllers) در دامنههای مورد اعتماد ندارد.
Default: winbind expand groups = 0
winbind:ignore domains (G)
Default: winbind:ignore domains =
Example: winbind:ignore domains = DOMAIN1, DOMAIN2
winbind max clients (G)
Default: winbind max clients = 200
winbind max domain connections (G)
توجه داشته باشید که اگر winbind offline logon روی Yes تنظیم شده باشد، صرفنظر از این تنظیم تنها یک اتصال DC به ازای هر دامنه مجاز خواهد بود.
Default: winbind max domain connections = 1
Example: winbind max domain connections = 10
winbind nested groups (G)
Default: winbind nested groups = yes
winbind normalize names (G)
این ویژگی همچنین API نام مستعار را فعال میکند که میتواند برای تبدیل نامهای کاربر و گروه دامنه به یک نسخه غیرصلاحیتدار (non-qualified) استفاده شود. لطفاً برای جزئیات نحوه پیکربندی نام مستعار برای یک پیکربندی خاص، به صفحه راهنمای افزونههای idmap و nss_info پیکربندیشده مراجعه کنید. نام مستعار بر مکانیزم جایگزینی فاصله که پیشتر شرح داده شد تقدم دارد (و با آن مانعةالجمع است).
Default: winbind normalize names = no
Example: winbind normalize names = yes
winbind nss info (G)
توجه داشته باشید که برای بکاند idmap از نوع idmap_ad لازم است این تنظیمات را در بخش پیکربندی idmap مشخص کنید. حتماً به مستندات بکاند idmap مورد استفاده خود مراجعه فرمایید.
Default: winbind nss info = template
Example: winbind nss info = sfu
winbind offline logon (G)
Default: winbind offline logon = no
Example: winbind offline logon = yes
winbind reconnect delay (G)
Default: winbind reconnect delay = 30
winbind refresh tickets (G)
Default: winbind refresh tickets = no
Example: winbind refresh tickets = yes
winbind request timeout (G)
Default: winbind request timeout = 60
winbind rpc only (G)
Default: winbind rpc only = no
winbind scan trusted domains (G)
ساخت آن فهرست سراسری قابل اعتماد نبوده و اغلب در پیکربندیهای اعتمادسازی پیچیده ناقص است. در بیشتر شرایط، این فهرست دیگر برای عملکرد صحیح winbindd مورد نیاز نیست؛ برای نمونه برای سرویسدهی ساده فایل از طریق SMB با استفاده از یک پیکربندی ساده idmap با autorid، tdb یا ad. با این حال برخی از پیکربندیهای پیچیدهتر به این فهرست نیاز دارند، مثلاً اگر بکاندهای idmap را برای دامنههای خاصی مشخص کنید. برخی پیکربندیهای pam_winbind نیز ممکن است به فهرست سراسری نیاز داشته باشند.
اگر پیکربندیای دارید که نیازی به فهرست سراسری ندارد، باید winbind scan trusted domains = no را تنظیم کنید.
Default: winbind scan trusted domains = no
winbind sealed pipes (G)
این رفتار میتواند بهازای هر دامنه NetBIOS با استفاده از گزینه 'winbind sealed pipes:NETBIOSDOMAIN = no' کنترل شود.
Default: winbind sealed pipes = yes
winbind separator (G)
لطفاً توجه داشته باشید که تنظیم این پارامتر روی + حداقل در سیستمهای مبتنی بر glibc باعث بروز مشکلاتی در عضویت گروه میشود، زیرا نویسه + به عنوان یک نویسه ویژه برای NIS در /etc/group استفاده میشود.
Default: winbind separator = \
Example: winbind separator = +
winbind use default domain (G)
در صورت امکان باید از این گزینه اجتناب شود. این گزینه میتواند باعث سردرگمی در مورد مسئولیتها برای یک کاربر یا گروه شود. در بسیاری از وضعیتها مشخص نیست که آیا winbind یا /etc/passwd باید به عنوان مرجع معتبر برای یک کاربر در نظر گرفته شود؛ وضعیت برای گروهها نیز به همین صورت است.
Default: winbind use default domain = no
Example: winbind use default domain = yes
winbind use krb5 enterprise principals (G)
دیمن winbindd (حداقل در یک عضو دامنه یا domain member) هرگز قادر نیست تصویر کاملی از توپولوژی اعتماد (trust topology، که توسط DCها مدیریت میشود) داشته باشد. ممکن است مقادیر uPNSuffixes و msDS-SPNSuffixes وجود داشته باشند که اصلاً به هیچ دامنه AD تعلق ندارند.
با winbind scan trusted domains = no دیمن winbindd حتی تصویر کاملی از توپولوژی دریافت نمیکند.
واقعاً نیازی به دانستن درباره توپولوژی اعتماد نیست. ما میتوانیم فقط به [K]DCهای دامنه اصلی خود (مثلاً PRIMARY.A.EXAMPLE.COM) اتکا کرده و از enterprise principalها مانند upnfromB@B.EXAMPLE.COM@PRIMARY.A.EXAMPLE.COM استفاده کنیم و ارجاعات WRONG_REALM را برای یافتن DC مناسب دنبال نماییم. پرینسیپال نهایی ممکن است userfromB@INTERNALB.EXAMPLE.PRIVATE باشد.
با winbind use krb5 enterprise principals = yes پرینسیپالهای سازمانی (enterprise principals) winbindd استفاده خواهند شد.
Default: winbind use krb5 enterprise principals = yes
Example: winbind use krb5 enterprise principals = no
winbind varlink service (G)
برای اطلاعات بیشتر پیرامون جستجوی رکورد کاربر/گروه از طریق Varlink به https://systemd.io/USER_GROUP_API و صفحه راهنمای nss-systemd (8) مراجعه کنید.
هشدار (Warning)
نسخههای Systemd(1) پیش از ۲۵۳، مقدار پیشفرض winbind separator یعنی '\' را در پاسخ GetMemberhips یک نویسه ناامن در نظر میگیرند. برای دور زدن این مشکل توصیه میشود که برای نمونه آن را روی '+' تنظیم کنید.
Default: winbind varlink service = no
winsdb:local_owner (G)
بدون پیشفرض
winsdb:dbnosync (G)
Default: winsdb:dbnosync = no
wins hook (G)
پارامتر wins hook نام یک اسکریپت یا فایل اجرایی را مشخص میکند که به شیوهٔ زیر فراخوانی خواهد شد:
wins_hook operation name nametype ttl IP_list
بدون پیشفرض
wins proxy (G)
Default: wins proxy = no
wins server (G)
اگر شبکهای با چند زیرشبکه (multi-subnet) دارید، باید این پارامتر را به سرور WINS خود ارجاع دهید.
اگر میخواهید در چندین فضای نام کار کنید، میتوانید به هر سرور wins یک برچسب («tag») اختصاص دهید. برای هر برچسب، تنها از یک سرور (فعال) برای یک نام پرسوجو خواهد شد. برچسب باید با دونقطه از نشانی ip جدا شود.
نکته
اگر چندین زیرشبکه دارید و مایلید مرور بینزیرشبکهای (cross-subnet browsing) بهدرستی کار کند، باید سامبا را به گونهای تنظیم کنید که به یک سرور WINS اشاره کند.
Default: wins server =
Example: wins server = mary:192.9.200.1 fred:192.168.3.199 mary:192.168.2.61 # در این مثال هنگام پرسوجو برای یک نام معین، ابتدا 192.19.200.1 پرسیده میشود و اگر پاسخ نداد 192.168.2.61. اگر هیچکدام نام را ندانند، از 192.168.3.199 پرسوجو خواهد شد.
Example: wins server = 192.9.200.1 192.168.2.61
wins support (G)
Default: wins support = no
workgroup (G)
Default: workgroup = WORKGROUP
Example: workgroup = MYGROUP
wreplsrv:periodic_interval (G)
Default: wreplsrv:periodic_interval = 15
wreplsrv:propagate name releases (G)
Default: wreplsrv:propagate name releases = no
wreplsrv:scavenging_interval (G)
بدون پیشفرض
wreplsrv:tombstone_extra_timeout (G)
Default: wreplsrv:tombstone_extra_timeout = 259200
wreplsrv:tombstone_interval (G)
Default: wreplsrv:tombstone_interval = 518400
wreplsrv:tombstone_timeout (G)
Default: wreplsrv:tombstone_timeout = 86400
wreplsrv:verify_interval (G)
Default: wreplsrv:verify_interval = 2073600
writable
write ok
writeable (S)
Default: writeable = no
write list (S)
توجه داشته باشید که اگر کاربری هم در فهرست خواندن و هم در فهرست نوشتن باشد، دسترسی نوشتن به او داده خواهد شد.
Default: write list =
Example: write list = admin, root, @staff
write raw (G)
در صورت فعال بودن، نوشتنهای خام اجازهٔ نوشتن ۶۵۵۳۵ بایت را در یک بسته میدهند. این قابلیت معمولاً برای برخی از کلاینتهای بسیار بسیار قدیمی بهبود کارایی چشمگیری به همراه دارد.
با این حال، برخی کلاینتها یا اندازهٔ مجاز بلوک را به اشتباه مذاکره میکنند یا توانایی پشتیبانی از اندازههای بلوک بزرگتر را ندارند، و برای این کلاینتها ممکن است لازم باشد نوشتنهای خام را غیرفعال کنید.
به طور کلی این پارامتر باید به عنوان یک ابزار تنظیم دقیق سیستم در نظر گرفته شود و به هیچ وجه دستکاری نشود (به حال خود رها شود).
Default: write raw = yes
wsp property file (G)
Property Name
GUID
prop ID
inInverted Index
isColumn
type
MaxSize
Vector Property
Description
Default: wsp property file =
wtmp directory (G)
به طور پیشفرض این مقدار تنظیم نشده است، به این معنی که سیستم از همان فایل utmpای استفاده خواهد کرد که سیستم بومی برای استفاده تنظیم شده است (معمولاً /var/run/wtmp در لینوکس).
Default: wtmp directory =
Example: wtmp directory = /var/log/wtmp
هشدارها (WARNINGS)
اگرچه فایل پیکربندی اجازه میدهد نامهای سرویس حاوی فاصله باشند، اما نرمافزار کلاینت شما ممکن است این اجازه را ندهد. فاصلهها در هر صورت در مقایسهها نادیده گرفته میشوند، بنابراین نباید مشکلی ایجاد کند - اما از این احتمال آگاه باشید.
به همین ترتیب، بسیاری از کلاینتها - بهویژه کلاینتهای DOS - نامهای سرویس را به هشت نویسه محدود میکنند. smbd(8) چنین محدودیتی ندارد، اما در صورتی که این کلاینتها نام سرویس را کوتاه کنند، تلاش برای اتصال از سوی آنها با شکست مواجه خواهد شد. به همین دلیل احتمالاً بهتر است طول نامهای سرویس خود را حداکثر تا هشت نویسه نگه دارید.
استفاده از بخشهای ویژه [homes] و [printers] کار را برای مدیر سیستم آسان میکند، اما ترکیبهای گوناگونِ ویژگیهای پیشفرض میتواند پیچیده و گمراهکننده باشد. هنگام طراحی این بخشها نهایت دقت را به خرج دهید. بهویژه، اطمینان حاصل کنید که مجوزهای دسترسی روی دایرکتوریهای spool صحیح باشند.
نسخه (VERSION)
این صفحه راهنما بخشی از نسخه 4.24.6 از مجموعه نرمافزاری Samba است.
همچنین ببینید (SEE ALSO)
samba(7), smbpasswd(8), smbd(8), nmbd(8), winbindd(8), samba(8), samba-tool(8), smbclient(1), nmblookup(1), testparm(1).
نویسنده (AUTHOR)
نرمافزار اصلی Samba و ابزارهای مرتبط با آن توسط Andrew Tridgell ایجاد شدند. Samba اکنون توسط تیم سامبا (Samba Team) بهصورت یک پروژه متنباز (Open Source)، به شیوهای مشابه توسعه هسته لینوکس، توسعه داده میشود.
| 08/16/2026 | Samba 4.24.6 |