Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它爲局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。通過設置“NetBIOS over TCP/IP”使得Samba不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。
實驗準備
操作系統: linux Redhat6.5作爲服務器、Windows7作爲客戶端
Samba文件共享服務搭建步驟
1.安裝Samba軟件包,並備份配置文件
mount /dev/sr0 /mnt
rpm -ivh /mnt/Packages/samba-3.6.9-164.el6.x86_64.rpm
cd /etc/samba
mv smb.conf smb.conf.bak #先備份配置文件,以防出錯無法恢復
grep -v "#" smb.conf.bak > smb.conf #反向過濾配置文件中帶有“#“的掉無用的註釋內容,重定向到smb.conf文件中
2.設置可匿名訪問的共享
2.1 創建共享文件夾,並更改文件夾的屬性,以便於所有人都能操作
mkdir /opt/abc
chmod 777 /opt/abc
2.2 修改配置文件
vim /etc/samba/samba.conf
security = share #安全級別改爲share,登陸的匿名用戶名爲nobody
[share] #共享目錄的名稱
path=/opt/abc #共享目錄在服務器中對應的路徑
public=yes #是否允許所有人訪問等效於guest ok
browseable=yes #允許訪問,使共享目錄在客戶端的網上鄰居中可見
writable=yes #允許寫入,代表所有人,於read only的作用相反
create mask=0644 #用戶上傳的文件的默認權限
directory mask=0755 #創建子目錄的默認權限
2.3 設置完成之後,開啓服務,關閉防火牆和增強型安全功能
service smb start
service iptables stop
setenforce 0
2.4 匿名帳戶測試
3.設置需本地用戶驗證的共享
3.1 創建共享文件夾
mkdir /opt/bendi
chmod 777 /opt/bendi
3.2 修改配置文件
vim /etc/samba/samba.conf
security = user #本地用戶訪問改爲user
[bendi]
path=/opt/bendi
browseable=yes
create mask=0644
directory mask=0755
valid users=zhangsan,lisi #只允許指定用戶登錄
write list=lisi #只允許指定用戶寫入
3.3 設置smb密碼
smbpasswd -a zhangsan #設置smb密碼
smbpasswd -a lisi
smbpasswd –L #查看smb中的用戶
3.4 重啓服務
service smb restart
3.5 本地用戶測試
在使用本地用戶登陸之後,由於Windows7系統的緩存機制,所以需要使用系統命令提示符cmd輸入net use * /d命令清理緩存後再次輸入地址登陸lisi賬戶
4.設置賬戶映射虛擬用戶
4.1創建共享文件夾
mkdir /opt/username
chmod 777 /opt/username
4.2 修改賬戶的映射文件
vim /etc/samba/smbusers
zhangsan = u01 u02 u03 #在末尾添加共享賬戶映射的別名
4.3 修改配置文件
vim /etc/samba/samba.conf
[global]
security = user
username map=/etc/samba/smbusers #在全局配置項添加
[username]
path=/opt/username
browseable=yes
create mask=0644
directory mask=0755
valid users=zhangsan
write list=zhangsan
4.4 重啓服務
service smb restart
4.5 虛擬賬戶測試
5.訪問地址限制
vim /etc/samba/samba.conf
#一般應用於全局配置[glodal]部分,也可以應用於某個具體的共享配置段部分
hosts deny = 192.168.10 192.168.20 #省去主機部分,黑名單
hosts allow = #白名單
#兩種方式任選其中一種即可
補充:
Samba服務的日誌文件位於 /etc/log/samba/ 目錄中
netstat -anptu | grep “smbd” #查看Samba服務的網絡連接狀態
smbd程序負責監聽TCP協議的139端口(SMB協議)、445端口(CIFS協議)
nmbd服務程序負責監聽UDP協議的137-138端口(NetBIOS協議)