Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。
環境:Win7_64位+VMware11+Ubuntu1204
一,同其他網絡服務一樣,使用Samba服務必須要保證服務器與客戶端能夠聯網,即能夠ping通,否則請先調試網絡。
二,如果使用的是Ubuntu1204以前的版本,建議先卸載samba,smbclient,samba-common。
1 sudo apt-get remove samba-common
2 sudo apt-get remove smbclient
3 sudo apt-get remove samba
下載安裝Samba服務:
1 sudo apt-get install samba
2 sudo apt-get install samba-common
3 sudo apt-get install smbfs //在舊版的Ubuntu中,你可能需要使用 smbfs替代cifs-utils。
4 sudo apt-get install cifs-utils //新版本 ubuntu1204已安裝
注:如果在安裝samba過程中出現錯誤
samba : Depends: libwbclient0 (= 2:3.6.3-2ubuntu2) but 2:3.6.3-2ubuntu2.3 is to be installed
則卸載後重新安裝samba
sudo apt-get remove libwbclient0 samba-common samba
sudo apt-get install samba //apt-get會自動補全依賴包
三,創建共享目錄
sudo mkdir /home/share
sodu chmod 777 /home/share
四,開始配置/etc/samba/smb.conf
1. 保存現有的配置文件
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
2. 修改現配置文件
sudo vi /etc/samba/smb.conf
3. 在smb.conf最後添加
[share]
【共享屬性詳解】
comment = 任意字符串
說明:comment是對該共享的描述,可以是任意字符串。
path = 共享目錄路徑
說明:path用來指定共享目錄的路徑。可以用%u、%m這樣的宏來代替路徑裡的unix用戶和客戶機的Netbios名,用宏表示主要用於[homes]共享域。例如:如果我們不打算用home段做為客戶的共享,而是在/home/share/下為每個Linux用戶以他的用戶名建個目錄,作為他的共享目錄,這樣path就可以寫成:path = /home/share/%u; 。用戶在連接到這共享時具體的路徑會被他的用戶名代替,要注意這個用戶名路徑一定要存在,否則,客戶機在訪問時會找不到網絡路徑。同樣,如果我們不是以用戶來劃分目錄,而是以客戶機來劃分目錄,為網絡上每台可以訪問samba的機器都各自建個以它的netbios名的路徑,作為不同機器的共享資源,就可以這樣寫:path = /home/share/%m 。
browseable = yes/no
說明:browseable用來指定該共享是否可以浏覽。
writable = yes/no
說明:writable用來指定該共享路徑是否可寫。
available = yes/no
說明:available用來指定該共享資源是否可用。
admin users = 該共享的管理者
說明:admin users用來指定該共享的管理員(對該共享具有完全控制權限)。在samba 3.0中,如果用戶驗證方式設置成“security=share”時,此項無效。
例如:admin users =bobyuan,jane(多個用戶中間用逗號隔開)。
valid users = 允許訪問該共享的用戶
說明:valid users用來指定允許訪問該共享資源的用戶。
例如:valid users = bobyuan,@bob,@tech(多個用戶或者組中間用逗號隔開,如果要加入一個組就用“@+組名”表示。)
invalid users = 禁止訪問該共享的用戶
說明:invalid users用來指定不允許訪問該共享資源的用戶。
例如:invalid users = root,@bob(多個用戶或者組中間用逗號隔開。)
write list = 允許寫入該共享的用戶
說明:write list用來指定可以在該共享下寫入文件的用戶。
例如:write list = bobyuan,@bob
public = yes/no
說明:public用來指定該共享是否允許guest賬戶訪問。
guest ok = yes/no
說明:意義同“public”。
注:如果不習慣使用配置文件,也可以使用圖形界面
安裝Ubuntu samba圖形管理界面
sudo apt-get install system-config-samba
啟動samba圖形管理界面
sudo system-config-samba
五. 創建samba帳戶
sudo touch /etc/samba/smbpasswd
然後會要求你輸入samba帳戶的密碼
[如果沒有這一步,當你登錄時會提示 session setup failed: NT_STATUS_LOGON_FAILURE]
smbpasswd 命令的用法:
smbpasswd -a 增加用戶(要增加的用戶必須以是系統用戶)
smbpasswd -d 凍結用戶,就是這個用戶不能在登錄了
smbpasswd -e 恢復用戶,解凍用戶,讓凍結的用戶可以在使用
smbpasswd -n 把用戶的密碼設置成空,要在global中寫入 null passwords -true
smbpasswd -x 刪除用戶
六,配置完成後要重啟samba
sudo /etc/init.d/smbd restart
七,測試及使用
測試:輸入smbclient -L //localhost/share
使用:到windows在文件夾處輸入 "\\" + "Ubuntu機器的ip或主機名" + "\\" + "share"
高級:用戶賬號映射
samba的用戶帳號信息是保存在smbpasswd文件中滴,而且可以訪問samba服務器的帳號也必須對應一個同名的系統帳號。基於這 一點,所以,對於一些hacker來說,只要知道samba服務器滴samba帳號,就等於是知道了Linux系統帳號,只要crack其samba帳號密碼加以利用就可以攻擊samba服務器。所以我們要使用用戶帳號映射這個功能來解決這個問題。
用戶帳號映射這個功能需要建立一個帳號映射關系表,裡面記錄了samba帳號和虛擬帳號的對應關系,客戶端訪問samba服務器時就使用虛擬來登錄。
1)編輯主配置文件vi /etc/samba/smb.conf
在global下添加一行字段username map = /etc/samba/smbusers開啟用戶帳號映射功能。
2)編輯 vi /etc/samba/smbusers
smbusers文件保存帳號映射關系,其有固定滴格式:
samba帳號 = 虛擬帳號(映射帳號)
myname = networkusername
帳號myname就是我們上面建立的samba帳號(同時也是Linux系統帳號),networkusername就是映射的帳號名(虛擬帳號),帳號 myname在我們訪問共享目錄時只要輸入networkusername就可以成功訪問了,但是實際上訪問samba服務器的還是我們的myname帳號,這樣一來就解決了安全問題。