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

 

 ٢- تاریحچه

مایکروسافت سرویسی به نام (SMB(System Message Block را برای ویندوز‌های 2003, 200, NT,9x طراحی نموده که با نام دیگر (CIFS(Common Interface file System   نیز شناخته می‌شود .

SMB یک پروتکل سطح بالا بوده که بر روی پروتکل NetBIOS متعلق به مایکروسافت بنا نهاده شده که می‌تواند برروی شبکه TCP/IP اجرا گردد . این سرویس اجازه می‌دهد که سیستم‌ها بتوانند تحت شرایطی منابع خود را به اشتراک گذاشته و بسیاری از کسانی که با ویندوز سر و کار دارند با مقوله‌ای به نام   network neighborhood را که در همین زمینه فعالیت می‌نماید را بخوبی می‌شناسند .

آقای Andrew Tridgell   با بررسی  SMB و از طریق مهندسی معکوس به خواص SMB پی برده و samba در عرصه لینوکس و یونیکس شروع به خود نمائی نمود .

انتخاب نام SAMBA بر چه اساسی است  ؟

برای انتخاب نام محصولی که بتواند با استفاده از پروتکل  smb    با ویندوز ارتباط برقرار نماید ، فرمان زیر اجرا گردید :

 grep  -I   '^s.*m.*b'  /usr/dict/words

 

 b داشته باشد        m   داشته باشد           با   s شروع شود

Salmob    erry   samba   sawtimber   scrmb

و samba   که نوعی رقص مکزیکی می باشد انتخاب گردید .

 

 3-معرفی سمبا

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

در واقع   SAMBA  از پروتکل SMB  برای share  کردن فایل‌ها و پرینتر‌ها در شبکه استفاده می‌کند . 

سیستم‌عامل‌هایی که این پروتکل را پشتیبانی می‌کنند عبارتند از ویندوز  از طریق Network Neighborhood, OS/2 و لینوکس .

 

 

4-   SAMBA  چه کارهایی انجام می دهد :

File server                   : می تواند به عنوان خادم فایل عمل نماید .

Print server                 : می تواند به عنوان خادم چاپگر عمل نماید .

Domain controller         : می تواند به عنوان کنترولر قلمرو عمل نماید .

Wins server                 : می تواند به عنوان خادم wins عمل نماید .

 

 

5- چه روش هایی برای نصب سمبا وجود دارد : 

از طریق خط فرمان

                                            Vi  /etc/samba/smb.conf

از طریق مرورگر اینترنت

                                                   http://sambaserver:901

با استفاده از بسته نرم افزاری webmin

 

5-1 : راه اندازی سمبا :

به طور کلی راه اندازی ، توقف و راه اندازی مجدد سرویس دهنده سمبا با اسکریپت /etc/rc.d/init.d/smb   انجام می‌شود . در خط فرمان دستور service به صورت زیر به کار می رود .

service   smb   start# 

 service   smb   stop# 

 service   smb   restart# 

 

6 – سرویس‌های سمبا :

سمبا چهار سرویس: 1- فایل و چاپگر 2- احراز هویت و کنترل مجوزها 3- نگاشت نام 4- اعلان سرویس  را فراهم می‌نماید .

 

7- اجزای سمبا :

سمبا شامل سه دایمون است. هر دایمون در لینوکس یک برنامه کاربردی است که در پس‌زمینه اجرا می‌شود و خدماتی را فراهم می‌کند . این خدمات می‌تواند خدمات وب باشد که کارساز آن در لینوکس Apache است و در آنصورت دایمون آن httpd خواهد بود . کارساز سمبا نیز شامل سه دایمون است که وجود دو تای آنها برای یک کارساز سمبا  الزامی است:

1- nmbd : این دایمون تمام درخواست‌های در مورد name registration  ،name resolution و اعلان‌های سرویس به کلاینت‌ها را مدیریت می‌کند و با وجود آن ، کار خواه‌ها می‌توانند به کارسازها و منابع مشترک آنها دسترسی پیدا کنند . این دایمون به عنوان  نگاشت‌‌نام نیز می‌تواند عمل می‌کند و نگاشت NetBIOSName به آدرس IP را انجام می‌دهد . علاوه بر این nmbd  تمام پروتکل‌های مبتنی بر UDP را اداره کرده و باید در ابتدای کار ، سمبا اجرا شود.

اعلان سرویس که browsing هم نامیده می شود روشی است که از طریق آن سرویس های شبکه برای سیستم های ویندوز و سیستم های لینوکس متصل با سمبا مشخص می‌شود .

 

2 - smbd : این دایمون نیز تمام خدمات مبتنی بر TCP/IP را مدیریت می‌کند . همچنین کلیه کارهای مربوط به احراز‌هویت  client  ها و مجوز دسترسی به منابع اشتراک گذاشته شده مانند فایل و چاپگر را به عهده دارد .  برای امنیت بیشتر نیز سرویس‌های احراز هویت و کنترل مجوزها را تامین می‌نماید .

smbd باید بلافاصله بعد از nmbd اجرا شود .

 

3 - winbindd  : وقتی سمبا عضوی در ویندوز NT4 و  یا  دامنه ADS است , این دایمون باید اجرا شود . هچنین هنگامی که سمبا یک ارتباط قابل اعتماد  با دامنه دیگری دارد ، باید این دایمون در حال اجرا باشد .

این سرویس دهنده سمبا را قادر می‌سازد تا از سرویس احراز هویت ارائه شده توسط یک دامنه ویندوز استفاده نماید .

winbindd  پرونده   smb.conf را برای وجود دو پارامتر idmap uid  و  idmap gid جستجو می کند . اگر این دو پارامتر در پرونده پیدا نشود ، winbind اصلا اجرا نمی‌شود .

و  بدین ترتیب کاربران شبکه می‌توانند فایل ها و چاپگرها را به اشتراک بگذارند.

 برای کنترل دسترسی به این سرویس‌ها می توانید از کاربران این سرویس‌ها رمز عبوری را درخواست نمایید . بدین ترتیب وقتی کاربران سعی می‌کنند تا به یک دایرکتوری اشتراکی رجوع کنند از آنها رمز عبور پرسیده می‌شود.

کنترل لازم نیز به صورت مد‌اشتراکی و مد‌کاربری می‌تواند انجام شود . در مد‌اشتراکی برای منبع اشتراکی یک رمز عبور تعیین می‌شود و هر کاربری که آن رمز عبور را داشته باشد می‌تواند به منبع مورد‌نظر دسترسی داشته باشد ولی در مد‌کاربری برای یک منبع خاص باید هر کاربر رمز عبور جداگانه‌ای را داشته باشد .

به همین منظور سمبا رمزهای عبور خود را در فایل /etc/samba/smbpasswd نگهداری می‌کند .

 

تعداد زیاد فرایند smbd :

همانطور که گفته شد , nmbd دایمون مربوط به Name Server است . اگر سمبا به عنوان WINS Server عمل نکند ، فقط یک فرآیند nmbd  روی سامانه شما در حال اجراست ، در غیر اینصورت ، یعنی اگر سمبا بخواهد WINS Server هم باشد باید دو فرآیند nmbd در حال اجرا داشته باشید که یکی برای مدیریت درخواستهای WINS اختصاص یابد . اما از طرف دیگر smbd باید تمام درخواست‌های اتصال به دایمون را اداره کند . برای این کار ، smbd به ازای هر اتصال کار خواه یک فرآیند جدید ایجاد می‌کند .در واقع برای هر اتصال کارخواه باید یک برنامه smbd مخصوص به آن فعال باشد و به آن پاسخ دهد . بنابراین ممکن است در یک زمان تعداد زیادی فرآیند smbd   دیده شود .

 

8-تنظیمات سمبا :

برای تنظیمات و پیکربندی سمبا از فایل  /etc/samba/smb.conf   استفاده می شود . در این فایل گزینه‌های سراسری و سپس پیکربندی منابع اشتراکی قرار می‌گیرند و با تغییر این فایل می توانید پیکربندی مورد نظر را به وجود آورید. این فایل از گروه‌های متعددی تشکیل می‌شود و هر منبع نیز گروه مخصوص به خود دارد که نام سرویس و مشخصه‌های آن را نگه می دارد . حتی گزینه‌های سراسری نیز در گروه مخصوصی بنام global قرار می‌گیرند . به طور مثال یک گروه برای فضای فایل اشتراکی :  از یک دایرکتوری و مجوزهای دسترسی کاربران برای آن دایرکتوری تشکیل می شود  .درفایل smb.conf  یک گروه با برچسب گروه شروع می شود . برچسب گروه نیز در حقیقت نام منبع اشتراکی می باشد که در داخل براکت ها قرار داده شده است . البته به جز گروه های خاص برچسب گروه هر نام دلخواهی می‌تواند باشد . بعد از برچسب گروه نیز در خط‌های جداگانه پارامترهای سرویس ذکر می‌شود . پارامترها حقوق دسترسی کاربر سرویس را تعریف میکنند . در ادامه یک مثال ساده از یک گروه فایل پیکربندی سمبا آمده است :

[mysection]

path=/home/chris

writeable=true

 

فایل پیکر بندی  smb.conf  شامل دو دایرکتوری است :

1- Global Directives    :  به منظور پیکربندی خادم و برای گزینه‌های سراسری استفاده می‌گردد .

2- Service Directives  :  به منظور پیکر‌بندی سرویس‌های اشتراکی مانند سرویس‌های قابل چاپ و یا فضای فایل استفاده می‌گردد . سرویس فضای فایل ، یک دایرکتوری است که امکان دسترسی کاربران به آن فراهم می‌شود  و کاربران آن را همانند فایل سیستم محلی استفاده می‌کنند . یک سرویس قابل چاپ نیز امکان دسترسی کاربران به سرویس‌های چاپی همانند چاپگرهای مدیریت شده توسط سمبا  را  فراهم می‌سازد .

مجموعه‌ی کاملی از نمونه های فایل پیکربندی smb.conf نیز در مسیر زیر وجود دارد :

/usr/share/doc/samba*/examples

بعد از اعمال هر گونه تغییرات در این فایل  smb.conf  ،  سرویس smb را با دستور زیر مجددا   فعال می‌کنیم :

/sbin/service  smb  restart

 

صحت و درستی این فایل با دستور     testparm قابل بررسی می‌باشد . به طور پیش فرض این برنامه فایل پیکربندی اصلی سمبا را بررسی می‌کند ولی می توانید فایل دیگری را نیز برای بررسی تعیین کنید .

به کمک سرویس سمبا کاربران ویندوز می توانند با وارد کردن شناسه و کلمه رمز خود که بر روی سرور تعریف شده است به ویندوز   Log In کنند و به اطلاعات موجود در homedirectory   خود دسترسی پیدا کنند و یا به پرینتر تعریف شده در سرور دسترسی یابند . همچنین در صورتی که بخواهیم به یکی از شاخه‌های لینوکس دسترسی پیدا کنیم بعد از وارد کردن تعاریف مربوط به مسیر مورد نظر ، می توانیم نام سرور را در محیط ویندوز جستجو کنیم و به اطلاعات شاخه مورد نظر دسترسی پیدا کنیم .

 برای تعیین گروه‌کاری و یک جمله توضیحی خطوط زیر را در فایل smb.conf ویرایش می‌کنیم .

Workgroup   =  workgroupname

Server string =  Brief comment about server

 

8-1:مثال هایی از تنظیم سمبا :

مثال‌هایی از تنظیم سمبا برای کارهای مختلف به منظور روشن تر شدن مطلب ذکر می‌کنیم :

8-1-1- به اشتراک گذاشتن یک شاخه در شبکه :

 برای تعریف یک شاخه به منظور share کردن در شبکه ، بخش زیر را اضافه می‌کنیم

[sharename]

Comment = Insert a comment here

/Path = /home/share

Valid users = user1 user2

 

Public = no

Writable = yes

Printable = no

Create mask = 0765

 

در این مثال کاربران user 1 , user2 اجازه خواندن و نوشتن در شاخه /home/share را دارند. پارامتر path  دایرکتوری را مشخص می کند که اجازه دسترسی به آن داده شده است . پارامتر writeable نیز مجوز نوشتن کاربران در این دایرکتوری را تعیین می‌کند .

تعریف Create mask = 0765 باعث می‌شود در زمان کپی کردن فایل توسط کاربر در شاخه گفته شده , فایل ها با مد 0765 روی سرور کپی شوند .

8-1-2- به اشتراک گذاشتن یک چاپگر در شبکه :

 یک سرویس چاپگر نیز ساختار مشابهی را دارد ولی  پارامترهای مشخص دیگری را نیاز دارد . پارامتر path محل دایرکتوری spool چاپگر را مشخص می‌سازد . پارامترهای read-only و printable نیز مقدار true می‌گیرند تا نشان دهند که سرویس فقط خواندنی و قابل چاپ می باشد . پارامتر public هم نشان دهنده دسترسی عمومی به این سرویس است .

[myprinter]

path = /var/spool/samba

read only = true

printable = true

public = true

8-1-3 : راه اندازی یک کارساز سند:

 Ducument server

 می‌خواهیم یک پرونده کارساز سمبا داشته باشیم که تمام کاربران بتوانند به آن دسترسی داشته باشند . شرایط این محیط به اشتراک گذاشته شده به صورت زیر است :

نام منبع مشترک /export   را انتخاب کرده‌ایم.

صاحب پرونده securitynet است که نام کاربری آن securitynet_Std   و کلمه عبورش   123   است .

برای ایجاد این کارساز باید مراحل زیر را انجام دهید :

شاخه /export   را ایجاد نمایید به طوری که در شاخه home ایجاد گردد ومجوزهای آن را تنظیم کنید ،همچنین صاحب آن را باید مشخص کنید :

make    /export#

chmod  u+rwx , g+rx , o+rx  /export#

chown  securitynet_std.users  /export#

 

کلیه پرونده‌هایی که می خواهید به اشتراک بگذارید به شاخه /export   کپی کنید .

حال پرونده smb.conf  را به صورت زیر تغییر دهید :

#Global parameters

[global]

Workgroup = MIDEARTH

Netbios name= HOBBIT

Security = share

[data]

Comment = Data

Path = /export

Read only = yes

Guest ok = yes

با دستورات مناسب کارساز سمبا را راه‌اندازی کنید .

کارخواه تحت ویندوز خود را به گروه‌کاری مشخص شده ( در این‌جا MIDEARTH ) متصل کنید و نام آن را به ROBBINS  تنظیم کنید . آن را مجددا راه‌اندازی کنید و کمی منتظر بمانید . سپس مرورگر ویندوز خود را باز کنید و به قسمت Network Neighborhood  بروید . در آنجا باید ماشین HOBBIT را مشاهده نمایید . با کلیک روی آیکن آن ، می توانید داده های به اشتراک گذاشته روی آن را مشاهده کنید . در آنجا شاخه /export   قابل مشاهده خواهد بود .

9-  دسترسی به SMB  :

کاربران لینوکس به منظور دسترسی به امکانات SMB می توانند یکی از دو فرمان زیر را مورد استفاده قرار دهند :

1- smbclient   : برنامه ای شبیه به ftp   برای دسترسی به فایل‌های اشتراکی و چاپگرها ، به شکل زیر :

Smbclient  //server/share

 server: نام سروری که می خواهید از منابع اشتراکی آن استفاده کنید.

share : منبع به اشتراک گذاشته شده .

2- smbmount  : فرمانی برای mount کردن فایل سیستم‌های به اشتراک گذاشته شده در  کامپیوترهای دیگر و برای دسترسی به چاپگرها نیز می توان با ابزار  printtool   چاپگرها را پیکربندی نمود . 

Smbmount  //server/share  /mountpoint

 server :  نام سروری که می خواهید از منابع اشتراکی آن استفاده کنید

share  :   منبع به اشتراک گذاشته شده

mountpoint : سوار شده بر روی دایرکتوری محلی 

محصول Samba   مرتبا به روز شده به دلیل توسعه و رفع اشکال و بهتر است که برای تهیه آخرین گونه این محصول مستقیما به سایت  www.samba.org   مراجعه کنید .