Centos部署Samba企業文件共享服務
聲明:本文參考了網上部分資料加作者實驗總結
目錄:
1、Samba服務概述:
1.1、Samba的原理
1.2、NETBIOS協議
2、Samba 應用環境
3、samba服務
3.1、samba的安裝包:
3.2、samba的進程文件:
3.3、samba的文件:
4、主要配置文件smb.conf
4.1、samba配置簡介
4.2、Global Settings
4.2.1)設置工作組或域名稱
4.2.2)服務器描述
4.2.3)設置samba服務器安全模式
4.3、Share Definitions共享服務的定義
4.3.1)設置共享名
4.3.2)共享資源描述
4.3.3)共享路徑
4.3.4)設置匿名訪問
4.3.5)設置訪問用戶
4.3.6)設置目錄只讀
4.3.7)設置目錄可寫
5、配置一個共享資源
6、samba的命令與客戶端訪問
6.1、testparm:測試有效的exports內的屬性
6.2、pdbedit:管理smb的用戶數據庫
6.3、smbpasswd:改變samba賬戶的密碼
6.4、smbclient:unix客戶端訪問工具
6.5、掛載訪問
7、samba搭建實例
7.1、smb服務端搭建
8、修改配置文件,實戰舉例
8.1、例1:匿名共享
8.2、例2:通過用戶名和密碼共享文件。把/sales 共享出去,只有知道用戶名和密碼的同事可以看這個共享
9、擴展參數
9.1、客戶端訪問控制
9.2、設置Samba 的權限,允許sales組可以寫
10、使用GUI工具SWAT管理samba
1、Samba服務概述:
samba是基於smb(Server Message Block)協議的一種實現方式。Samba 最先在Linux
和Windows 兩個平臺之間架起了一座橋樑,正是由於Samba 的出現,我們可以在Linux
系統和Windows 系統之間互相通信,比如拷貝文件、實現不同操作系統之間的資源共享等
等,我們可以將其架設成一個功能非常強大的文件服務器,也可以將其架設成打印服務器提
供本地和遠程聯機打印。
1.1、Samba的原理
1.SMB是基於NetBIOS的一個網絡文件共享協議,允許cilent從服務器端訪問文件資源。 2.NetBIOS協議是一個用來讓局域網內的主機互相連接的通訊協議,被廣泛用於windows平臺間的通信。 3.samba就是基於smb開發的,讓unix主機能夠通過mbr協議與windows平臺進行文件共享。
1.2、NETBIOS協議
NetBIOS是Network Basic Input/Output System的簡稱,網絡基本輸入/輸出系統協
議。協議,一般指用於局域網通信的一套API,是由IBM公司開發。主要作用:通過
NETBIOS協議獲得計算機名稱,然後把計算機名解析爲對應IP地址。
模式: C/S 模式
2、Samba 應用環境
文件和打印機共享:文件和打印機共享是Samba的主要功能,SMB進程實現資源共享,將文件和打印機發布到網絡之中,以供用戶可以訪問哈。 身份驗證和權限設置:smbd服務支持user mode和domain mode等身份驗證和權限設置模式,通過加密方式可以保護共享的文件和打印機。 名稱解析:Samba通過nmbd服務可以搭建NBNS(NetBIOS Name Service)服務器,提供名稱解析,將計算機的NetBIOS名解析爲IP地址。 瀏覽服務:局域網中,Samba服務器可以成爲本地主瀏覽服務器(LMB),保存可用資源列表,當使用客戶端訪問Windows網上鄰居時,會提供瀏覽列表,顯示共享目錄、打印機等資源。
3、samba服務
3.1、samba的安裝包:
samba samba服務器端程序。 libsmbclient samba客戶端庫文件。 samba-client samba客戶端程序。 samba-common samba客戶端以及服務端都會用到的文件,如samba.conf等。 samba-winbind samba對於windows域的支持的服務端的庫。 samba-winbind-clients samba windwos域的客戶端。
3.2、samba的進程文件:
nmbd:負責管理工作組,NetBIOS名解析,並提供瀏覽服務顯示網絡上的共享資源列表。工作在UDP的137,138端口上。 smbd:其主要功能就是用來管理Samba服務器上的共享目錄、打印機等,主要是針對網絡上的共享資源進行管,工作在TCP的139或445端口上。
3.3、samba的文件:
/etc/samba/smb.conf samba的主要配置文件。 /etc/samba/smbusers 共享服務中,linux與windows的賬號的映射,格式爲linuxuser = windowsuser1,windowsuser2 /var/lib/samba/private/passdb.tdb / secrets.tdb samba用戶賬號密碼存放的數據 庫。
4、主要配置文件smb.conf
4.1、samba配置簡介
smb.conf文件的開頭部分爲samba配置簡介,告訴我們smb.conf文件的作用及相關信息。
smb.conf中以“#”開頭的爲註釋,爲用戶提供相關的配置解釋信息,方便用戶參考,不用修改它哈。
smb.conf中還有以“;”開頭滴,這些都是samba配置的格式範例,默認是不生效滴,可以通過去掉前面的“;”並加以修改來設置想使用的功能。
4.2、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.3、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]表示共享打印機。
5、配置一個共享資源
[share] #設置共享名 comment = Home Directories #描述 browseable = yes #是否允許查看此共享內容 。如果是否,後期通過絕對路徑,可以查看到。 path = /share #共享路徑,寫絕對路徑 public = yes #允許匿名查看 readonly = yes
6、samba的命令與客戶端訪問
6.1、testparm:測試有效的exports內的屬性
6.2、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.3、smbpasswd:改變samba賬戶的密碼。
smbpasswd -a [user] 新增用戶以及密碼。 smbpasswd -r [user] 修改用戶密碼。 smbpasswd -x [user] 刪除用戶。 smbpasswd -d [user] 禁止登陸。 smbpasswd -e [user] 啓用用戶。
6.4、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.5、掛載訪問。
mount -t cifs -o username=zhanghe,password=123456 -l //192.168.25.132/test /tmp
7、samba搭建實例
7.1、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、修改配置文件,實戰舉例
8.1、例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、例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、擴展參數
9.1、客戶端訪問控制
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.2、設置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 有寫入權限
10、使用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端口: