1. 程式人生 > >Linux 服務器搭建之Samba服務

Linux 服務器搭建之Samba服務

空行 環境 文件中 方便 兩個 cto mask 訪問服務器 找到

Linux 服務器搭建之Samba服務

一、Samba服務基礎

Samba是著名的開源軟件項目之一,它在Linux/UNIX系統中實現了微軟的SMB/CIFS網絡協議,從而使得跨平臺的文件共享變得更加容易。在部署Windowslinux/UNIX混合平臺的企業環境時,選用Samba可以很好地解決不同系統之間的文件互訪問題。


1Samba軟件的組成

1.1)Samba軟件包的構成

RHEL6.5系統的DVD安裝光盤中可以找到與Samba相關的幾個軟件包,主要包括服務端軟件Samba、客戶端軟件samba-client,用於提供服務端和客戶端程序的公共組件samba-common

大部分軟件包已經隨RHEL6.5

系統默認安裝好了,用戶可以查詢系統中samba相關軟件包的安裝情況。

[root@twgdh ~]# rpm -qa |  grep "^samba"
samba-client-3.6.9-164.el6.x86_64       ……//samba服務器軟件包
samba-common-3.6.9-164.el6.x86_64        ……//samba通用工具和庫文件
samba-3.6.9-164.el6.x86_64                ……//samba提供服務器程序文件
samba-winbind-3.6.9-164.el6.x86_64         ……//它允許Linux/UNIX系統利用Windows NT的用戶帳號信息。
samba4-libs-4.0.0-58.el6.rc4.x86_64          ……//samba相關依賴包
samba-winbind-clients-3.6.9-164.el6.x86_64

只需要從RHEL6.5光盤中找到安裝包文件samba-3.6.9-164.elb.x86_64.rpm並進行安裝即可。


1.2)、Samba服務的程序組件

Samba服務器提供smbdnmbd兩個服務程序,分別完成不同的功能。其中,smbd負責為客戶機提供服務器中共享資源(目錄和文件等)的訪問;nmbd負責提供基於NetBIOS協議的主機名稱解析,以便為Windows網絡中的主機進行查詢服務。

安裝好samba軟件包以後,在RHEL6.5系統中會添加名為smbnmb的標準系統服務,管理員可以通過service工具來控制Samba服務的啟動與終止。

[root@twgdh ~]# service smb start
啟動 SMB 服務:                                            [確定]
[root@twgdh ~]# service nmb start
啟動 NMB 服務:                                            [確定]


使用netstat命令可以驗證服務進程狀態,其中smbd程序負責監聽TCP協議的139端口(SMB協議)、445端口(CIFS協議),而nmbd服務程序負責監聽UDP協議的137~138端口(NetBIOS協議)。


2、主配置文件smb.conf

Samba服務的配置文件位於/etc/samba/目錄中,其中smb.conf是主配置文件。在smb.conf文件中,以“#”號開始的行表示註釋性的文件,以“;”開始的行表示是位置樣例。在配置共享文件夾時,用戶可以參考文件中提供的樣例行進行設置。刪除註釋行、樣例行及空行以外的內容,才是Samba服務器的有效配置。例如,使用grep命令可以過濾出smb.conf文件中的有效配置。

[root@twgdh ~]# grep -v "#" /etc/samba/smb.conf | grep -v "^;" | grep -v "^$"
 [global]
      workgroup = MYGROUP
      server string = Samba Server Version %v   
      log file = /var/log/samba/log.%m
      max log size = 50
security = user
      passdb backend = tdbsam
      load printers = yes
      cups options = raw
[homes]
      comment = Home Directories
      browseable = no
      writable = yes
[printers]
      comment = All Printers
      path = /var/spool/samba
      browseable = no
      guest ok = no
      writable = no
      printable = yes


從以上內容可以看出,smb.conf文件中的配置內容默認包括以下三部分。


[global] 全局設置:這部分配置項的內容對整個Samba服務器都有效。


[homes] 宿主目錄共享設置:設置Linux用戶的默認共享,對應用戶的宿主目錄。當用戶訪問服務器中與自己同名的共享目錄時,通過驗證後將會自動映射到該用戶的宿主文件夾中。


