samba 基本配置及自定義控制

泡枸杞的IT人發表於2018-08-14

Samba簡介:

Samba實現的是Linux和Windows之間的一種共享,為兩種不同的作業系統架起了一座橋樑,使Linux系統和Windows系統之間能夠實現互相通訊,共享檔案系統、印表機及其他資源。


實驗環境:

 


基本配置

[root@lhh ~]# yum install samba -y                                               # server安裝Samba服務

[root@lhh ~]# firewall-cmd –add-service=samba                        # 防火牆開啟Samba服務

success

[root@lhh ~]# firewall-cmd –add-service=samba –permanent        # 永久生效

success

[root@lhh samba]# cd /etc/samba/               # Samba配置檔案目錄

[root@lhh samba]# ls

lmhosts  smb.conf

[root@lhh ]# vim /etc/samba/smb.conf            # Samba的主配置檔案

  —————- 配置檔案重要的條目註釋說明  ————————

[global]                                                                                               # Samba全域性配置

       workgroup = MYGROUP                                                            # 工作組名稱,Windows的為:WORKGROUP

       server string = Samba Server Version %v                               #  伺服器介紹資訊,引數%v為顯示SMB版本號

  #    interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24         # Samba執行埠,預設是執行在所有埠上

  #    hosts allow = 127. 192.168.12. 192.168.13.                        # 訪問控制,預設是允許所以都可以訪問

====================================================================

            log file = /var/log/samba/log.%m              # 定義日誌檔案的存放位置與名稱,引數%m為來訪的主機名

            max log size = 50                                     # 定義日誌檔案的最大容量為50KB

=====================================================================

            security = user                                         # 安全驗證的方式,總共有4種,如下:

                #share:來訪主機無需驗證口令;比較方便,但安全性很差 

                #user:需驗證來訪主機提供的口令後才可以訪問;提升了安全性

                #server:使用獨立的遠端主機驗證來訪主機提供的口令(集中管理賬戶) 

                #domain:使用域控制器進行身份驗證

            passdb backend = tdbsam                    #定義使用者後臺的型別,共有3種 ,如下:

               #  smbpasswd:使用smbpasswd命令為系統使用者設定Samba服務程式的密碼 

               #  tdbsam:建立資料庫檔案並使用pdbedit命令建立Samba服務程式的使用者 

               #  ldapsam:基於LDAP服務進行賬戶驗證

==============================================================

            load printers = yes                # 設定在Samba服務啟動時是否共享印表機裝置,儲存預設即可!

            cups options = raw                # 印表機的選項,儲存預設即可!

溫馨提醒:

建立Samba使用者時,本地必須存在此使用者,但是Samba密碼可以與系統密碼不一致。

建立兩個作為Samba測試使用者

[root@lhh ~]# useradd -s /sbin/nologin test1

[root@lhh ~]# useradd -s /sbin/nologin test2

#  /sbin/nologin:表示此使用者不可以登入系統,可以作為服務使用者使用

=================================================

[root@lhh ~]# echo 123456 | passwd –stdin test1

[root@lhh ~]# echo 123456 | passwd –stdin test2

#  設定兩個測試使用者密碼為:123456

如果沒有 smbpasswd 這個命令,則需要安裝命令

[root@lhh ~]# yum whatprovides   */smbpasswd                  # 查詢命令相關的包

samba-client-4.1.1-31.el7.x86_64 : Samba client programs

[root@lhh ~]# yum install samba-client  -y                            # 安裝命令

將兩個使用者新增到Samba服務裡

[root@lhh ~]# smbpasswd -a test1              # -a:新增使用者

New SMB password:                                    # 設定 test1 密碼

Retype new SMB password:                        # 再次確認密碼

Added user test1.                                        # 新增使用者完成

[root@lhh ~]# smbpasswd  -a  test2            # 繼續新增test2

New SMB password:

Retype new SMB password:

Added user test2.

=============================================

 命令說明:#   smbpasswd   [選項]    使用者名稱

# -a:新增使用者

# -d:禁用使用者

# -e:啟用使用者

# -x:刪除使用者

=======================================

[root@lhh ~]# pdbedit -L                               # 檢視Samba的使用者

test1:1001:

test2:1002:

繼續註釋說明主配置檔案

 ————- 配置檔案重要的條目註釋說明  —————-

[homes]                                                                       # 共享引數

          comment = Home Directories                           # 描述資訊

          browseable = no                                              # 指定共享資訊是否在“網路上的芳鄰”中可見

          writable = yes                                                  #  定義是否可以執行寫入操作,與“read only”相反

===============================================================

[printers]                                                                      # 印表機共享引數

           comment = All Printers

           path = /var/spool/samba                                  # 共享檔案的實際路徑(重要)。

           browseable = no

           guest ok = no                                                   # 是否所有人可見,等同於”public”引數。

           writable = no

           printable = yes

我們瞭解完Samba配置檔案的引數後,開始共享目錄測試

[root@lhh ~]# mkdir /aaa                                         # 建立一個 aaa目錄作為共享

[root@lhh ~]# vim /etc/samba/smb.conf                  # 編輯主配置檔案,在底部編輯條目將aaa共享出去

——————– 省略部分輸出資訊 ————————

[aaa-test]                                   # 共享名稱,可以隨意定義

        comment = aaa-test          # 描述名稱,可以隨意定義

        path = /aaa                       # 共享的路徑

===========================================

[root@lhh ~]# systemctl restart smb            # 重啟Samba服務

Windows訪問測試


雖然可以訪問samba-server的共享了,但是無訪問裡面的目錄!

[root@lhh ~]# chcon -R -t samba_share_t /aaa/                                # 修改上下文,就可以訪問共享目錄了

[root@lhh ~]# setsebool -P samba_enable_home_dirs on              # 開啟家目錄的bool值

此時就可以訪問裡面的內容


此時我們想建立檔案發現沒許可權!


 

檢查思路:

1、檢查配置檔案

[root@lhh ~]# vim /etc/samba/smb.conf                # 進入主配置檔案

———————– 省略部分輸出資訊 ———————————-

[aaa-test]                                      # 共享名稱,可以隨意定義

        comment = aaa-test            # 描述名稱,可以隨意定義

        path = /aaa                           # 共享的路徑

        writable = yes                       # 可寫許可權

=============================================

[root@lhh ~]# systemctl restart smb            # 重啟Samba服務

# 發現還是無法建立

2、檢查檔案系統許可權

[root@lhh ~]# ls -ld /aaa/                                      # 檢視共享目錄許可權,發現test1沒有可寫許可權!

drwxr-xr-x. 2 root root 6 8月  13 20:16 /aaa/

[root@lhh ~]# chmod  o+w  /aaa/                        # 給其他使用者加上可寫許可權,因為test1是屬於其他使用者

此時兩個使用者都可以正常有寫的許可權


 

訪問控制設定

一、自定義使用者寫的許可權

[root@lhh ~]# vim /etc/samba/smb.conf                # 進入主配置檔案

—————- 省略部分輸出資訊 ———————-

[aaa-test]                                  # 共享名稱,可以隨意定義

        comment = aaa-test        # 描述名稱,可以隨意定義

        path = /aaa                        # 共享的路徑

        writable = no                     # 可寫許可權

        write list = test1                # 指定某個使用者可寫,如需要多個使用者格式為:test,test2……….

=========================================================

[root@lhh ~]# systemctl restart smb            # 重啟Samba服務

Windows使用的是:test1使用者


 

 

Linux使用的是:test2使用者

[root@mail ~]# yum install samba-client -y                # 安裝Samba客戶端

[root@mail ~]# smbclient //192.168.115.201/aaa-test -U test2%123456    

———————– 命令註釋 ————————

# //192.168.115.201/aaa-test:共享IP地址+ 共享名稱

# test2%123456:使用者為:test2;密碼為:123456

——————– 輸出資訊 ——————

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 4.1.1]

smb: > mkdir test2                 # 建立目錄    

NT_STATUS_MEDIA_WRITE_PROTECTED making remote directory   est2       # test2是沒有許可權無法建立

