مقدمهدر مطلب نحوه انتقال و اشتراک فایل بین ویندوز و لینوکس 5 روش را برای انتقال و ایجاد ارتباط بین لینوکس و ویندوز معرفی و بررسی کردیم یکی از این روش ها انتقال دیتا با سامبا است که در ادامه به صورت کامل این روش را بررسی و مراحل آن را آموزش خواهیم داد.
|
سامبا | Samba چیست؟
سامبا یک نرم افزار رایگان و متن باز است که امکان اشتراک گذاری فایل ها را در سیستم های ویندوز و لینوکس به سادگی و آسانی فراهم می کند. یک پیاده سازی متن باز از پروتکل SMB/CIFS است.
((تهیه سرور مجازی با دیسک معمولی و دیسک NVME با سیستم عامل دلخواه ویندوز یا لینوکس))
نحوه استفاده از سامبا برای اشتراک گذاری دیتا
ابتدا نیاز است تمامی فایل های کش موجود در سیستم را حذف کنیم برای این منظور ابتدا با دسترسی روت وارد SSH سرور لینوکسی شوید و دستور زیر را وارد کنید:
yum clean all |
همچنین نیاز است تمامی بسته های موجود در سیستم به روز باشد، برای چکاپ این مورد از دستور زیر استفاده می کنیم.
yum -y update |
حالا نوبت نصب سامبا است، با استفاده از دستور زیر نصب به راحتی انجام می شود.
yum -y install samba samba-client samba-common |
پس از اتمام نصب خروجی زیر مشاهده می شود:
Installed: samba.x86_64 0:4.9.1-10.el7_7 samba-client.x86_64 0:4.9.1-10.el7_7 samba-common.noarch 0:4.9.1-10.el7_7 Dependency Installed: libsmbclient.x86_64 0:4.9.1-10.el7_7 libwbclient.x86_64 0:4.9.1-10.el7_7 samba-client-libs.x86_64 0:4.9.1-10.el7_7 samba-common-libs.x86_64 0:4.9.1-10.el7_7 samba-common-tools.x86_64 0:4.9.1-10.el7_7 samba-libs.x86_64 0:4.9.1-10.el7_7 Complete! |
پس از اتمام نصب میتوان ورژن سامبا را با دستور زیر بررسی نمود:
smbd –version Version 4.9.1 |
پس از نصب Samba، باید آن را پیکربندی کنیم تا با تنظیمات و استانداردهای ما مطابقت داشته باشد. قبل از اینکه پیکربندی Samba را در دستگاه لینوکس خود شروع کنیم، باید اطلاعات ویندوز خود را داشته باشیم. برای انجام اینکار
روی “This PC” یا “My Computer” → Properties → Advanced System Settings → Computer Name کلیک راست کنید که پنجره زیر را با داده های مورد نیاز به شما نشان می دهد.
و یا میتوانید cmd را از پنجره ویندوز بیابید و دستور زیر را اجرا کنید:
net config workstation |
نتیجه مشابه تصویر زیر خواهد بود:
اکنون که اطلاعاتی در مورد رایانه ویندوز خود داریم، میتوانیم به پیکربندی Samba در سیستم لینوکس خود برویم. فایل پیکربندی Samba را می توان در مسیر زیر یافت:
/etc/samba/smb.conf |
قبل از ایجاد هرگونه تغییر حتما یک نسخه پشتیبان از فایل پیکربندی تهیه و ذخیره کنید.
برای ایجاد یک نسخه پشتیبان از فایل پیکربندی اصلی smb.conf، از دستور زیر برای ایجاد یک نسخه پشتیبان به نام smb.conf_orig استفاده می کنیم.
cp /etc/samba/smb.conf /etc/samba/smb.conf_orig |
حالا آماده ویرایش هستیم. ما با پیکربندی Samba برای سرویسهای اشتراکگذاری فایل ناشناس شروع میکنیم. در این اشتراک، هر کاربری قادر به خواندن یا نوشتن خواهد بود. ما با ایجاد دایرکتوری به نام “anonymous_shared_directory” شروع می کنیم که فایل های ما در آن ذخیره می شوند.
برای این منظور از دستور زیر استفاده می کنیم:
mkdir -p /samba/anonymous_shared_directory |
حالا باید پرمیشن ها را تنظیم کنیم، برای این منظور از دستور زیر استفاده می کنیم:
chmod -R 0775 /samba/anonymous_shared_directory chown -R nobody:nobody /samba/anonymous_shared_directory |
در صورتی که از SELinux استفاده میکنید، باید زمینه امنیتی SELinux را برای دایرکتوری مشترک سامبا تغییر بدید برا این منظور از دستور زیر استفاده کنید.
chcon -t samba_share_t /samba/anonymous_shared_directory |
در مرحله بعد، برای ایجاد تغییرات مورد نیاز در فایل پیکربندی، باید فایل /etc/samba/smb.conf را با(Nano یا Vim) باز کنیم.
vim /etc/samba/smb.conf |
حال با افزودن و ویرایش دستور های زیر اشتراک ناشناس را پیکر بندی می کنیم.
[global] workgroup = WORKGROUP security = user netbios name = centos7 printcap name = cups idmap config * : backend = tdb cups options = raw map to guest = bad user [Anonymous] comment = anonymous file share path = /samba/anonymous_shared_directory browseable = yes writable = yes guest ok = yes guest only = yes read only = no force user = nobody |
فایل پیکر بندی سامبا اکنون باید فرمی شبیه به این مورد داشته باشد:
cat /etc/samba/smb.conf See smb.conf.example for a more detailed config file or# .read the smb.conf manpage# Run ‘testparm’ to verify the config is correct after# .you modified it# [global] workgroup = WORKGROUP security = user netbios name = centos7 printcap name = cups idmap config * : backend = tdb cups options = raw map to guest = bad user [Anonymous] comment = anonymous file share path = /samba/anonymous_shared_directory browseable = yes writable = yes guest ok = yes guest only = yes read only = no force user = nobody [homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775 |
تغییرات را ذخیره کنید و ویرایشگر را ببندید.
برای تایید تنظیمات دستور زیر را استفاده کنید:
testparm rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Registered MSG_REQ_POOL_USAGE Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) “Processing section “[Anonymous] “Processing section “[homes] “Processing section “[printers] “Processing section “[print$] .Loaded services file OK Server role: ROLE_STANDALONE |
ENTER بزنید تا فهرست تعاریف را مشاهده کنید. قبل از راه اندازی سامبا میبایست فایروال خود را برای کار با آن پیکربندی کنیم چراکه سامبا برای عملکرد صحیح نیاز به پورت های زیر دارد:
Port 137 (TCP) – netbios-ns – NETBIOS Name Service Port 138 (TCP) – netbios-dgm – NETBIOS Datagram Service Port 139 (TCP) – netbios-ssn – NETBIOS session service Port 445 (TCP) – microsoft-ds – if you are using Active Directory |
پورت های دیگر:
Port 389 (TCP) – for LDAP (Active Directory Mode) Port 445 (TCP) – NetBIOS was moved to 445 after 2000 and beyond, (CIFS) Port 901 (TCP) – for SWAT service (not related to client communication) |
نحوه باز کردن این پورت ها برای سرویس های سامبا به نوع فایروال شما در سرور لینوکس بستگی دارد. از آنجایی که اکثر سرورهای لینوکس از فایروال csf استفاده می کنند، ما با پیکربندی فایل csf.conf شروع می کنیم.
vim /etc/csf/csf.conf |
حالا پورت های زیر را به بخش مورد نظر اضافه می کنیم:
Allow incoming TCP ports “TCP_IN = “20,21,25,53,80,110,139,143,443,445,465,587,993,995,5383 Allow outgoing TCP ports “TCP_OUT = “20,21,25,53,80,110,139,143,113,443,445,587,993,995,53835 |
در نهایت تغییرات را با دستور زیر ذخیره کنید.
csf -r |
در صورتی که سرویس firewalld را اجرا می کنید، به سادگی سرویس را با استفاده از دستور زیر اضافه کنید.
firewall-cmd –permanent –zone=public –add-service=samba |
حالا سرویس فایروال را مجدد راه اندازی کنید.
firewall-cmd –reload |
Samba از دو سرویس سیستم برای کار استفاده می کند: smb.service و nmb.service، سرویس smbd یک سرویس اشتراکگذاری و چاپ فایل را پیادهسازی میکند که در پورتهای 139 و 445 اجرا می شود.
سرویس nmbd ،NetBIOS را روی سرویسهای نامگذاری IP به کلاینتها پیادهسازی میکند و در پورت 137 اجرا می شود.
systemctl start smb.service systemctl start nmb.service |
برای اطمینان از اینکه این سرویس ها به صورت خودکار در هنگام بوت شدن سیستم راه اندازی می شوند، باید آنها را فعال کنیم.
systemctl enable smb.service Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
systemctl enable nmb.service Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service. |
به رایانه ویندوزی خود بروید روی Start -> Run کلیک کنید و آدرس IP سرور را مانند آن وارد کنید.
سپس، OK را فشار دهید، دایرکتوری Anonymous ما در اکسپلورر فایل نشان داده خواهد شد.
اکنون برای دسترسی به دایرکتوری دوبار کلیک کنید، سپس برای ایجاد یک سندجدید کلیک راست کنید، نام فایل را انتخاب کنید و سپس آن را ذخیره کنید. برای این منظور فایل را با نام testfile نامگذاری می کنیم. پس از ایجاد فایل، مطمئن شویم که در دستگاه لینوکس ما نیز موجود است.
ls -l /samba/anonymous_shared_directory total 0 -rwxr–r–. 1 nobody nobody 0 Mar 30 22:03 testfile.txt |
ایجاد دسترسی محدود برای سامبا
این نوع اشتراکگذاری برای دسترسی به یک نام کاربری و رمز عبور نیاز دارد، بنابراین باید یک کاربر/گروه از کاربران ایجاد کنیم که اجازه دسترسی به اشتراک ایجاد شده را داشته باشد.
هنگامی که یک گروه برای کاربران سامبا داریم، میتوانیم به راحتی هر گونه امتیاز مورد نیاز را به یکباره به همه آنها اختصاص دهیم.
برای ایجاد این گروه از دستور زیر استفاده می کنیم:
groupadd sambausergroup |
با موفقیت گروهی به نام “sambausergroup” ایجاد کرده ایم.در ادامه کاربر را ایجاد می کنیم.
نام آن را “newtestuser” می گذاریم، حسابهای کاربری Samba جدا از حسابهای سیستم هستند، بنابراین کاربر ما، که ما قصد داشتیم به آن امتیازات را فقط برای Samba اعطا کنیم، نیازی به دسترسی پوسته/گذرواژه نخواهد داشت.
با این حال، اگر تصمیم به ترکیب دارید، می توانید بسته “samba-winbind” را نصب کنید که برای همگام سازی کاربران سیستم و رمزهای عبور با پایگاه داده کاربر samba در میان سایر ویژگی ها استفاده می شود.
useradd -s /sbin/nologin -g sambausergroup newtestuser |
توجه کنید که چگونه از -s flag برای جلوگیری از دسترسی پوسته کاربر استفاده کردیم و سپس از -g برای اختصاص آن به گروه خود استفاده کردیم.
یک چیز دیگر وجود دارد که کاربر ما برای دسترسی به اشتراک ما به آن نیاز دارد و آن یک رمز عبور است.
smbpasswd -a newtestuser :New SMB password :Retype new SMB password .Added user newtestuse |
کاربران سامبا اکنون به مکانی برای ذخیره فایل های خود نیاز دارند، بنابراین باید یک دایرکتوری ایجاد کنیم. این فهرست “password_protected_directory” نامیده می شود.
mkdir -p /samba/password_protected_directory |
نیاز است پرمیشن ها برای خواندن و نوشتن به کاربر ایجاد شده داده شود.
setfacl -R -m “g:sambausergroup:rwx” /samba/password_protected_directory |
اجرای زمینه امنیتی برای SELinux
chcon -t samba_share_t /samba/password_protected_directory/ |
در ادامه پیکربندی
vim /etc/samba/smb.conf |
[Password Protected] comment = needs username and password to access path = /samba/password_protected_directory valid users = @sambausergroup guest ok = no writable = yes browsable = yes |
فایل اکنون به شکل زیر است:
See smb.conf.example for a more detailed config file or# .read the smb.conf manpage# Run ‘testparm’ to verify the config is correct after# .you modified it# [global] workgroup = WORKGROUP security = user netbios name = centos7 printcap name = cups idmap config * : backend = tdb cups options = raw map to guest = bad user [Password Protected] comment = needs username and password to access path = /samba/password_protected_directory valid users = @sambausergroup guest ok = no writable = yes browsable = yes [Anonymous] comment = anonymous file share path = /samba/anonymous_shared_directory browseable = yes writable = yes guest ok = yes guest only = yes read only = no force user = nobody [homes] comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No inherit acls = Yes [printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775 |
پس از ذخیره تنظیمات را با دستور زیر تست می کنیم.
testparm rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Registered MSG_REQ_POOL_USAGE Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section “[Password Protected]” Processing section “[Anonymous]” Processing section “[homes]” Processing section “[printers]” Processing section “[print$]” Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions |
می بایست خدمات Samba را مجدداً راه اندازی کنیم تا مطمئن شویم تغییراتی که ایجاد کرده ایم اعمال می شوند.
systemctl restart smb nmb |
دسترسی به فایل های سامبا لینوکس در ویندوز
برای تست دوباره از رایانه ویندوز خود متصل شوید و روی Start -> Run کلیک کنید.
\\ IP سرور را وارد کنید serverIP -> Okay\\ سپس روی ok کلیک کنید.
اکنون هر دو دایرکتوری را در دسترس داریم، دایرکتوری Anonymous و پوشه محافظت شده با رمز عبور
با دوبار کلیک کردن بر روی دایرکتوری محافظت شده با رمز عبور، اعلان زیر باز می شود که در آن باید مشخصات “کاربر جدید” خود را وارد کنیم.
برای اطمینان از کارکرد صحیح یک دایرکتوری جدید در پوشه محافظت شده با رمز عبور خود ایجاد میکنیم. و آن را “test_directory” نام گذاری می کنیم.
در نهایت هم وجود این دایرکتوری را از سمت لینوکس تایید می کنیم.
ls -l /samba/password_protected_directory/ total 0 drwxr-xr-x. 2 newtestuser sambausergroup 6 Apr 3 21:12 test_directory |
چکیدهسامبا انعطاف پذیر است، می توانید از Linux، Windows یا macOS به Samba متصل شوید. همچنین میتوانید آن را بهعنوان Active Directory Domain Controller برای ادغام یک سرور لینوکس تنظیم کنید. از آنجایی که راه اندازی Samba سریع و آسان است، اگر اشتراک گذاری آسان فایل در محیط های شبکه مختلط با ماشین های ویندوز و لینوکس را می خواهید، استفاده از سامبا پیشنهاد می شود.
|
_______________________________________
تلاش نت
02154109000