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

ویندوز از پروتکل (Server Message Block) SMB  و لینوکس از  (Network File Sharing) NFS برای اشتراک گذاری منابع استفاده میکند.

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

 پیشنیازها

•    مفاهیم شبکه (IP, Firewall, ACL, …)
•    آشنایی با لینوکس و Command line 
•    آشنایی با محیط ویندوز و File Explorer
•    آشنایی با مجازی سازها (در صورت استفاده)


ابزارها

•     (Samba) که بهش می پردازیم.
•    smbpassword
•    chmod 
•    chown
•    ufw
•    File explorer
•    Ping 


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

معایب مزایا روش
پیکربندی اولیه

یکپارچگی با ویندوز

امنیت و عملکرد

Samba

پیکربندی پیچیده

مشکلات امنیتی

سرعت بالا NFS

عملکرد پایین 

عدم یکپارچگی با ویندوز

امنیت بسیار بالا SFTP/SSH

وابستگی به اینترنت

محدودیت حجم

راه اندازی آسان Cloud

 

در این آموزش همانطورکه میشد حدس زد ما از Samba به دلیل راه اندازی آسان و یکپارچگی با ویندوز استفاده می کنیم.

Samba در سال 1991 توسط اندرو ترجل کلید خورد و در سال 2007 مایکروسافت تحت فشار اتحادیه اروپا و جامعه متن باز مستندات SMB را منتشر کرد. و امروزه به استاندار طلایی اشتراک فایل بین لینوکس و ویندوز تبدیل شده است.

دانلود و راه اندازی سامبا (Samba)

خب اینجا یک ویندوز 10 و یک کالی لینوکس در wmvare workstation بالا اوردیم تا کارمون رو شروع کنیم. 

قبل از نصب بهتر است تا با دستور sudo apt upadate  ریپازیتوری ها را  آپدیت کنیم.
برای دانلود و نصب کردن samba در لینوکس از دستور sudo apt install samba استفاده میکنیم. بعد از مشاهده اطلاعاتی مثال پیشنیاز ها و ... با وارد کردن عبارت Y فرایند دانلود و نصب انجام میشود.

 آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)

دانلود و نصب samba

بعد از فرایند نصب برای اینکه مطمئن شویم samba به درستی نصب شده از دستور sudo systemctl status smbd استفاده میکنیم.

آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)

قبل از تغیر دادن فایل کانفیگ, یک دایرکتوری به نام shares با دستور
mkdir /home/kali/shares 
 برای اشتراک گذاری میسازیم.
 آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)

کانفیگ کردن samba

در سیستم عامل لینوکس معمولا فایل های کانفیگ در دایرکتوری etc/  قرار دارند. در نتیجه برای مشاهده ی فایل های کانفیگ samba به پوشه /etc/samba  میرویم و با دستور ls محتویات این دایرکتوری را مشاهده میکنیم.
 آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)

طبق تصویر فایل smb.conf همون چیزیه که بهش نیاز داریم.
سپس با ابزار nano به ایجاد تغییرات این فایل میپردازیم.


نکته: حتما دستور nano را با sudo به عنوان root اجرا کنید در غیراین صورت نمیتوانید تغییرات خود را ذخیره کنید.


زمانی که فایل smb.conf را بازکردید, به انتهای فایل بروید و عبارات زیر را به فایل اضافه کنید.
  

آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)بیایید هرکدام از عبارت ها را بررسی کنیم.

[shared] : نام اشتراک است که شیرفولدر های ما با این نام نمایش داده میشود.

Comment : برای نوشتن توضیحات است.

Path : برای مشخص کردن دایرکتوری تا به اشتراک گذاشته بشه. 

Writable : اگر بخواهیم به کاربران اجازه نوشتن بدهیم مقدارش را yes تنظیم میکنیم.

Guest ok : درصورتی که نخواهیم از احراز هویت استفاده کنم  مقدارش را برابر با yes قرار می دهیم.

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

مقدار کاربرد عبارت
user1, user2 , ... مشخص کردن کاربران مجاز valid users
user1, user2 , ... مشخص کردن کاربران غیر مجاز invalid users
yes/no امکان دسترسی عمومی public
yes/no امکان اشتراک پرینتر printable
printer name مشخص کردن نام پرینتر printer name
yes/no مجوز فقط خواندن read only
yes/no  امکان نمایش در لیست شبکه browsable
تعداد کاربران. مثلا 5 حداکثر تعداد کاربران متصل max connection

 

نکته: برای برای افزایش امنیت از عبارت valid users = username استفاده کنید تا فقط کاربران تایید شده وارد شوند. 
برای ست کردن پسوورد برای یوزر از دستور <sudo smbpasswd –a <username استفاده میکنیم و سپس پسوورد را تنظیم مینماییم.

در انتهای کار تغییرات را ذخیره و با دستور sudo systemctl restart smbd سرویس smbd را ریستارت کنید.

اتصال به  از ویندوز به لینوکس

قبل از اتصال از طریق ویندوز میتوانیم با دستور <sudo smblient -L <hostname لیست دایرکتوری های به اشتراک گذاشته شده را ببینیم.

آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)
  
در تصویر بالا میتوان دید که shared دایرکتوری با موفقیت به اشتراک گذاشته شده.

حالا نوبت به اتصال از ویندوز رسیده. برای اینکار باید ای پی ماشین لینوکسیمون رو داشته باشیم که از دستور ifconfig استفاده میکنیم.
 آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)
همانطور که در تصویر بالا مشخصه لینوکس ما  آدرسش 192.168.213.137 هستش. همین ادرس ای پی رو در پنجره ران ویندوز وارد میکنیم  و ok را میزنیم. 

نکته : قبل از آدرس آی پی دو  بک اسلش (\\) را قرار دهید.

آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)

  آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)

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

اتصال از لینوکس به ویندوز

برای اتصال به پوشه  به اشتراک گذاشته شده از ویندوز نیز مراحل زیر را انجام میدهم.

برای اتصال به ویندوز نیز باید  آدرس آی پی آن را بدانیم. برای این کار در ویندوز در cmd از دستور ipconfig استفاده میکنیم. 

آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)

همانطور که در تصویر مشاهده میکنید آی پی ویندوز ما 192.168.213.132 می باشد.

در لینوکس خود برنامه فایل منیجر را باز میکنیم و در آن به دنبال گزینه ی  open location یا browse network میگردیم.

آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)

در تصویر بالا میتوان دید که در بخش browse network کامپیوتر ویندوزی ما به طور خودکار شناسایی شده است.

در مرحله ی بعد روی آیکون که مشاهده میکنید کلیک میکنیم و از ما میخواهد برای دسترسی به فایل های اشتراک گذاری شده احراز هویت انجام بدهیم.

آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)

پس از وارد کردن نام کاربری و رمز عبور به محتویات آن دسترسی داریم.

آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)

مشکلات و اشتباهات 

اگر به مشکلی خوردید که پالیسی اجازه برقراری ارتباط را نمیداد (همانند شکل زیر) به این دلیل است که ویندوز جلوی دسترسی به شبکه های عمومی ناشناس رو میگیره.

آموزش اشتراک گذاری فایل بین لینوکس(linux) و ویندوز(windows)
 
برای رفع این مشکل با وارد کردن gpedit.msc در پنجره run به group policy editor رفته و در مسیر
 computer configuration >  administrative templates > network > lanman workstation
 با enable کردن enable insecure guest logons  مشکل حل میشود.

درصورتی که موفق نبودید باید فایروال لینوکس را برای samba باز بگذارید.
با استفاده از دستور sudo ufw allow samba  این کار را انجام دهید.

یکی دیگر از اشتباهات این است که دسترسی دایرکتوری شما به درستی تنظیم نشده باشد. برای حل این مشکل باید permission ها را با دستور chmod تغییر دهید.
مثال <sudo chmod 77 <directory . با این کار شما به تمامی کاربران دسترسی کامل میدهید.