Centos部署Samba企業文件共享服務linux
聲明:本文參考了網上部分資料加做者實驗總結ios
目錄:web
一、Samba服務概述:數據庫
1.一、Samba的原理vim
1.二、NETBIOS協議windows
二、Samba 應用環境安全
三、samba服務bash
3.一、samba的安裝包:服務器
3.二、samba的進程文件:網絡
3.三、samba的文件:
四、主要配置文件smb.conf
4.一、samba配置簡介
4.二、Global Settings
4.2.1)設置工做組或域名稱
4.2.2)服務器描述
4.2.3)設置samba服務器安全模式
4.三、Share Definitions共享服務的定義
4.3.1)設置共享名
4.3.2)共享資源描述
4.3.3)共享路徑
4.3.4)設置匿名訪問
4.3.5)設置訪問用戶
4.3.6)設置目錄只讀
4.3.7)設置目錄可寫
五、配置一個共享資源
六、samba的命令與客戶端訪問
6.一、testparm:測試有效的exports內的屬性
6.二、pdbedit:管理smb的用戶數據庫
6.三、smbpasswd:改變samba帳戶的密碼
6.四、smbclient:unix客戶端訪問工具
6.五、掛載訪問
七、samba搭建實例
7.一、smb服務端搭建
八、修改配置文件,實戰舉例
8.一、例1:匿名共享
8.二、例2:經過用戶名和密碼共享文件。把/sales 共享出去,只有知道用戶名和密碼的同事能夠看這個共享
九、擴展參數
9.一、客戶端訪問控制
9.二、設置Samba 的權限,容許sales組能夠寫
十、使用GUI工具SWAT管理samba
一、Samba服務概述:
samba是基於smb(Server Message Block)協議的一種實現方式。Samba 最早在Linux
和Windows 兩個平臺之間架起了一座橋樑,正是因爲Samba 的出現,咱們能夠在Linux
系統和Windows 系統之間互相通訊,好比拷貝文件、實現不一樣操做系統之間的資源共享等
等,咱們能夠將其架設成一個功能很是強大的文件服務器,也能夠將其架設成打印服務器提
供本地和遠程聯機打印。
1.一、Samba的原理
1.SMB是基於NetBIOS的一個網絡文件共享協議,容許cilent從服務器端訪問文件資源。 2.NetBIOS協議是一個用來讓局域網內的主機互相鏈接的通信協議,被普遍用於windows平臺間的通訊。 3.samba就是基於smb開發的,讓unix主機可以經過mbr協議與windows平臺進行文件共享。
1.二、NETBIOS協議
NetBIOS是Network Basic Input/Output System的簡稱,網絡基本輸入/輸出系統協
議。協議,通常指用於局域網通訊的一套API,是由IBM公司開發。主要做用:經過
NETBIOS協議得到計算機名稱,而後把計算機名解析爲對應IP地址。
模式: C/S 模式
二、Samba 應用環境
文件和打印機共享:文件和打印機共享是Samba的主要功能,SMB進程實現資源共享,將文件和打印機發布到網絡之中,以供用戶能夠訪問哈。 身份驗證和權限設置:smbd服務支持user mode和domain mode等身份驗證和權限設置模式,經過加密方式能夠保護共享的文件和打印機。 名稱解析:Samba經過nmbd服務能夠搭建NBNS(NetBIOS Name Service)服務器,提供名稱解析,將計算機的NetBIOS名解析爲IP地址。 瀏覽服務:局域網中,Samba服務器能夠成爲本地主瀏覽服務器(LMB),保存可用資源列表,當使用客戶端訪問Windows網上鄰居時,會提供瀏覽列表,顯示共享目錄、打印機等資源。
三、samba服務
3.一、samba的安裝包:
samba samba服務器端程序。 libsmbclient samba客戶端庫文件。 samba-client samba客戶端程序。 samba-common samba客戶端以及服務端都會用到的文件,如samba.conf等。 samba-winbind samba對於windows域的支持的服務端的庫。 samba-winbind-clients samba windwos域的客戶端。
3.二、samba的進程文件:
nmbd:負責管理工做組,NetBIOS名解析,並提供瀏覽服務顯示網絡上的共享資源列表。工做在UDP的137,138端口上。 smbd:其主要功能就是用來管理Samba服務器上的共享目錄、打印機等,主要是針對網絡上的共享資源進行管,工做在TCP的139或445端口上。
3.三、samba的文件:
/etc/samba/smb.conf samba的主要配置文件。 /etc/samba/smbusers 共享服務中,linux與windows的帳號的映射,格式爲linuxuser = windowsuser1,windowsuser2 /var/lib/samba/private/passdb.tdb / secrets.tdb samba用戶帳號密碼存放的數據 庫。
四、主要配置文件smb.conf
4.一、samba配置簡介
smb.conf文件的開頭部分爲samba配置簡介,告訴咱們smb.conf文件的做用及相關信息。
smb.conf中以「#」開頭的爲註釋,爲用戶提供相關的配置解釋信息,方便用戶參考,不用修改它哈。
smb.conf中還有以「;」開頭滴,這些都是samba配置的格式範例,默認是不生效滴,能夠經過去掉前面的「;」並加以修改來設置想使用的功能。
4.二、Global Settings
Global Settings設置爲全局變量區域。那什麼是全局變量哈?全局變量就是說咱們只要在global時進行設置,那麼該設置項目就是針對全部共享資源生效滴。這與之後咱們學習的不少服務器配置文件類似哈。
該部分以[global]開始:
smb.conf配置通用格式,對相應功能進行設置:字段=設定值
下面咱們說下[global]經常使用字段及設置方法:
[global] [network] workgroup = MYGROUP #工做組名稱,要與windows的工做組名稱一致。 server string = Samba Server Version %v #samba服務器描述 ; netbios name = MYSERVER ; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 #設置監聽 的網卡 ; hosts allow = 127. 192.168.12. 192.168.13. #設置能夠訪問的網段 [login] log file = /var/log/samba/log.%m #日誌文件路徑。 max log size = 50 #一個日誌文件最大多少Kb進行輪替。 [獨立服務器設定 Standalone Server] security = user|share|domain #安全認證方式 share:#共享模式 user:#使用samba服務器的密碼庫 domain:#使用外部域服務器的密碼。 passdb backend = tdbsam #密碼庫格式。
1)設置工做組或域名稱
工做組是網絡中地位平等的一組計算機,能夠經過設置workgroup字段來對samba服務器所在工做組或域名進行設置。
咱們設置samba服務器的工做組爲CentOS
2)服務器描述
服務器描述實際上相似於備註信息哈,在一個工做組中,可能存在多臺服務器,爲了方便用戶瀏覽,咱們能夠在server string配置相應描述信息,這樣用戶就能夠經過描述信息知道本身要登陸哪臺服務器了啊~
咱們設置samba描述信息爲「CentOS File Server」。
3)設置samba服務器安全模式
samba服務器有share、user、server、domain和ads 五種安全模式,用來適應不一樣的企業服務器需求。
(1)share安全級別模式 客戶端登陸samba服務器,不須要輸入用戶名和密碼就能夠瀏覽samba服務器的資源,適用於公共的共享資源,安全性差,須要配合其餘權限設置,保證samba服務器的安全性。 (2)user安全級別模式 客戶端登陸samba服務器,須要提×××法賬號和密碼,通過服務器驗證才能夠訪問共享資源,服務器默認爲此級別模式。 (3)server安全級別模式 客戶端須要將用戶名和密碼,提交到指定的一臺samba服務器上進行驗證,若是驗證出現錯誤,客戶端會用user級別訪問。 (4)domain安全級別模式 若是samba服務器加入windows域環境中,驗證工做服將由windows域控制器負責,domain級別的samba服務器只是成爲域的成員客戶端,並不具有服務器的特性,samba早期的版本就是使用此級別登陸windows域滴。 (5)ads安全級別模式 當samba服務器使用ads安全級別加入到windows域環境中,其就具有了domain安全級別模式中全部的功能並能夠具有域控制器的功能。
4.三、Share Definitions共享服務的定義
Share Definitions設置對象爲共享目錄和打印機,若是咱們想發佈共享資源,須要對Share Definitions部分進行配置。Share Definitions字段很是豐富,設置靈活。
咱們先來說下幾個最經常使用的字段哈~
1)設置共享名
共享資源發佈後,必須爲每一個共享目錄或打印機設置不一樣的共享名,給網絡用戶訪問時使用,而且共享名能夠與原目錄名不一樣。
共享名設置很是簡單:[共享名]
咱們來看個例子,Samba服務器中有個目錄爲/share,須要發佈該目錄成爲共享目錄,定義共享名爲public
2)共享資源描述
網絡中存在各類共享資源,爲了方便用戶識別,能夠爲其添加備註信息,以方便用戶查看時知道共享資源的內容是什麼哈。
格式:comment = 備註信息
舉個例子哈,samba服務器上有個/sales目錄存放公司銷售部的數據,爲了對公司部門員工進行區分,能夠添加備註信息。
3)共享路徑
共享資源的原始完整路徑,可使用path字段進行發佈,務必正確指定。
格式:path = 絕對地址路徑
samba服務器上/share/tools目錄存放經常使用工具軟件,須要發佈該目錄爲共享,咱們能夠這樣作。
4)設置匿名訪問
共享資源若是對匿名訪問進行設置,能夠更改public字段。
格式:
public = yes #容許匿名訪問 public = no #禁止匿名訪問
samba服務器/share共享目錄容許匿名用戶訪問,能夠這樣設置。
5)設置訪問用戶
若是共享資源存在重要數據的話,須要對訪問用戶審覈,咱們可使用valid users字段進行設置哈~
格式:
valid users = 用戶名 valid users = @組名
咱們來看下面一個例子哈,samba服務器/share/tech目錄存放了公司技術部數據,只容許技術部員工和經理訪問,技術部組爲tech,經理賬號爲gm
6)設置目錄只讀
共享目錄若是限制用戶的讀寫操做,咱們能夠經過readonly實現哈~
格式:
readonly = yes #只讀 readonly = no #讀寫
samba服務器公共目錄/public存放大量共享數據,爲保證目錄安全咱們只容許讀取,禁止寫入哈~
7)設置目錄可寫
若是共享目錄容許用戶寫操做,可使用writable或write list兩個字段進行設置哈~
writable格式: writable = yes #讀寫 writable = no #只讀 write list格式: write list = 用戶名 write list = @組名
注意:
[homes]爲特殊共享目錄,表示用戶主目錄。
[printers]表示共享打印機。
五、配置一個共享資源
[share] #設置共享名 comment = Home Directories #描述 browseable = yes #是否容許查看此共享內容 。若是是否,後期經過絕對路徑,能夠查看到。 path = /share #共享路徑,寫絕對路徑 public = yes #容許匿名查看 readonly = yes
六、samba的命令與客戶端訪問
6.一、testparm:測試有效的exports內的屬性
6.二、pdbedit:管理smb的用戶數據庫。
pdbedit -L [-vm] 列出數據庫中的用戶等信息,-v詳細信息,-w使用smbpasswd格式。 pdbedit -a -u [user] 新增一個用戶,但必須存在實體用戶。 pdbedit -r -u [user] 修改一個用戶的信息,需搭配其餘參數,可參考man文檔。 pdbedit -x -u [user] 刪除一個用戶。 pdbedit -a -m -u [machine account計算機帳號] 添加一個計算機帳號,域相關。
6.三、smbpasswd:改變samba帳戶的密碼。
smbpasswd -a [user] 新增用戶以及密碼。 smbpasswd -r [user] 修改用戶密碼。 smbpasswd -x [user] 刪除用戶。 smbpasswd -d [user] 禁止登錄。 smbpasswd -e [user] 啓用用戶。
6.四、smbclient:unix客戶端訪問工具。
smbclient -L //IPADDR [-U smbuser] 測試查看目標服務器所開放的共享文件夾 smbclient //IPADDR/dir -U smbuser 鏈接共享服務器文件夾。 [root@host2 ~]# smbclient //192.168.25.132/test -U zhanghe 命令行形式訪問。 Enter zhanghe's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7] smb: \\> help ? allinfo altname archive blo cksize cancel case_sensitive cd chmod chown....
6.五、掛載訪問。
mount -t cifs -o username=zhanghe,password=123456 -l //192.168.25.132/test /tmp
七、samba搭建實例
7.一、smb服務端搭建:
host1(192.168.1.1): [root@host1 ~]# yum install samba [root@host1 ~]# vim /etc/samba/smb.conf [test] comment = test on 192.168.25.132 server! path = /tmp/samba writable = yes guest ok = yes write list = zhanghe [root@host1 ~]# testparm [root@host1 ~]# useradd zhanghe [root@host1 ~]# pdbedit -a -u zhanghe [root@host1 ~]# pdbedit -L [root@host1 ~]# mkdir -pv /tmp/samba [root@host1 ~]# setfacl -m u:zhanghe:rwx /tmp/samba [root@host1 ~]# service nmb start [root@host1 ~]# service smb start
ps.配置iptables並設置selinux
八、修改配置文件,實戰舉例
8.一、例1:匿名共享:
公司如今用一個工做組Software, 須要添加samba 服務器做爲文件服務器,併發布共享目
錄/share,共享名爲public,這個共享目錄容許全部公司員工訪問。
[root@host1 ~]# mkdir /share [root@host1 ~]# cp /etc/passwd !$ #複製一個測試文件cp /etc/passwd /share [root@host1 ~]# vim /etc/samba/smb.conf [global] workgroup = Software #工做組 server string = Software Samba Server #samba服務器描述 security = share # 容許匿名訪問 ============================ Share Definitions ==== [share] #設置共享名 comment = Home Directories #描述 path = /share #共享路徑,寫絕對路徑 public = yes #容許匿名查看
2)從新加載配置
[root@host1 ~]#
8.二、例2:經過用戶名和密碼共享文件。把/sales 共享出去,只有知道用戶名和密碼的同事能夠看這個共享。
咱們須要將全局配置中security 設置爲user 安全級別,而後在共享目錄設置權限
注意:必定要先指定存放密碼的文件位置:
2)修改samba 主配置文件smb.conf
改:
passdb backend = tdbsam 爲: passdb backend = smbpasswd smb passwd file = /etc/samba/smbpasswd
1)添加銷售部用戶和組並添加相應samba 賬號
使用groupadd 命令添加sales 組,而後執行useradd 命令和passwd 命令添加銷售部員工的
賬號及密碼。
[root@host1 ~]# groupadd sales [root@host1 ~]# useradd -g sales sale1 [root@host1 ~]# useradd -g sales sale2 [root@host1 ~]# id sale2 uid=502(sale2) gid=501(sales) groups=501(sales)
接下來爲銷售部成員添加相應samba 賬號
[root@host1 ~]# smbpasswd -a sale1
[root@host1 ~]# ls /etc/samba/smbpasswd /etc/samba/smbpasswd [root@host1 ~]# cat !$
[root@host1 ~]# smbpasswd -a sale2 New SMB password: Retype new SMB password: Added user sale2.
2)修改samba 主配置文件smb.conf
(1).設置user 安全級別模式
security = user
設置目錄:
[root@host1 ~]# vim smb.conf
建立共享目錄:
建立共享目錄:
[root@host1 ~]# mkdir /sales [root@host1 ~]# cp /etc/passwd !$ cp /etc/passwd /sales
3)從新加載配置
[root@host1 ~]# service smb restart Shutting down SMB services: [ OK ] Starting SMB services: [ OK ] 測試: 輸入: 用戶 :sale2 密碼:123456
輸入銷售部的賬號及密碼進行登陸
這樣銷售部成員就能夠進行訪問sales 共享目錄下的數據了
九、擴展參數
9.一、客戶端訪問控制
hosts allow 和 hosts deny 的使用方法
1)hosts allow 和 hosts deny 字段的使用
hosts allow 字段定義容許訪問的客戶端 hosts deny 字段定義禁止訪問的客戶端
這裏咱們添加hosts deny 和hosts allow 字段
hosts deny = 192.168.0. 表示禁止全部來自192.168.0.0/24 網段的IP 地址訪問 hosts allow = 192.168.0.24 表示容許192.168.0.24 這個IP 地址訪問
當host deny 和hosts allow 字段同時出現並定義滴內容相互衝突時,hosts allow優先。
9.二、設置Samba 的權限,容許sales組能夠寫
設置系統權限
[root@host1 ~]# chmod 777 /sales [root@host1 ~]# ll -d !$ ll -d /sales drwxrwxrwx 2 root root 4096 Mar 7 21:50 /sales
設置服務器權限:
[root@host1 ~]# vim /etc/samba/smb.conf
boss用戶和sale組均可以讀寫
write list = boss,@sales 就表示只有boss 賬號和sales組,能夠對/sales 有寫入權限
十、使用GUI工具SWAT管理samba
swat是samba的圖形化管理工具,咱們能夠在配置後經過http來經過網頁配置,而且內嵌
幫助文檔,可以很是直觀的配置samba服務,swat是基於xinetd超級守護進程。
[root@host1 tmp]# yum install xinetd -y 安裝xinetd超級守護進程 [root@host1 tmp]# yum install samba-swat -y 安裝swat程序,主機安裝包名爲samba-swat,若是直接輸入swat是找不到包的!! [root@host1 tmp]#vim /etc/xinetd.d/swat 編輯swat的配置文件。 # default: off # description: SWAT is the Samba Web Admin Tool. Use swat \\ # to configure your Samba server. To use SWAT, \\ # connect to port 901 with your favorite web brows er. service swat { port = 901 <--- 監聽的端口默認爲901。 socket_type = stream <--- socket類型爲stream,面向鏈接的穩定數據傳輸,即爲TCP協議。 wait = no only_from = 192.168.25.0 <---只監聽指定範圍內的主機,即限制登錄主機,設置爲0.0.0.0 則默認爲監聽全部主機。 user = root <---只容許使用指定用戶登陸。 server = /usr/sbin/swat <---指定主程序路徑。 log_on_failure += USERID disable = no <---開啓swat工具,yes爲關閉。 } [root@host1 tmp]# service xinetd start 開啓xinetd服務便可,由於swat是由xinetd來管理的。 [root@host1 tmp]# ss -tunl | grep 901 查看901端口號,的確爲設置的tcp的901
訪問服務器的901端口: