samba是一個實現不一樣操做系統之間文件共享和打印機共享的一種SMB協議的免費軟件。linux
samba軟件結構:ios
/etc/samba/smb.conf #samba服務的主要配置文件數據庫
/etc/samba/lmhosts #samba服務的域名設定,主要設置IP地址對應的域名,相似linux系統的/etc/hostsvim
/etc/samba/smbusers #samba服務設置samba虛擬用戶的配置文件安全
/var/log/samba #samab服務存放日誌文件服務器
/var/lib/samba/private/{passdb.tdb,secrets.tdb} #存放samba的用戶帳號和密碼數據庫文檔dom
Samba在線安裝性能
[root@VMredhat6 ~]# yum -y install samba* #yum在線安裝samba測試
[root@VMredhat6 ~]# rpm -qa | grep samba #檢查samba安裝狀況操作系統
samba-client-3.6.23-41.el6.x86_64
samba-winbind-clients-3.6.23-41.el6.x86_64
samba-3.6.23-41.el6.x86_64
samba4-libs-4.0.0-58.el6.rc4.x86_64
samba-common-3.6.23-41.el6.x86_64
samba-winbind-3.6.23-41.el6.x86_64
標註:Samab服務開啓以前須要關閉兩個服務,iptables防火牆(若是你熟悉能夠不關閉,放行smb的端口便可,SAMBA服務TCP端口139,445 UDP端口 137,138);selinux服務。
關閉防火牆:
[root@VMredhat6 ~]# /etc/init.d/iptables stop #關閉防火牆
[root@VMredhat6 ~]# chkconfig --list iptables #查看防火牆啓動狀態
[root@VMredhat6 ~]# chkconfig iptables off #關閉防火牆開機自動啓動
關閉selinux:
[root@VMredhat6 ~]# vim /etc/selinux/config #永久關閉selinux
set SELINUX=disabled #SELINUX=enforcing改成SELINUX=disabled
標註:smb.conf配置文件分爲兩大類,一個全局設置參數,一個是文件共享設置參數:
#全局設置參數
[global]
config file = /etc/samba/smb.conf.%U #可讓你使用另外一個配置文件來覆蓋缺省的配置文件。若是文件 不存在,則該項無效。
workgroup = WORKGROUP #工做組名稱
server string = Samba Server Version %v #主機的簡易說明
netbios name = MYSERVER #主機的netBIOS名稱,若是不填寫則默認服務器DNS的一部分,workgroup和netbios name名字不要設置成同樣
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 #設置samba服務器監聽網卡,能夠寫網卡名稱或IP地址,默認註釋
hosts allow = 127. 192.168.12. 192.168.13. #設置容許鏈接到samba服務器的客戶端,默認註釋
hosts deny =192.168.12.0/255.255.255.0 #設置不容許鏈接到samba服務器的客戶端,默認註釋
log level =1 #日誌文件安全級別,0~10級別,默認0
log file = /var/log/samba/%m #產生日誌文件的命名,默認以訪問者IP地址命名
max log size = 50 #日誌文件最大容量50,默認50,單位爲KB,0表示不限制
security = share #設置用戶訪問samba服務器的驗證方式 ,一共四種驗證方式。
1. share:用戶訪問Samba Server不須要提供用戶名和口令, 安全性能較低。
2. user:Samba Server共享目錄只能被受權的用戶訪問,由Samba Server負責檢查帳號和密碼的正確性。帳號和密碼要在本Samba Server中創建。
3. server:依靠其餘Windows NT/2000或Samba Server來驗證用戶的帳號和密碼,是一種代理驗證。此種安全模式下,系統管理員能夠把全部的Windows用戶
和口令集中到一個NT系統上,使用Windows NT進行Samba認證, 遠程服務器能夠自動認證所有用戶和口令,若是認證失敗,Samba將使用用戶級安全模式做爲替代的方式。
4. domain:域安全級別,使用主域控制器(PDC)來完成認證。
passdb backend = tdbsam #定義用戶後臺類型
一、smbpasswd:使用SMB服務的smbpasswd命令給系統用戶設置SMB密碼
二、tdbsam:建立數據庫文件並使用pdbedit創建SMB獨立用戶,smbpasswd –a username創建samba用戶並設置密碼,不過創建samba用戶
必須先創建系統用戶,也可使用pdbedit命令來創建samba用戶:
pdbedit –a username:新建Samba帳戶。
pdbedit –x username:刪除Samba帳戶。
pdbedit –L:列出Samba用戶列表,讀取passdb.tdb數據庫文件。
pdbedit –Lv:列出Samba用戶列表的詳細信息。
pdbedit –c 「[D]」 –u username:暫停該Samba用戶的帳號。
pdbedit –c 「[]」 –u username:恢復該Samba用戶的帳號。
三、ldapsam:基於LDAP服務進行帳戶驗證
username map = /etc/samba/smbusers #配合/etc/samba/smbusers文件設置虛擬用戶
#共享文件設置參數
[share] #自定義共享名稱
comment = This is share software #共享描述
path = /home/testfile #共享目錄路徑
browseable = yes/no #設置共享是否可瀏覽,若是no就表示隱藏,須要經過IP+共享名稱進行訪問
writable = yes/no #設置共享是否具備可寫權限
read only = yes/no #設置共享是否具備只讀權限
admin users = root #設置共享的管理員,若是security =share 時,引項無效,多用戶中間使用逗號隔開,例如admin users = root,user1,user2
valid users = username #設置容許訪問共享的用戶,例如valid users = user1,user2,@group1,@group2(多用戶或組使用逗號隔開,@group表示group用戶組)
invalid users = username #設置不容許訪問共享的用戶
write list = username #設置在共享具備寫入權限的用戶,例如例如write list = user1,user2,@group1,@group2(多用戶或組使用逗號隔開,@group表示group用戶組)
public = yes/no #設置共享是否容許guest帳戶訪問
guest ok = yes/no #功能同public 同樣
create mask = 0700 #建立的文件權限爲700
directory mode = 0700 #建立的文件目錄爲 700
1、不須要帳號密碼訪問的共享(security = share )
[root@VMredhat6 samba]# /etc/init.d/smb start #啓動samba服務
[root@VMredhat6 samba]# ls -ld /home/smbuser/ #查看共享文件權限
[root@VMredhat6 samba]# chmod 777 /home/smbuser/ #分配共享文件最大權限
[root@VMredhat6 samba]# testparm #檢查smb.conf配置文件是否有語法錯誤
[root@VMredhat6 samba]# netstat -tlnp | grep mbd #查看samba端口,TCP端口139,445 UDP端口 137,138
[root@VMredhat6 samba]# vim /etc/samba/smb.conf #設置smb.conf配置文件
[global]
workgroup = WORKGROUP #設置主機工做組
server string = Samba Server Version %v #samba服務註釋
log level = 1 #設置日誌文件安全級別爲1
log file = /var/log/samba/%m #設置日誌文件名稱,%m以IP地址爲名稱
max log size = 50 #設置日誌文件最大容量50KB,0表示不限制
security = share #以share驗證方式訪問
passdb backend = tdbsam #定義用戶後臺類型
load printers = no #關閉打印共享功能
cups options = raw #打印機選項
[usershare]
comment = Home Directories #共享文件描述
path = /home/shareuser #共享路徑
browseable = yes #共享文件能夠瀏覽
writable = yes #共享文件可寫
; read only = yes #共享文件可讀,不能與writable共用
guest ok = yes #容許guest用戶訪問
[root@VMredhat6 samba]# /etc/init.d/smb restart #重啓samba服務
測試:
Windows系統操做:
在win 7系統打開運行輸入 \\192.168.10.150 直接訪問,不須要輸入任何用戶和密碼
在linux操做須要進行掛載:
[root@VMredhat6 ~]# yum -y install samba-client #在線安裝samba-client才能使用smbclient命令
[root@VMredhat6 ~]# smbclient -L //192.168.10.150 #查看samba服務器共享目錄
[root@VMredhat6 ~]# mount -t cifs //192.168.10.150/usershare /mnt/share #掛載
2、須要輸入帳號和密碼訪問的共享(security = user)
標註:建立samba用戶以前必須先建立系統用戶,系統用戶和samba用戶名同樣,但密碼能夠設置成不同
[root@VMredhat6 samba]# useradd test01 #建立系統用戶test01
[root@VMredhat6 samba]# useradd test02 #建立系統用戶test02
[root@VMredhat6 samba]# passwd test01 #設置系統用戶test01密碼
[root@VMredhat6 samba]# passwd test01 #設置系統用戶test02密碼
[root@VMredhat6 samba]# smbpasswd -a test01 #把系統用戶test01添加爲samba用戶並設置samba用戶登陸密碼
[root@VMredhat6 samba]# smbpasswd -a test02 #把系統用戶test02添加爲samba用戶並設置samba用戶登陸密碼
[root@VMredhat6 samba]# pdbedit –L #查看samba用戶
[root@VMredhat6 samba]# mkdir /home/{smbadmin01,smbuser01} #home建立兩個共享目錄
[root@VMredhat6 samba]# chmod 777 /home/{smbadmin01,smbuser01} #目錄分配最高權限
[root@VMredhat6 ~]# vim /etc/samba/smb.conf #設置smb.conf配置文件
[global]
workgroup = WORKGROUP #設置主機工做組
server string = Samba Server Version %v #samba服務註釋
log level = 1 #設置日誌文件安全級別爲1
log file = /var/log/samba/%m #設置日誌文件名稱,%m以IP地址爲名稱
max log size = 50 #設置日誌文件最大容量50KB,0表示不限制
security = user #以user驗證方式訪問
passdb backend = tdbsam #定義用戶後臺類型
load printers = no #關閉打印共享功能
cups options = raw #打印機選項
[usershare]
comment = Home Directories #共享文件描述
path = /home/smbuser01 #共享路徑
browseable = yes #共享文件能夠瀏覽
read only = yes #共享文件可讀,不能與writable共用
valid users = test01,test02 #設置容許訪問共享用戶
[adminshare]
comment = Home Directories #共享文件描述
path = /home/smbadmin01 #共享路徑
browseable = yes #共享文件能夠瀏覽
writable = yes #共享文件可寫
create make = 0664 #設置用戶建立文件權限0664
directory make = 0775 #設置用戶建立目錄權限0775
write list = test01 #設置容許訪問共享具備寫入權限的用戶
[root@VMredhat6 samba]# /etc/init.d/smb restart #重啓samba服務
測試:
Windows系統操做:
在win 7系統打開運行輸入 \\192.168.10.150 直接訪問,輸入test01用戶和密碼
在linux操做須要進行掛載:
[root@VMredhat6 ~]# yum -y install samba-client #在線安裝samba-client才能使用smbclient命令
[root@VMredhat6 ~]# smbclient -L //192.168.10.150 #查看samba服務器共享目錄
[root@VMredhat6 ~]# mount -t cifs //192.168.10.150/usershare /mnt/share #掛載
3、特殊操做:(samba用戶映射,又稱做虛擬用戶)
上述操做是建立系統用戶再分配對應的samab用戶,經過samba用戶就能知道你的系統用戶,缺少必定的安全性。不過,
samba提供了一種方法,就是把samba用戶映射成虛擬用戶。好比linux系統建立了一個用戶user,samba把user添加爲samba用戶,
samba再把user用戶虛擬成user01,user02等用戶,一個samba用戶能夠虛擬成一個或多個虛擬用戶。這樣就能夠保證系統用戶安全性。
操做跟上述操做同樣,只是修改一些地方便可:
[root@VMredhat6 ~]# vim /etc/samba/smb.conf #設置smb.conf配置文件
security = user #以user驗證方式訪問
passdb backend = tdbsam #定義用戶後臺類型
username map = /etc/samba/smbusers #添加這行配置,開啓samba虛擬用戶配置功能
[root@VMredhat6 samba]# vim /etc/samba/smbusers #添加samba虛擬用戶
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
test01 = user01 user02 user03
[root@VMredhat6 samba]# /etc/init.d/smb restart #重啓samba服務
測試:
Windows系統操做:
在win 7系統打開運行輸入 \\192.168.10.150 直接訪問,輸入user01用戶,密碼是test01用戶密碼。