[printers] 打印機共享位置:如果需要共享打印機設備,可以在這部分進行配置。

若需要在smb.conf文件中設置新的共享文件夾,只需要增加一段如“[myshare]”開始的共享設置即可,其中“myshare”為用戶自定義的共享名。新的共享文件夾設置可以參考“[homes]”和“[printers]”部分內容。

Samba服務器的常見配置項及含義說明

配置項

設置服務器所在的工作組名稱。

server string

設置服務器的說明文字

security

設置服務器的安全級別,可設為以下四個值中的一個:share(可匿名訪問)、user(需由本服務器驗證用戶名及密碼)、server(需指定另一臺服務器來驗證用戶名及密碼)、domain(由Windows域控制器驗證用戶名及密碼)

log file

設置Samba服務器的日誌文件,默認設置為“/var/log/samba/log.%m”,表示將日誌文件保存到/var/log/samba/目錄中,按每個客戶機建立一個日誌文件,其中“%m”變量表示客戶端主機名或IP地址

comment

設置對應共享目錄的註釋、說明信息

path

設置對應共享目錄在服務器中的文件夾路徑

browseable

設置該共享目錄在“網上鄰居”中是否可見,設置為no時相當於影藏共享目錄

guest ok

設置是否所有人都可以訪問共享目錄,與“public”配置項的作用相同

writable

設置該共享目錄是否可寫,與“read only”配置項的作用相反

passwd backend

設置共享賬戶文件的類型,默認使用tdbsamTDB數據庫文件)。若網絡內擁有LDAP目錄認證,這裏可以改用ldapsam數據庫文件;另外,若要兼容舊版的Samba密碼文件,也可以將類型設為smbpasswd

Samba服務器提供了一個配置文件檢查工具—testparm程序,使用testparm工具可以對smb.conf配置文件的真確性進行檢查。


二、構建文件共享服務

1、構建可匿名的共享

可匿名訪問的共享使用於公開的資源分享,一般只建議提供只讀訪問。由於匿名共享不需要驗證用戶名和密碼(或允許提供任意用戶名、密碼)就可訪問,在安全性要求不高的情況下,可以非常方便、快捷地與其他主機共享資源。

設置匿名共享文件夾時,在主配置文件smb.conf中主要調整兩個地方即可:其一,可以將默認的安全級別修改為share;其二,添加一段共享目錄配置。其他配置項根據實際需要進行更改。

例如,若要將本地掛載的光盤目錄/media/發布為共享文件夾,共享名為rhel6,可以參照以下步驟進行設置。

[root@twgdh ~]# mount /dev/cdrom /media/      ……//掛載rhel6.5的dvd光盤
[root@twgdh ~]# vim /etc/samba/smb.conf
[global]
            workgroup = MYGROUP          ……//使用Windows主機的默認工作組
      security = share                   ……//默認允許匿名訪問
……//省略部分內容
[rhel6]                                  ……//用戶訪問共享時顯示的文件名
      comment = RHEL 6.5 DVD directory   ……//註釋內容,隨便寫
      path = /media/                     ……//指定真實共享目錄存儲的位置
      public = yes                       ……//是否為公共的
      read only = yes                    ……//只讀
[root@twgdh ~]# service smb reload
重新載入 smb.conf 文件:                                   [確定]


配置完畢後,就可以從Windows客戶機或Linux客戶機中瀏覽並匿名訪問此共享了。

註意需要關閉iptablesSelinux

2、構建需要用戶驗證的共享

匿名共享雖然用起來非常方便,但因為任何人都可以訪問到共享的文件數據,在某些時候可能會導致信息的泄露。

設置用戶驗證的共享文件夾時,在主配置文件smbl.conf中同樣需要調整兩個地方:其一,將默認的安全級別修改為share;其二,添加共享目錄配置,指定用戶權限。在此之前,還需要先創建授權的共享賬戶。

2.1)、建立Samba用戶數據庫

為了區別於Linux主機中的系統用戶,通常將用於訪問Samba共享資源的用戶成為共享用戶。Samba服務器使用獨立的共享賬號數據庫文件,其中的賬號名稱必須有與它同名的系統用戶相對應,以便主機對共享訪問的讀寫權限進行控制;但共享用戶的密碼時額外設置的,可以與系統用戶的密碼不一樣。

Samba共享用戶的賬號數據庫文件默認位於/var/lib/samba/private/passdb.tdb,是一個經過加密的文件,其中保存了Samba用戶的賬號名稱、登錄密碼、賬號可用狀態等信息。使用pdbedit工具可以對共享用戶進行管理。

[root@twgdh ~]# useradd vina            ……//先添加系統用戶vina
[root@twgdh ~]# pdbedit -a -u vina      ……//再添加共享用戶vina
new password:                           ……//設置共享用戶vina的密碼
retype new password:                    ……//重復輸入密碼進行確認
Unix username:        vina
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-3721989042-1553083320-1330393282-1000
Primary Group SID:    S-1-5-21-3721989042-1553083320-1330393282-513
……//省略部分內容


當指定的Samba用戶不再需要使用時,可以通過pdbedit工具進行刪除,只要結合“-x”選項並指定Samba用戶的名稱即可,“-L”選項用來列出所有Samba用戶,“-v”選項可以輸出更詳細的內容。

2.2)、設置用戶訪問授權

若要使用用戶驗證的Samba共享,應將security安全級別提升為“user”。共享目錄的用戶授權設置主要由“valid users”、“write list”配置項指定。當需要授權多個共享用戶時,以逗號或空格進行分隔。如果需要授權一個用戶組,可以使用“@組名”的形式,但需要為組內的每個系統用戶都創建對應的Samba共享用戶。

例如,若要將本地目錄/opt/mytools/發布為共享文件夾,共享名為tools,要求只有共享用戶vankohunter能夠訪問,其中hunter用戶具有寫入權限,可以參照以下步驟。

創建共享用戶vankohunter,確認共享目錄。

[root@twgdh ~]# useradd vanko
[root@twgdh ~]# useradd hunter
[root@twgdh ~]# pdbedit -a -u vanko
[root@twgdh ~]# pdbedit -a -u hunter
[root@twgdh ~]# mkdir /opt/mytools


修改smb.conf配置文件,添加名為tools的共享目錄配置段。

[root@twgdh ~]# vim /etc/samba/smb.conf
[global]
        security = user           ……//提升默認的安全級別
[tools]
        comment = zhe shi bei zhu!!  ……//備註
        path = /opt/mytools               ……//文件路徑
        public = no                      ……//是否為公共的
        read only = yes                ……//是否為只讀的
        valid users = vanko,hunter           ……//設置指定用戶可以進行訪問
        write list = hunter            ……//指定可以寫入的用戶


重新加載smb.conf文件中的配置,或重啟smb服務。

[root@twgdh ~]# service smb reload
重新載入 smb.conf 文件:                                   [確定]


2.3)、確定目錄訪問授權

通過Samba服務器共享本地的文件夾時,用戶最終是否擁有讀取、寫入權限,除了需要設置用戶授權以外,還要滿足一個前提條件在服務器本集中,與共享用戶同名的系統用戶對發布為共享的本地文件夾(如/opt/mytools)必須要有相應的讀取、寫入權限。

因此,在上一步驟的例子中,還需要調整/opt/mytools目錄的權限,使vanko用戶能夠讀取,hunter用戶能夠寫入。這裏為了做實驗方便,將/opt/mytools文件夾的權限設置為777

[root@twgdh ~]# chmod 777 /opt/mytools/


另外,當通過共享目錄上傳文檔時,對於共享用戶所上傳的文件,創建子目錄的默認權限可以分別使用配置項“directory mask”、“create mask”進行指定。例如,若要使用戶訪問tools共享時,所上傳的目錄的默認權限為755,文件的默認全向為644,可以參考以下步驟在[tools]配置段添加相關內容。

[toools]
 directory mask = 0755               ……//創建目錄默認權限
     create mask = 0644              ……//創建文件默認權限
[root@twgdh ~]# service smb reload
重新載入 smb.conf 文件:                                   [確定]


重載服務之後即可使用,在客戶機上登錄使用!


Linux 服務器搭建之Samba服務