SAMBA服務器搭建筆記

SAMBA簡介

Samba是linux和unix系統上實現SMB/CIFS協議的一個免費軟件,由服務器和客戶端程序構成。而SMB是局域網支持共享文件和打印機的一種通信協議,為局域網內不同計算機之間提供文件及打印機等資源的共享服務 ,最初SMB主要是作為Microsoft的網絡通訊協議,后來一個名叫Andrew Tridgwell 的大學生將SMB通信協議應用到了Linux系統上,就形成了現在的Samba軟件。后來微軟又把 SMB 改名為 CIFS(Common Internet File System),即公共 Internet 文件系統,并且加入了許多新的功能,這樣一來,使得Samba具有了更強大的功能。

Samba最大的功能就是可以用于Linux與windows系統直接的文件共享和打印共享,Samba既可以用于windows與Linux之間的文件共享,也可以用于Linux與Linux之間的資源共享,由于NFS(網絡文件系統)可以很好的完成Linux與Linux之間的數據共享,因而 Samba較多的用在了Linux與windows之間的數據共享上面。

SMB是基于客戶機/服務器型的協議,因而一臺Samba服務器既可以充當文件共享服務器,也可以充當一個Samba的客戶端,例如,一臺在Linux 下已經架設好的Samba服務器,windows客戶端就可以通過SMB協議共享Samba服務器上的資源文件,同時,Samba服務器也可以訪問網絡中 其它windows系統或者Linux系統共享出來的文件。
Samba在windows下使用的是NetBIOS協議,如果你要使用Linux下共享出來的文件,請確認你的windows系統下是否安裝了NetBIOS協議。

組成Samba運行的有兩個服務,一個是SMB,另一個是NMB;SMB是Samba 的核心啟動服務,主要負責建立 Linux Samba服務器與Samba客戶機之間的對話, 驗證用戶身份并提供對文件和打印系統的訪問,只有SMB服務啟動,才能實現文件的共享,監聽139 TCP端口;而NMB服務是負責解析用的,類似與DNS實現的功能,NMB可以把Linux系統共享的工作組名稱與其IP對應起來,如果NMB服務沒有啟動,就只能通過IP來訪問共享文件,監聽137和138 UDP端口。
例如,某臺Samba服務器的IP地址為10.0.0.163,對應的工作組名稱為davidsamba,那么在Windows的IE瀏覽器輸入下面兩條指令都可以訪問共享文件。其實這就是Windows下查看Linux Samba服務器共享文件的方法。
  \10.0.0.163\共享目錄名稱
  \davidsamba\共享目錄名稱
  Samba服務器可實現如下功能WINS和DNS服務; 網絡瀏覽服務; Linux和Windows域之間的認證和授權; UNICODE字符集和域名映射;滿足CIFS協議的UNIX共享等。

SAMBA軟件包

SAMBA軟件由3個軟件包組成

  1. Samba(服務端軟件包)
    包含了samba的主要daemon檔案(smbd及nmbd)、samba的文件檔(document)、以及其他與samba相關的logrotate設定文件及開機預設選項檔案等。
  2. Samba-common(公用軟件包)
    主要提供了SAMBA的主要設定檔(smb.conf)、smb.conf語法檢驗的測試程序(testparm)等等。
  3. Samba-client(客戶端軟件包)
    提供了當linux作為SAMBA Client端時,所需要的工具指令,例如掛載SAMBA檔案格式的執行檔smbmount等等

SAMBA配置文件

/etc/samba/smb.conf

這是 Samba 的主要配置文件,基本上,咱們的 Samba 就僅有這個配置文件而已,且這個配置文件本身就是很詳細的說明文件了,請用 vim 去查閱它吧!主要的設定項目分為服務器的相關設定 (global),如工作組、NetBIOS 名稱與密碼等級等, 以及分享的目錄等相關設定,如實際目錄、分享資源名稱與權限等等兩大部分。

/etc/sysconfig/samba

提供啟動 smbd, nmbd 時,你還想要加入的相關服務參數。

/etc/samba/smbusers

由于 Windows 與 Linux 在管理員與訪客的賬號名稱不一致,例如 administrator (windows) 及 root(linux), 為了對應這兩者之間的賬號關系,可使用這個檔案來設定

/var/lib/samba/private/{passdb.tdb,secrets.tdb}

管理 Samba 的用戶賬號/密碼時,會用到的數據庫檔案;

/etc/samba/lmhosts

這個檔案的主要目的在對應NetBIOS name 與該主機名稱的 IP ,事實上,他有點像是 /etc/hosts 的功能!只不過這個lmhosts 對應的主機名稱是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!由于目前SAMBA 的功能越來越強大,所以通常只要您一啟動 SAMBA 時,他就能自己捉到 LAN里面的相關計算機的 NetBIOS name 對應 IP 的信息,因此,這個檔案通常可以不用設定了。

/etc/samba/smbpasswd

這個檔案預設并不存在。它是SAMBA 預設的使用者密碼對應表。當設定的 SAMBA 服務器是較為嚴密的,需要使用者輸入賬號與密碼后才能登入的狀態時,使用者的密碼預設就是放置在這里( 當然啰,您可以自行在 smb.conf 里面設定密碼放置的地方及密碼文件名,不過,我們這里都以預設的狀態來說明) 。比較需要注意的是,這個檔案因為包含了使用者的密碼,所以,當然權限方面要較為注意啦!這個檔案的擁有者需要是root ,且權限設定為 600 才行。

安裝SAMBA服務

yum -y install linux-client samba-common

配置SAMBA服務

Samba配置文件詳細分析
vim /etc/samba/smb.conf
[global]     #定義全局策略
    workgroup = MYGROUP   #定義工作組
    server string = Samba Server Version %v #服務器提示字符,默認顯示samba版本
    log file = /var/log/samba/log.%m    #定義日志文件
    max log size = 50      #定義日志文件單個文件最大容量為50KB
    security = user        #security選項將會影響客戶端訪問方式       #可以設置user、share、server、domain。User代表用戶名和密碼驗證;share代表匿名訪問;server代表基于驗證身份的訪問,賬戶信息在另一臺SMB服務器上;domain:同樣基于驗證身份驗證,賬戶信息在活動目錄中    
    passdb backend = tdbsam    #賬戶與密碼存儲方式,smbpasswd使用老的明文格式存儲賬戶及密碼;tdbsam代表基于TDB的密文格式存儲;ldapsam代表使用LDAP存儲賬戶資料。
    load printers = yes        #客戶端在10分鐘內沒有打開任何Samba資源,服務器將自動關閉回話。
    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
[common]       #共享名稱為common
    comment = Common share
    path = /common        #指定共享目錄
    valid users = tom jerry    #有效賬戶列表
    create mask = 0750        #客戶端上傳文件的默認權限
    directorymask = 0775       #客戶端創建目錄的默認權限 
    browseable = yes       #客戶端是否對所有人可見    
    writable= no          #是否允許寫入
    write list = tom       #寫權限賬戶列表
    admin users = tom       #該共享的管理員,具有完全權限
    invalid users = root bin    #禁止root與bin訪問common共享
    guest ok = no       #是否允許匿名訪問

創建SAMBA共享

創建共享目錄

[root@Samba ~]# mkdir /common #創建公共目錄common
[root@Samba ~]# chmod777 /common #給common目錄授權
[root@Samba ~]# echo "hello world!" > /common/test.txt #創建測試文件test.txt

修改配置文件

[root@Samba ~]# vim /etc/samba/smb.conf
在結尾添加以下內容

[common]      //共享名稱為common
comment = Common share  //共享注釋
path = /common      //指定共享路徑
browseable = yes        //所有人可見
guest ok = no      //拒絕匿名訪問
writeable = yes      //支持寫入數據

創建訪問賬號

[root@linux]# useradd -s /sbin/nologin smbuser //創建用戶
[root@linux]# smbpasswd -a smbuser //創建密碼
Smbpasswd命令

    –a添加賬戶并設置密碼;
    -x刪除SMB賬戶;
    -d禁用SMB賬戶;
    –e 啟用SMB賬戶;

啟動服務

最后啟動服務,便可以通過SAMBA客戶端進行訪問了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容