Samba是在Linux和UNIX系統(tǒng)上實現(xiàn)SMB協(xié)議的一個免費軟件,由服務(wù)器及客戶端程序構(gòu)成。
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、安居ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的安居網(wǎng)站制作公司
在此之前我們已經(jīng)了解了NFS和FTP,NFS與samba一樣,也是在網(wǎng)絡(luò)中實現(xiàn)文件共享的一種實現(xiàn),但不幸的是,其不支持windows平臺,而本章要提到的samba是能夠在任何支持SMB協(xié)議的主機之間共享文件的一種實現(xiàn),當然也包括windows。
SMB(Server Messages Block,信息服務(wù)塊)是一種在局域網(wǎng)上共享文件和打印機的一種通信協(xié)議,它為局域網(wǎng)內(nèi)的不同計算機之間提供文件及打印機等資源的共享服務(wù)。
SMB協(xié)議是C/S型協(xié)議,客戶機通過該協(xié)議可以訪問服務(wù)器上的共享文件系統(tǒng)、打印機及其他資源。
通過設(shè)置“NetBIOS over TCP/IP”使得Samba不但能與局域網(wǎng)主機分享資源,還能與全世界的電腦分享資源。
Samba監(jiān)聽端口有:
tcp的139,445號端口
udp的137,138號端口
tcp端口相對應(yīng)的服務(wù)是smbd服務(wù),其作用是提供對服務(wù)器中文件、打印資源的共享訪問
udp端口相對應(yīng)的服務(wù)是nmbd服務(wù),其作用是提供基于NetBIOS主機名稱的解析
Samba服務(wù)腳本:
/etc/rc.d/init.d/nmb
/etc/rc.d/init.d/smb
Samba進程:
nmbd:對應(yīng)netbios
smbd:對應(yīng)cifs協(xié)議
winbindd + ldap:對應(yīng)Windows AD活動目錄
Samba用戶:
帳號:都是系統(tǒng)用戶,/etc/passwd
密碼:Samba服務(wù)自有密碼文件,通過smbpasswd -a USERNAME命令設(shè)置
Samba安全級別:
Samba服務(wù)器的安全級別有四個,分別是share,user,server,domain
share:表示匿名訪問
user:表示基于本地的驗證
server:表示由另一臺指定的服務(wù)器對用戶身份進行認證
domain:表示由域控進行身份驗證
Samba配置文件:/etc/samba/smb.conf
Samba主配置文件的配置內(nèi)容默認包含三個部分,分別是[global]全局配置、[homes]宿主目錄共享設(shè)置、[printers]打印機共享設(shè)置
[global]全局配置的設(shè)置項對整個samba服務(wù)器都有效
[homes]則用來設(shè)置Linux用戶的默認共享,對應(yīng)用戶的宿主目錄。當用戶訪問服務(wù)器中與自己用戶名同名的共享目錄時,通過驗證后將會自動映射到該用戶的宿主目錄中
具體配置參數(shù):
workgroup #表示設(shè)置工作組名稱; server string #表示描述samba服務(wù)器; security #表示設(shè)置安全級別,其值可為share、user、server、domain; passdb backend #表示設(shè)置共享帳戶文件的類型,其值可為tdbsam(tdb數(shù)據(jù)庫文件)、ldapsam(LDAP目錄認證)、smbpasswd(兼容舊版本samba密碼文件); comment #表示設(shè)置對應(yīng)共享目錄的注釋,說明信息,即文件共享名; browseable #表示設(shè)置共享是否可見; writable #表示設(shè)置目錄是否可寫 path #表示共享目錄的路徑; guest ok #表示設(shè)置是否所有人均可訪問共享目錄; printable #表示設(shè)置是否為打印機
測試配置文件是否有語法錯誤,以及顯示最終生效的配置:使用testparm命令
testparm
web界面配置samba:
samba-swat包提供了在web界面上配置samba的功能,其自帶web服務(wù),默認端口為901,通過xinetd來管理
Samba訪問方式:作為客戶端
交互式數(shù)據(jù)訪問:
smbclient -L HOST -U USERNAME smbclient //SERVER/shared_name -U USERNAME
基于掛載的方式訪問:
mount -t cifs //SERVER/shared_name -o username=USERNAME,password=PASSWORD
smbpasswd命令:
-a Sys_User:添加系統(tǒng)用戶為samba用戶并為其設(shè)置密碼
-d:禁用用戶帳號
-e:啟用用戶帳號
-x:刪除用戶帳號
Samba示例:
#使用yum命令安裝samba服務(wù)器: yum -y install samba-* #配置selinux安全機制(去除26行與29行的#號): sed -i '26d' /etc/samba/smb.conf sed -i '25 a setsebool -P samba_domain_controller on' /etc/samba/smb.conf sed -i '29d' /etc/samba/smb.conf sed -i '28 a setsebool -P samba_enable_home_dirs on' /etc/samba/smb.conf #這兩行生效后,自己的home目錄就可以正常讀寫了。 #如果想將/test目錄設(shè)置成完全的共享就要改變文件目錄的selunux: #chcon -t samba_share_t /test #設(shè)置共享類型,有匿名訪問,有本地用戶驗證,默認為user用戶驗證: #設(shè)置為匿名共享: #sed -i '101d' /etc/samba/smb.conf #sed -i '100 a security = share' /etc/samba/smb.conf #設(shè)置為本地用戶驗證: #sed -i '101d' /etc/samba/smb.conf #sed -i '100 a security = user' /etc/samba/smb.conf #設(shè)置為另一臺服務(wù)器進行遠程驗證: #sed -i '101d' /etc/samba/smb.conf #sed -i '100 a security = server' /etc/samba/smb.conf #設(shè)置為域控驗證: #sed -i '101d' /etc/samba/smb.conf #sed -i '100 a security = domain' /etc/samba/smb.conf #假設(shè)現(xiàn)在有一個文件夾為test,那么就像下面這樣來設(shè)置共享: #設(shè)置共享的標識: echo '[test]' >> /etc/samba/smb.conf #設(shè)置共享的顯示名,即在訪問時看到的共享名,假設(shè)這里共享名為test: echo 'comment = test' >> /etc/samba/smb.conf #設(shè)置共享路徑: echo 'path = /test' >> /etc/samba/smb.conf #設(shè)置共享是否可見: echo 'browseable = yes' >> /etc/samba/smb.conf #設(shè)置是否所有人均可訪問: echo 'guest ok = yes' >> /etc/samba/smb.conf #設(shè)置目錄是否可寫: echo 'writable = yes' >> /etc/samba/smb.conf #設(shè)置是否允許匿名用戶訪問: echo 'public = yes' >> /etc/samba/smb.conf #設(shè)置可以寫的用戶或組: echo 'write list = root,@root' >> /etc/samba/smb.conf #限制訪問端: #設(shè)置可以訪問的用戶或組: echo 'valid users = root,@root' >> /etc/samba/smb.conf #設(shè)置拒絕來自192.168.72.1的用戶訪問: echo 'hosts deny = 192.168.72.1' >> /etc/samba/smb.conf #設(shè)置允許來自192.168.72.2的用戶訪問: echo 'hosts allow = 192.168.72.2' >> /etc/samba/smb.conf #映射共享目錄: #創(chuàng)建用戶one: #useradd one #為one用戶創(chuàng)建smb共享密碼: #smbpasswd -a one #假設(shè)這里映射one用戶為aaa用戶,那么就要在/etc/samba/smbusers文件中添加如下內(nèi)容: #echo 'one = aaa' >> /etc/samba/smbusers #在全局配置中添加如下內(nèi)容: sed -i '244 a username map = /etc/samba/smbusers' /etc/samba/smb.conf #啟動smb服務(wù): #service smb start #重啟smb服務(wù): service smb restart #重新加載smb服務(wù): #service smb reload #設(shè)置smb服務(wù)隨系統(tǒng)啟動而啟動: chkconfig smb on #建立共享文件夾: mkdir /test