سرور مجازی

اشتراک دیتا بین لینوکس و ویندوز با Samba

آموزش انتقال فایل بین ویندوز و لینوکس با سامبا

 اشتراک دیتا بین لینوکس و ویندوز با samba

 

 

مقدمه

در مطلب نحوه انتقال و اشتراک فایل بین ویندوز و لینوکس 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 کلیک راست کنید که پنجره زیر را با داده های مورد نیاز به شما نشان می دهد.

samba soft

و یا میتوانید 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

4.7/5 - (7 votes)
جشنواره تابستانه تلاش نت (تابستان ۱۴۰۰)
مشاهده
دکمه بازگشت به بالا