二、自定義使用者瀏覽的許可權

[root@lhh ~]# vim /etc/samba/smb.conf                # 進入主配置檔案

————- 省略部分輸出資訊 ———————-

[aaa-test]                                  # 共享名稱,可以隨意定義

        comment = aaa-test        # 描述名稱,可以隨意定義

        path = /aaa                       # 共享的路徑

        writable = no                     # 可寫許可權

        write list = test1                 # 指定某個使用者可寫

        browseable = no                # 拒絕所有使用者瀏覽共享目錄,增加條目

==================================================

[root@lhh ~]# systemctl restart smb            # 重啟Samba服務

Linux客戶端瀏覽不了共享目錄

[root@mail ~]# smbclient  -L  //192.168.115.201/  -U  test2%123456

————— 省略了輸出資訊 ——————-

    test2           Disk      Home Directories

#   此時就無法瀏覽aaa-test目錄,只能看見test2家目錄

Windows客戶端也瀏覽不了共享目錄


 

接下來我們就自定義某個使用者可以瀏覽共享目錄

———— 省略輸出資訊,跳到配置檔案90行左右,新增條目 ————

[global]

89         workgroup = WORKGROUP                          # 儲存預設          

90         server string = Samba Server Version %v    # 儲存預設   

91         config file = /etc/samba/smb.conf.%U           # 新增此條目

=====================   新增的條目簡單註釋  =============

# 哪個使用者登入過來的時候,回去看/etc/samba/有沒有 smb.conf.使用者名稱 的配置檔案

# 如果有,則使用自己字尾名的配置檔案

# 如果沒有,則使用 /etc/samba/smb.conf 主配置檔案

[root@lhh ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.test1

# 將主配置檔案複製一份作為test1的配置檔案

[root@lhh ~]# vim /etc/samba/smb.conf.test1        # 編輯test1生成的配置檔案

——————– 省略輸出資訊,直接跳到底端 ———————-

 [aaa-test]

         comment = aaa-test

         path = /aaa

         writable = no

         write list = test1

         browseable = yes                # 原本是:no;修改為:yes

此時 Windows可以看得到共享目錄


 

但是Linux客戶端瀏覽不了共享目錄,就實現了自定義瀏覽控制

[root@mail ~]# smbclient  -L  //192.168.115.201/  -U  test2%123456

—————– 省略了輸出資訊 ———————–

    test2           Disk      Home Directories

[root@lhh ~]# ls /etc/samba/

lmhosts  smb.conf  smb.conf.test1

—————— 最後整體的解釋 ———————-

#  因為上面主配置檔案新增了:config file = /etc/samba/smb.conf.%U

#  當test1訪問Samba時,會使用自己字尾名的配置檔案smb.conf.test1

#  test1 不會使用主配置檔案,自己的配置檔案時允許可以瀏覽的,所以就可以瀏覽共享目錄

#  test2 沒有自己的配置檔案,只能使用主配置檔案( smb.conf),但是主配置檔案是拒絕所有使用者瀏覽的,所有無法瀏覽

 

三、自定義IP地址訪問

[root@lhh ~]# vim /etc/samba/smb.conf                # 進入主配置檔案

————— 省略部分輸出資訊 ———————–

[aaa-test]                                 

        comment = aaa-test      

        path = /aaa                     

        writable = yes                   

        hosts allow = 192.168.x.x                       # 如果增加這條目,只允許某個IP地址訪問

#      hosts deny = 192.168.x.x                       # 如果增加這條目,只拒絕某個IP地址訪問

 

#  接下來我們只測試允許的條目,拒絕的同理

Windows-IP地址115.1,無法訪問


 

Linux-IP地址為:115.202-成功訪問

[root@mail ~]# smbclient //192.168.115.201/aaa-test -U test2%123456

—————- 省略部分輸出資訊 ————–

  111                                 D        0  Mon Aug 13 21:18:33 2018

  222                                 D        0  Mon Aug 13 21:18:37 2018

#  Linux是可以正常訪問的

# 到此已經完成Samba的基本配置和自定義控制了

 

相關文章