SMBD(8) ابزارهای مدیریت سیستم SMBD(8)

smbd - کارساز ارائه خدمات SMB/CIFS به کلاینت‌ها

smbd [-D|--daemon] [-i|--interactive] [-F|--foreground] [--no-process-group] [-b|--build-options] [-p <port number(s)>] [-P <profiling level>] [-d <debug level>] [--debug-stdout] [--configfile=<configuration file>] [--option=<name>=<value>] [-l|--log-basename <log directory>] [--leak-report] [--leak-report-full] [-V|--version]

این برنامه بخشی از مجموعه samba(7) است.

دستور smbd دیمن کارسازی است که خدمات اشتراک فایل و چاپ را به کلاینت‌های Windows ارائه می‌دهد. این کارساز فضا برای فایل‌ها و خدمات چاپگر را با استفاده از پروتکل SMB (یا CIFS) در اختیار کلاینت‌ها می‌گذارد. این سازگار با پروتکل LanManager است و می‌تواند به کلاینت‌های LanManager خدمات دهد. این موارد شامل MSCLIENT 3.0 برای DOS، Windows for Workgroups، Windows 95/98/ME، Windows NT، Windows 2000، OS/2، DAVE برای Macintosh و smbfs برای Linux هستند.

توضیحات گسترده درباره خدماتی که کارساز می‌تواند ارائه دهد در صفحه راهنمای فایل پیکربندی کنترل‌کننده ویژگی‌های آن خدمات آمده است (ببینید smb.conf(5)). این صفحه راهنما به توصیف خدمات نمی‌پردازد، بلکه بر جنبه‌های مدیریتی اجرای کارساز تمرکز دارد.

لطفاً توجه داشته باشید اجرای این کارساز پیامدهای امنیتی مهمی دارد و خواندن صفحه راهنمای smb.conf(5) پیش از اقدام به نصب الزامی است.

هر زمان کلاینتی درخواست کند، یک نشست ایجاد می‌شود. هر کلاینت برای هر نشست یک رونوشت از کارساز دریافت می‌کند. این رونوشت سپس به تمام اتصالات برقرارشده توسط کلاینت در طول آن نشست خدمات‌رسانی می‌کند. هنگامی که تمام اتصالات کلاینت بسته شوند، رونوشت کارساز مربوط به آن کلاینت خاتمه می‌یابد.

فایل پیکربندی و تمام فایل‌های ضمیمه‌شده توسط آن، در صورت تغییر، هر سه دقیقه یک‌بار به‌طور خودکار بازخوانی می‌شوند. می‌توان با ارسال سیگنال SIGHUP به کارساز، بازخوانی اجباری انجام داد. بازخوانی فایل پیکربندی بر اتصالاتی که از قبل برقرار شده‌اند تاثیری نخواهد گذاشت. کاربر یا باید اتصال خود را از سرویس قطع کند، یا باید smbd کشته و مجدداً راه‌اندازی شود.

به‌جای ارسال سیگنال SIGHUP، درخواست بازخوانی فایل پیکربندی را می‌توان با استفاده از برنامه smbcontrol(1) ارسال کرد.

-D|--daemon

در صورت تعیین، این پارامتر سبب می‌شود کارساز به‌صورت یک دیمن عمل کند. یعنی از ترمینال جدا شده و در پس‌زمینه اجرا می‌شود و درخواست‌ها را روی پورت مناسب دریافت می‌کند. اجرای کارساز به‌صورت دیمن، روش توصیه‌شده برای اجرای smbd در کارسازهایی است که خدماتی بیش از کاربرد تفننی فایل و چاپ ارائه می‌دهند. اگر smbd از خط فرمان شل اجرا شود، این سوییچ پیش‌فرض فرض می‌شود.

-i|--interactive

اگر این پارامتر مشخص شود، کارساز به‌صورت «تعاملی» اجرا می‌شود و نه به‌صورت دیمن، حتی اگر در خط فرمان شل اجرا شده باشد. تنظیم این پارامتر حالت ضمنی دیمن هنگام اجرا از خط فرمان را لغو می‌کند. smbd تنها یک اتصال را می‌پذیرد و سپس خاتمه می‌یابد. همچنین پیام‌ها را در خروجی استاندارد ثبت می‌کند، مشابه حالتی که پارامتر -S داده شده باشد.

-F|--foreground

در صورت تعیین، این پارامتر موجب می‌شود فرایند اصلی smbd دیمن نشود؛ یعنی double-fork انجام نداده و از ترمینال جدا نشود. فرایندهای فرزند همچنان طبق معمول برای پاسخ به هر درخواست اتصال ایجاد می‌شوند، اما فرایند اصلی خارج نمی‌شود. این حالت عملیاتی برای اجرای smbd تحت ناظران فرایند مانند supervise و svscan از بسته daemontools متعلق به Daniel J. Bernstein، یا ناظر فرایند AIX مناسب است.

--no-process-group

گروه فرایند جدیدی برای smbd ایجاد نمی‌کند.

-b|--build-options

اطلاعات مربوط به نحوه کامپایل Samba را چاپ می‌کند.

-p|--port<port number(s)>

port number(s) فهرستی جداشده با فاصله یا کاما از پورت‌های TCP است که smbd باید روی آن‌ها گوش فرا دهد. مقدار پیش‌فرض از پارامتر ports در /etc/samba/smb.conf گرفته می‌شود.

پورت‌های پیش‌فرض پورت 139 (مورد استفاده برای SMB روی NetBIOS روی TCP) و پورت 445 (مورد استفاده برای SMB مستقیم روی TCP) هستند.

-P|--profiling-level<profiling level>

profiling level عددی است که سطح داده‌های پروفایلینگ جمع‌آوری‌شده را مشخص می‌کند. مقدار 0 پروفایلینگ را غیرفعال می‌کند، مقدار 1 تنها پروفایلینگ شمارنده را فعال می‌سازد، مقدار 2 پروفایلینگ کامل را فعال می‌کند و مقدار 3 تمام داده‌های پروفایلینگ را بازنشانی می‌کند.

-d|--debuglevel=level

level یک عدد صحیح بین 0 تا 10 است. مقدار پیش‌فرض در صورت مشخص نشدن این پارامتر 0 است.

هرچه این مقدار بالاتر باشد، جزئیات بیشتری درباره فعالیت‌های کارساز در فایل‌های لاگ ثبت خواهد شد. در سطح 0، تنها خطاهای بحرانی و هشدارهای جدی لاگ می‌شوند. سطح 1 سطحی معقول برای استفاده روزمره است؛ مقدار کمی اطلاعات درباره عملیات انجام‌شده تولید می‌کند.

سطوح بالاتر از 1 مقادیر قابل‌توجهی داده لاگ تولید می‌کنند و فقط باید هنگام بررسی مشکلات استفاده شوند. سطوح بالاتر از 3 فقط برای استفاده توسعه‌دهندگان طراحی شده‌اند و حجم عظیمی از داده لاگ تولید می‌کنند که اکثر آن‌ها بسیار مبهم هستند.

توجه داشته باشید که تعیین این پارامتر در اینجا، پارامتر log level را در فایل /etc/samba/smb.conf بازنویسی (override) می‌کند.

--debug-stdout

این گزینه خروجی اشکال‌زدایی را به STDOUT هدایت می‌کند. به‌طور پیش‌فرض دیمن‌های کارساز در فایل لاگ می‌نویسند.

--configfile=CONFIGFILE

فایل مشخص‌شده شامل جزئیات پیکربندی مورد نیاز کارساز است. اطلاعات موجود در این فایل شامل اطلاعات ویژه کارساز مانند فایل printcap مورد استفاده و همچنین شرح تمام خدماتی است که کارساز باید ارائه دهد. برای اطلاعات بیشتر ببینید /etc/samba/smb.conf. نام پیش‌فرض فایل پیکربندی هنگام کامپایل تعیین می‌شود.

--option=<name>=<value>

گزینه smb.conf(5) با نام «<name>» را از خط فرمان به مقدار «<value>» تنظیم می‌کند. این سوییچ پیش‌فرض‌های زمان کامپایل و گزینه‌های خوانده‌شده از فایل پیکربندی را بازنویسی می‌کند. اگر یک نام یا مقدار حاوی فاصله است، تمام عبارت --option=name=value را داخل گیومه قرار دهید.

-l|--log-basename=logdirectory

نام دایرکتوری پایه برای فایل‌های لاگ و اشکال‌زدایی. پسوند ".progname" اضافه خواهد شد (مانند log.smbclient، log.smbd و غیره). فایل لاگ هرگز توسط کلاینت حذف نمی‌شود.

--leak-report

فعال‌سازی گزارش نشت حافظه talloc هنگام خروج.

--leak-report-full

فعال‌سازی گزارش کامل نشت حافظه talloc هنگام خروج.

-V|--version

شماره نسخه برنامه را چاپ می‌کند.

-?|--help

خلاصه‌ای از گزینه‌های خط فرمان را چاپ می‌کند.

--usage

پیام کوتاهی درباره نحوه استفاده نمایش می‌دهد.

/etc/inetd.conf

اگر کارساز قرار است توسط متا-دیمن inetd اجرا شود، این فایل باید شامل اطلاعات راه‌اندازی مناسب برای آن متا-دیمن باشد.

/etc/rc

(یا هر اسکریپت مقداردهی اولیه‌ای که سیستم شما استفاده می‌کند).

اگر کارساز به‌صورت دیمن هنگام راه‌اندازی سیستم اجرا می‌شود، این فایل باید شامل توالی راه‌اندازی مناسب برای کارساز باشد.

/etc/services

اگر کارساز از طریق متا-دیمن inetd اجرا می‌شود، این فایل باید شامل نگاشتی از نام سرویس (مانند netbios-ssn) به پورت سرویس (مانند 139) و نوع پروتکل (مانند tcp) باشد.

/usr/local/samba/lib/smb.conf

این مکان پیش‌فرض فایل پیکربندی کارساز smb.conf(5) است. مکان‌های رایج دیگری که سیستم‌ها این فایل را در آن نصب می‌کنند شامل /usr/samba/lib/smb.conf و /etc/samba/smb.conf هستند.

این فایل تمام خدماتی را که کارساز باید برای کلاینت‌ها فراهم کند تشریح می‌نماید. برای اطلاعات بیشتر ببینید smb.conf(5).

در برخی سیستم‌ها smbd پس از فراخوانی setuid() نمی‌تواند uid را دوباره به root تغییر دهد. چنین سیستم‌هایی trapdoor uid نامیده می‌شوند. اگر چنین سیستمی دارید، نمی‌توانید از یک کلاینت (مانند یک رایانه) هم‌زمان به‌عنوان دو کاربر مختلف متصل شوید. تلاش برای اتصال کاربر دوم به خطای access denied یا مشابه آن منجر می‌شود.

PRINTER

اگر نام چاپگری برای خدمات قابل‌چاپ تعیین نشده باشد، بیشتر سیستم‌ها مقدار این متغیر (یا lp در صورت تعریف نشدن این متغیر) را به‌عنوان نام چاپگر مورد استفاده به کار می‌برند. البته این مورد مختص این کارساز نیست.

مجموعه Samba از PAM برای احراز هویت (هنگام دریافت رمز عبور متن‌ساده)، برای بررسی حساب کاربری (آیا این حساب غیرفعال است؟) و برای مدیریت نشست استفاده می‌کند. میزان پشتیبانی samba از PAM با محدودیت‌های پروتکل SMB و پارامتر obey pam restrictions در smb.conf(5) محدود می‌شود. هنگامی که این پارامتر تنظیم شده باشد، محدودیت‌های زیر اعمال می‌شوند:

•اعتبارسنجی حساب (Account Validation): تمام دسترسی‌ها به کارساز samba از طریق PAM بررسی می‌شوند تا مشخص شود آیا حساب معتبر است، غیرفعال نشده و در این زمان مجاز به ورود است یا خیر. این امر شامل ورودهای رمزگذاری‌شده نیز می‌شود.
•مدیریت نشست (Session Management): هنگام عدم استفاده از امنیت در سطح اشتراک (share level security)، کاربران باید پیش از اعطای دسترسی بررسی‌های نشست PAM را بگذرانند. با این حال توجه داشته باشید که این بررسی در امنیت سطح اشتراک دور زده می‌شود. همچنین توجه داشته باشید که برخی فایل‌های پیکربندی قدیمی‌تر pam ممکن است برای پشتیبانی از نشست به افزودن یک خط نیاز داشته باشند.

این صفحه راهنما بخشی از نسخه 4.24.6 مجموعه نرم‌افزاری Samba است.

بیشتر پیام‌های عیب‌یابی صادرشده توسط کارساز در یک فایل لاگ مشخص ثبت می‌شوند. نام فایل لاگ در زمان کامپایل مشخص می‌شود، اما می‌توان آن را از طریق خط فرمان بازنویسی کرد.

تعداد و ماهیت پیام‌های عیب‌یابی موجود بستگی به سطح اشکال‌زدایی (debug level) مورد استفاده کارساز دارد. اگر با مشکلی مواجه شدید، سطح اشکال‌زدایی را روی 3 تنظیم کنید و فایل‌های لاگ را به دقت بررسی نمایید.

بیشتر پیام‌ها تا حد معقولی خودتوضیح هستند. متاسفانه در زمان تهیه این صفحه راهنما، تعداد پیام‌های عیب‌یابی موجود در کد منبع بسیار بیشتر از آن است که توصیف تک‌تک آن‌ها توجیه‌پذیر باشد. در این مرحله بهترین راهکار جستجوی grep در کد منبع و بررسی شرایطی است که منجر به صدور پیام عیب‌یابی مشاهده‌شده شده‌اند.

سامبا داده‌های خود را در چندین فایل TDB (پایگاه‌داده ساده / Trivial Database) نگهداری می‌کند که معمولاً در /var/lib/samba قرار دارند.

(*) اطلاعاتی که پس از راه‌اندازی مجدد حفظ می‌شوند (اما لزوماً پشتیبان‌گیری از آن‌ها ضروری نیست).

account_policy.tdb*

تنظیمات خط‌مشی حساب NT مانند انقضای گذرواژه و غیره.

brlock.tdb

قفل‌های محدوده بایت (byte range locks)

browse.dat

فهرست‌های مرور (browse lists)

gencache.tdb

پایگاه‌داده کش عمومی

group_mapping.tdb*

اطلاعات نگاشت گروه

locking.tdb

حالت‌های اشتراک و قفل‌های فرصت‌طلبانه (oplocks)

login_cache.tdb*

تلاش‌های ناموفق با گذرواژه اشتباه

messages.tdb

سامانه پیام‌رسانی Samba

netsamlogon_cache.tdb*

حافظه موقت ساختار net_info_3 کاربر از درخواست net_samlogon() (به‌عنوان عضو دامنه)

ntdrivers.tdb*

درایورهای چاپگر نصب‌شده

ntforms.tdb*

فرم‌های چاپگر نصب‌شده

ntprinters.tdb*

اطلاعات چاپگرهای نصب‌شده

printing/

دایرکتوری حاوی tdb به ازای هر صف چاپ از خروجی کش‌شده lpq

registry.tdb

اسکلت رجیستری ویندوز (اتصال از طریق regedit.exe)

smbXsrv_session_global.tdb

اطلاعات نشست (مانند پشتیبانی از 'utmp = yes')

smbXsrv_tcon_global.tdb

اتصالات اشتراک (مورد استفاده برای اعمال حداکثر اتصالات و غیره)

smbXsrv_open_global.tdb

دستگیره‌های باز فایل (استفاده از دستگیره‌های بادوام و غیره)

share_info.tdb*

فهرست‌های کنترل دسترسی (acl) اشتراک

winbindd_cache.tdb

حافظه موقت winbindd از فهرست کاربران و غیره

winbindd_idmap.tdb*

پایگاه‌داده idmap محلی winbindd

wins.dat*

پایگاه‌داده wins هنگامی که 'wins support = yes' برقرار باشد

ارسال سیگنال SIGHUP به smbd سبب می‌شود در مدت کوتاهی فایل پیکربندی smb.conf خود را دوباره بارگذاری کند.

برای متوقف کردن فرایند smbd یک کاربر، توصیه می‌شود که از SIGKILL (-9) استفاده نشود، مگر به‌عنوان آخرین راه‌حل؛ چرا که ممکن است ناحیه حافظه مشترک را در وضعیتی ناپایدار باقی بگذارد. روش امن برای متوقف ساختن یک smbd ارسال سیگنال SIGTERM (-15) به آن و منتظر ماندن برای خاموش شدن خودبه‌خودی آن است.

سطح لاگ اشکال‌زدایی smbd را می‌توان با استفاده از برنامه smbcontrol(1) افزایش یا کاهش داد (سیگنال‌های SIGUSR[1|2] از نسخه Samba 2.2 دیگر استفاده نمی‌شوند). این امکان برای بررسی مشکلات گذرا در حالی که هنوز در سطح لاگ پایین عادی اجرا می‌شود در نظر گرفته شده است.

توجه داشته باشید از آنجا که گرداننده‌های سیگنال یک عملیات نوشتن اشکال‌زدایی ارسال می‌کنند، در smbd قابلیت ورود مجدد (re-entrant) ندارند. از این رو پیش از ارسال آن‌ها باید منتظر بمانید تا smbd در حالت انتظار برای یک بسته ورودی SMB قرار گیرد. ایمن‌سازی گرداننده‌های سیگنال با رفع انسداد سیگنال‌ها قبل از فراخوانی select و مسدودسازی مجدد آن‌ها پس از آن امکان‌پذیر است، اما این کار بر عملکرد تأثیر منفی می‌گذارد.

hosts_access(5), inetd(8), nmbd(8), smb.conf(5), smbclient(1), testparm(1), و RFCهای اینترنتی rfc1001.txt, rfc1002.txt. علاوه بر این، مشخصات CIFS (سابقاً SMB) به‌صورت پیوندی از صفحه وب زیر در دسترس است: https://www.samba.org/cifs.

نرم‌افزار اصلی Samba و ابزارهای مرتبط توسط Andrew Tridgell ایجاد شده‌اند. Samba اکنون توسط Samba Team به‌عنوان پروژه‌ای متن‌باز، مشابه روش توسعه هسته لینوکس، توسعه می‌یابد.

08/16/2026 Samba 4.24.6