實現的是Linux和Windows之間的一種共享--samba


samba 基本配置及自定義控制

https://www.cnblogs.com/l-hh/p/9473937.html

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 \test2 # 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的基本配置和自定義控制了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM