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個軟件包組成
- Samba(服務端軟件包)
包含了samba的主要daemon檔案(smbd及nmbd)、samba的文件檔(document)、以及其他與samba相關的logrotate設定文件及開機預設選項檔案等。 - Samba-common(公用軟件包)
主要提供了SAMBA的主要設定檔(smb.conf)、smb.conf語法檢驗的測試程序(testparm)等等。 - 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客戶端進行訪問了。