پیکربندی سامبا برای اشتراک گذاری بین لینوکس و ویندوز

همانطور که می دانید برای به اشتراک گذاری و انتقال اطلاعات بین سیستم عامل لینوکس و دیگر سیستم عاملها نظیر ویندوز می توان از سرویس سامبا استفاده کرد به عبارتی دیگر، سامبا پروتکل به اشتراک گذاری فایل ها و منابع موجود در شبکه می باشد. پیکربندی سرویس سامبا به دو روش Secure  و Anonymous  قابل انجام است که در این مقاله به تشریح مراحل پیکربندی این سرویس به هر دو این روشها در محیط اوراکل لینوکس 7.6 می پردازیم.

مرحله اول: به عنوان گام اول، بسته سامبا را نصب می کنیم:

 [root@OLinux7 ~]# yum install samba

—> Package samba.x86_64 0:4.8.3-4.el7 will be installed

–> Processing Dependency: samba-libs = 4.8.3-4.el7 for package: samba-4.8.3-4.el7.x86_64

–> Processing Dependency: samba-common-tools = 4.8.3-4.el7 for package: samba-4.8.3-4.el7.x86_64

–> Processing Dependency: libxattr-tdb-samba4.so(SAMBA_4.8.3)(64bit) for package: samba-4.8.3-4.el7.x86_64

–> Processing Dependency: libxattr-tdb-samba4.so()(64bit) for package: samba-4.8.3-4.el7.x86_64

—> Package samba-common-tools.x86_64 0:4.8.3-4.el7 will be installed

—> Package samba-libs.x86_64 0:4.8.3-4.el7 will be installed

–> Processing Dependency: libpytalloc-util.so.2(PYTALLOC_UTIL_2.1.9)(64bit) for package: samba-libs-4.8.3-4.el7.x86_64

–> Processing Dependency: libpytalloc-util.so.2(PYTALLOC_UTIL_2.1.6)(64bit) for package: samba-libs-4.8.3-4.el7.x86_64

–> Processing Dependency: libpytalloc-util.so.2(PYTALLOC_UTIL_2.0.6)(64bit) for package: samba-libs-4.8.3-4.el7.x86_64

–> Processing Dependency: libpytalloc-util.so.2()(64bit) for package: samba-libs-4.8.3-4.el7.x86_64

—> Package pytalloc.x86_64 0:2.1.13-1.el7 will be installed

Installed size: 3.7 M

Is this ok [y/d/N]: y

  Installing : pytalloc-2.1.13-1.el7.x86_64      1/4

  Installing : samba-libs-4.8.3-4.el7.x86_64   2/4

  Installing : samba-common-tools-4.8.3-4.el7.x86_64     3/4

  Installing : samba-4.8.3-4.el7.x86_64        4/4

Installed:   samba.x86_64 0:4.8.3-4.el7

Complete!

مرحله دوم: فایل پیکربندی سرویس سامبا، در مسیر etc/samba/ قرار دارد:

[root@OLinux7 ~]# cd /etc/samba

[root@OLinux7 samba]# ls -l

-rw-r–r–. 1 root root    20 Oct 30  2018 lmhosts

-rw-r–r–. 1 root root   706 Oct 30  2018 smb.conf

-rw-r–r–. 1 root root 11327 Oct 30  2018 smb.conf.example

این فایل در oracle linux 7u6، به صورت پیش فرض شامل قسمتهای [global]،  [homes]، [printers] ، [print$] می باشد که از این بین، پارامترهای تعیین شده در قسمت global که شامل پیکربندی کلی هم می باشند، از اهمیت بیشتری برخوردارند همچنین پارامترهای تعریف شده در قسمت homes، امکان دسترسی به home directory را برای کاربران هموار می سازند.

با این اوصاف، تنظیم هیچ کدام از این چهار قسمت الزامی نمی باشد و در صورت اطلاع از تنظیمات پیش فرض سرویس سامبا، می توان از هر کدام از این چهار قسمت صرف نظر کرد:

[root@OLinux7 samba]# cat smb.conf

[global]

        workgroup = WORKGROUP

        security = user

        passdb backend = tdbsam

        printing = cups

        printcap name = cups

        load printers = yes

        cups options = raw

[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

نکته: برای دسترسی به object به اشتراک گذاشته شده در یک کلاینت ویندوزی، باید workgroup تعیین شده در این سرویس(در قسمت GLOBAOL)، با workgroup تعیین شده برای کلاینت ویندوز یکسان باشد. با اجرای دستور net config workstation در محیط ویندوز می توان workgroup آن را تعیین کرد:

>net config workstation

Computer name                        \\USEF-PC

Full Computer name                   USEF-PC

Workstation domain                   WORKGROUP

COM Open Timeout (sec)               0

COM Send Count (byte)                16

COM Send Timeout (msec)              250

The command completed successfully.

در ادامه قصد داریم دایرکتوری bkp/ را به روش Secured با محیط ویندوز به اشتراک بگذاریم برای این کار، قسمت جدیدی را با عنوان [bkp] به این فایل اضافه می کنیم:

[root@OLinux7 ~]# mkdir /bkp

[root@OLinux7 samba]# vi smb.conf

[global]

        workgroup = WORKGROUP

        security = user

        passdb backend = tdbsam

        printing = cups

        printcap name = cups

        load printers = yes

        cups options = raw

 [bkp]

        comment = backup server

        browseable = yes

        path = /bkp

        writable = yes

        create mask = 0755

توضیحی در مورد پارامترهای استفاده شده در قسمت [bkp]:

[bkp]: نام دایرکتوری و یا منبعی که به اشتراک گذاشته شده.

Path: تعیین مسیر دایرکتوری که قرار است به اشتراک گذاشته شود.

browsable: دایرکتوری bkp قابل رویت باشد؟

Writable: با تنظیم این پارامتر به مقدار yes، امکان انجام تغییرات در محتویات دایرکتوری bkp/ بوجود خواهد آمد به عبارت دیگر، با تنظیم این پارامتر، کاربر می تواند کارهایی نظیر ایجاد فایل و یا دایرکتوری را انجام دهد.

comment: توضیحی در مورد شی به اشتراک گذاشته شده.

create mask: تنظیم permission پیش فرض برای فایلهایی که در مسیر اشتراکی ایجاد می شوند، با کمک این پارامتر قابل انجام است.

valid users: با کمک پارامتر valid users می توان اسامی کاربران و گروه های کاربری معتبر را مشخص کرد. برای مثال با تنظیم پارامتر زیر، می توان از یکی از دو کاربر user1 و user2 به منبع اشتراک گذاری شده دسترسی پیدا کرد یا اینکه کاربر مورد نظر عضو یکی از دو گروه oinstall و dba باشد:

[root@OLinux7 ~]# useradd -g oinstall user1

[root@OLinux7 ~]# useradd -g dba user2

valid users = user1 user2 @oinstall @dba

بعد از تنظیم پارامترهای مورد نظر در فایل smb.conf، می توانیم از طریق دستور testparm درستی پارامترهای وارد شده را چک کنیم.

[root@OLinux7 samba]# testparm

Load smb config files from /etc/samba/smb.conf

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)

Processing section “[homes]”

Processing section “[printers]”

Processing section “[print$]”

Processing section “[bkp]”

Loaded services file OK.

Server role: ROLE_STANDALONE

برای مثال، با وارد کردن عبارت بی معنی در انتهای فایل smb.conf، دستور فوق خطایی را برمی گرداند:

[root@OLinux7 ~]# echo “pat=/u01”>> /etc/samba/smb.conf

[root@OLinux7 ~]# testparm

Load smb config files from /etc/samba/smb.conf

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)

Processing section “[homes]”

Processing section “[printers]”

Processing section “[print$]”

Processing section “[bkp]”

Unknown parameter encountered: “pat”

Ignoring unknown parameter “pat”

Loaded services file OK.

Server role: ROLE_STANDALONE

مرحله سوم: برای پیکربندی سرویس سامبا به روش Secured، باید کاربری را در محیط لینوکس ایجاد می کنیم:

[root@OLinux7 ~]# useradd usef

[root@OLinux7 ~]# passwd usef

Changing password for user usef.

New password:

BAD PASSWORD: The password is a palindrome

Retype new password:

passwd: all authentication tokens updated successfully.

پسورد سامبا را برای کاربر usef تنظیم می کنیم:

[root@OLinux7 samba]# smbpasswd -a usef

New SMB password:

Retype new SMB password:

Added user usef.

سوییچ a در دستور فوق سبب می شود تا نام این کاربر به فایل account_policy.tdb اضافه شود:

[root@OLinux7 samba]# ls -lh /var/lib/samba/

total 1.7M

-rw——-  1 root root       412K Jan 25 12:05 account_policy.tdb

drwxrwxr-x  2 root printadmin    6 Oct 30  2018 drivers

-rw-r–r–  1 root root       1.3M Jan 25 12:05 gencache.tdb

-rw——-  1 root root        696 Jan 25 12:05 group_mapping.tdb

drwxr-xr-x. 3 root root         84 Jan 25 12:05 lock

drwx——. 3 root root         59 Jan 25 12:05 private

مالکیت دایرکتوری bkp/ را به کاربر usef تغییر می دهیم:

[root@OLinux7 samba]# chown ali /bkp

نکته: دستور pdbedit نام کاربرانی که برای انها پسورد smb تنظیم شده است را نمایش می دهد:

[root@OLinux7 samba]# pdbedit -Lv

—————

Unix username:        usef

NT username:         

Account Flags:        [U          ]

User SID:             S-1-5-21-1761771055-2017651478-3314902110-1000

Primary Group SID:    S-1-5-21-1761771055-2017651478-3314902110-513

Full Name:           

Home Directory:       \\OLinux7\usef

HomeDir Drive:       

Logon Script:        

Profile Path:         \\OLinux7\usef\profile

Domain:               OLINUX7

Account desc:        

Workstations:        

Munged dial:         

Logon time:           0

Logoff time:          Wed, 06 Feb 2036 10:06:39 EST

Kickoff time:         Wed, 06 Feb 2036 10:06:39 EST

Password last set:    Sat, 25 Jan 2020 12:05:09 EST

Password can change:  Sat, 25 Jan 2020 12:05:09 EST

Password must change: never

Last bad password   : 0

Bad password count  : 0

Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

مرحله چهارم: در این مرحله سرویس سامبا را استارت می کنیم:

[root@OLinux7 samba]# systemctl status smb

â smb.service – Samba SMB Daemon

   Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)

   Active: active (running) since Sat 2020-01-25 12:10:59 EST; 4s ago

     Docs: man:smbd(8)

           man:samba(7)

           man:smb.conf(5)

 Main PID: 40570 (smbd)

   Status: “smbd: ready to serve connections…”

   CGroup: /system.slice/smb.service

           ââ40570 /usr/sbin/smbd –foreground –no-process-group

           ââ40572 /usr/sbin/smbd –foreground –no-process-group

           ââ40573 /usr/sbin/smbd –foreground –no-process-group

           ââ40574 /usr/sbin/smbd –foreground –no-process-group

Jan 25 12:10:59 OLinux7 systemd[1]: Starting Samba SMB Daemon…

Jan 25 12:10:59 OLinux7 smbd[40570]: [2020/01/25 12:10:59.966198,  0] ../lib/util/become_daemon.c:138(daemon_ready)

Jan 25 12:10:59 OLinux7 smbd[40570]:   daemon_ready: STATUS=daemon ‘smbd’ finished starting up and ready to serve connections

Jan 25 12:10:59 OLinux7 systemd[1]: Started Samba SMB Daemon.

برای استارت خودکار سرویس smb بعد از هر بار reboot کردن سرور می توان از دستور زیر استفاده کرد:

[root@OLinux7 ~]# systemctl enable smb

Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.

نکته: با کمک دستور smbstatus می توان لیست همه کلاینتهایی که با کمک سرویس سامبا به سرور متصل شده اند را مشاهده کرد:

[root@OLinux7 ~]# smbstatus

Samba version 4.8.3

PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing             

—————————————————————————————————————————————-

5182    usef         usef         192.168.1.20 (ipv4:192.168.1.20:53375)      SMB3_02           –                    partial(AES-128-CMAC)

 

Service      pid     Machine       Connected at                     Encryption   Signing    

———————————————————————————————

bkp          5182    192.168.1.20   Sun Feb  2 10:02:09 AM 2020 EST  –            –          

 

Locked files:

Pid          Uid        DenyMode   Access      R/W        Oplock           SharePath   Name   Time

————————————————————————————————–

5182         54323      DENY_NONE  0x100081    RDONLY     NONE             /bkp   .   Sun Feb  2 10:02:08 2020

5182         54323      DENY_NONE  0x100081    RDONLY     NONE             /bkp   .   Sun Feb  2 10:02:08 2020

مرحله پنجم: برای مشاهده وضعیت منابع به اشتراک گذاشته شده می توان بسته samba-client را نصب کرده و از دستور smbclient استفاده کنیم:

[root@OLinux7 samba]# yum install samba-client

Loaded plugins: ulninfo

Resolving Dependencies

–> Running transaction check

—> Package samba-client.x86_64 0:4.8.3-4.el7 will be installed

–> Finished Dependency Resolution

Total download size: 617 k

Installed size: 2.0 M

Is this ok [y/d/N]: y

  Installing : samba-client-4.8.3-4.el7.x86_64                  1/1

  Verifying  : samba-client-4.8.3-4.el7.x86_64                 1/1

Installed:

  samba-client.x86_64 0:4.8.3-4.el7                                                                                                                     

Complete!

جهت بررسی وضعیت منابع اشتراک گذاشته شده می‌توانیم از دستور زیر استفاده کنیم:

 [root@OLinux7 samba]# smbclient -L //OLinux7 -U usef

Enter SAMBA\usef’s password:

        Sharename       Type      Comment

        ———       —-      ——-

        print$          Disk      Printer Drivers

        bkp             Disk      backup server

        IPC$            IPC       IPC Service (Samba 4.8.3)

        usef            Disk      Home Directories

Reconnecting with SMB1 for workgroup listing.

        Server               Comment

        ———            ——-

        Workgroup            Master

        ———            ——-

مرحله ششم: با طی کردن مراحل زیر در محیط ویندوز، به دایرکتوری bkp/ دسترسی پیدا خواهیم کرد:

 

 

[root@OLinux7 ~]# cd /bkp/

[root@OLinux7 bkp]# ls -lh

-rwxr–r– 1 usef usef 0 Jan 25 16:18 myfile.txt

برای mount کردن فضای bkp/ در یک ماشین لینوکسی، می توان از دستور زیر استفاده کرد:

[root@myhost ~]#mkdir /mydir

[root@myhost ~]# mount -t cifs -o rw,username=usef,password=c  //192.168.1.20/bkp /mydir

در قسمت فوق، نحوه پیکربندی سامبا به روش Secured مورد بررسی قرار گرفت برای پیکربندی Anonymous Samba sharing می توان فایل کانفیگ smb.conf را به صورت زیر تنظیم کرد:

[root@OLinux7 ~]# chown -R nobody:nobody /bkp

[root@OLinux7 ~]# chmod -R 775 /bkp/

[root@OLinux7 ~]# vi  /etc/samba/smb.conf

[global]

workgroup = WORKGROUP

                security = user

                map to guest = bad user

                passdb backend = tdbsam

                printing = cups

                printcap name = cups

                load printers = yes

                  cups options = raw

[bkp]

path = /bkp

browsable =yes

writable = yes

guest ok = yes

read only = no

[root@ ~]# systemctl restart smb

با کمک پارامتر guest ok می توان بدون انجام هرگونه اعتبارسنجی از منبع به اشتراک گذاری شده استفاده کرد.

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@ www.linkedin.com/in/vahid-usefzadeh-918bb289

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد.