CentOS7下的samba應用篇:配置及訪問

前言

從基礎篇中,我們瞭解了samba是什麼,有什麼用,以及簡單的搭建,詳情請查看===>CentOS7下的samba基礎篇:瞭解與搭建,接下來要做的就是實際的部署和應用了。

首先是安裝,yum或者rpm任意選擇一種。

[root@linus ~]# yum install -y samba*	#其實直接輸入samba即可安裝,後面加上*會安裝多餘的軟件包,但也不影響

開啓服務,然後查看其運行狀態。

[root@linus ~]# systemctl start smb.service 
[root@linus ~]# netstat -anput | grep smb
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      2446/smbd           
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      2446/smbd           
tcp6       0      0 :::139                  :::*                    LISTEN      2446/smbd           
tcp6       0      0 :::445                  :::*                    LISTEN      2446/smbd           

配置文件說明

服務已經正常啓動了,接下來就開始進行配置了,samba服務的配置文件位於 /etc/samba/目錄下,名稱爲smb.conf

[root@linus ~]# ls /etc/samba/
lmhosts  smb.conf  smb.conf.example

將註釋行和空行過濾掉,查看其文件內容,並對其說明

[global]	#全局生效
	workgroup = SAMBA	#工作組
	security = user		#用戶訪問samba server的驗證方式,總共有4種
						#share:來訪主機無需驗證口令;比較方便,但安全性很差
						#user:需驗證來訪主機提供的口令後纔可以訪問;提升了安全性
						#server:使用獨立的遠程主機驗證來訪主機提供的口令(集中管理賬戶)
						#domain:使用域控制器進行身份驗證
	passdb backend = tdbsam		#定義用戶的後臺類型,共三種
								#smbpasswd:使用smbpasswd命令爲系統用戶設置Samba服務程序的密碼
								#tdbsam:創建數據庫文件並使用pdbedit命令建立Samba服務程序的用戶
								#ldapsam:基於LDAP服務進行賬戶驗證
	printing = cups	#此項用來指定打印系統的類型
	printcap name = cups	#此項是用來設置開機時自動加載的打印機配置文件名稱和路徑
	load printers = yes		#設置在samba服務啓動時是否共享打印機設備
	cups options = raw		#打印機選項
[homes]	#用於設置用戶宿主目錄的共享屬性
	comment = Home Directories	#描述
	valid users = %S, %D%w%S	#允許訪問共享的用戶
	browseable = No		#共享是否可被查看
	read only = No		#只讀權限	
	inherit acls = Yes
[printers]		#打印機共享參數,打印機名
	comment = All Printers	#共享描述
	path = /var/tmp	 #共享路徑
	printable = Yes	 #是否可以打印	
	create mask = 0600	#默認權限
	browseable = No	#共享是否可被查看
[print$]
	comment = Printer Drivers
	path = /var/lib/samba/drivers
	write list = root
	create mask = 0664
	directory mask = 0775

寫入參數及作用

對於修改samba的主配置文件來說,其實就是新增目錄共享,將以下項寫入到配置文件中即可,除了共享目錄位置和允許訪問的配置項外,其他的都能省略。

[name]:共享名稱爲database
comment = test:描述
**path = /home/test:共享目錄爲/home/test
public = no:關閉所有人可見
writable = yes:允許寫入操作
valid users = user:可以訪問的用戶列表
write list = user:有寫入權限的用戶列表

pdbedit

首先我們要知道,samba默認的認證方式是通過用戶口令進行認證的,當然,若不考慮安全性,直接把驗證方式改爲share往下即可。

pdbedit命令是專門用來創建訪問共享用戶的,你以爲系統中的用戶就可以嗎,辣怎麼可能,那樣豈不是所有的已有用戶都可以訪問共享了嗎,那和無驗證模式有什麼區別呢?這種認證模式可以確保僅讓特定用戶訪問資源,假如有三個部門,人事,財務,市場,這樣可以創建三個目錄,然後創建對應的訪問用戶,將各自的目錄共享給各自部門的人。

使用pdbedit命令創建用戶時要注意,首先,只有先建立賬戶信息數據庫之後,才能使用用戶口令認證模式。其次,samba服務的數據庫要求賬戶必須在當前系統中已經存在,否則日後創建文件時將導致文件的權限屬性混亂

pdbedit使用

pdbedit -a username:新建Samba賬戶。
pdbedit -r username:修改Samba賬戶。
pdbedit -x username:刪除Samba賬戶。
pdbedit -L:列出Samba用戶列表,讀取passdb.tdb數據庫文件。
pdbedit -Lv:列出Samba用戶列表詳細信息。

服務搭建與使用

該說的都說了,接下來就是對於samba服務的詳細搭建過程了。
環境:
samba服務器IP:192.168.1.124
windows10和CentOS7的IP隨意,能互通即可。

注:samba服務器需要關閉selinux和firewalld防火牆,否則會攔截訪問請求

主要是在samba服務器上進行搭建,其餘僅用於測試。

小需求:caiwu是財務部部長的賬戶,只允許他能寫入文件,其餘賬戶只能讀取

1.創建測試用戶caiwu

[root@linus ~]# useradd caiwu
[root@linus ~]# pdbedit -a caiwu1 
new password:
retype new password:
Failed to add entry for user caiwu1. #創建系統中不存在的用戶,顯示條目未能添加
[root@linus ~]# pdbedit -a  caiwu #創建已存在的用戶
new password:
retype new password:
Unix username:        caiwu
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-1877094264-3563949321-3775828196-1000
Primary Group SID:    S-1-5-21-1877094264-3563949321-3775828196-513
Full Name:            
Home Directory:       \\linus\caiwu
HomeDir Drive:        
Logon Script:         
Profile Path:         \\linus\caiwu\profile
Domain:               LINUS
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:, 06 22036 23:06:39 CST
Kickoff time:, 06 22036 23:06:39 CST
Password last set:, 26 32020 02:29:08 CST
Password can change:, 26 32020 02:29:08 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

2.創建測試目錄/caiwu_test,屬主爲caiwu

[root@linus ~]# mkdir /caiwu_test
[root@linus ~]# chown caiwu:caiwu /caiwu_test
[root@linus ~]# chmod +777 /caiwu_test/

3.修改samba的主配置文件,寫入共享信息

[root@linus ~]# vim /etc/samba/smb.conf
....	#將下列配置寫入到文件最後,但要注意排列,否則會報錯
[caiwu]
        comment = test	#描述
        path = /caiwu_test	#共享目錄位置
        public = No		#不支持來賓訪問
        read only = Yes	#只讀權限
        valid users = caiwu	#可以訪問用戶,可以把財務部所有的組成員寫入此項中
        write list = caiwu	#有可寫入權限的用戶

4.重載配置,並創建測試文件。

[root@linus ~]# systemctl reload smb
[root@linus ~]# touch /caiwu_test/test.txt
[root@linus ~]# chmod +777 /caiwu_test/test.txt 	#爲什麼還要給文件設置權限?此文件爲root用戶創建,若不給予其權限,即使服務搭建沒有問題,也無權限使用此文件

5.windows訪問samba服務的共享目錄
在這裏插入圖片描述
然後將你使用pdbedit創建的訪問用戶caiwu登錄
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
windows訪問成功,並且可以寫入數據,接下來看看linux訪問

[root@linus ~]# smbclient //192.168.1.124/caiwu_test -U caiwu
Enter SAMBA\caiwu's password: 
Domain=[LINUS] OS=[Windows 6.1] Server=[Samba 4.6.2]
tree connect failed: NT_STATUS_BAD_NETWORK_NAME

誒,好像報錯了,沒有連接上,網上很多人都遇見了tree connect failed: NT_STATUS_BAD_NETWORK_NAME的報錯,就是因爲名稱錯誤,是共享名,寫在配置文件中的共享名。千萬要注意格式。

smbclient //samba主機IP/共享名【而不是共享目錄名】 -U 登錄用戶

我們按照這個格式試一下

[root@linus ~]# smbclient //192.168.1.124/caiwu -U caiwu
Enter SAMBA\caiwu's password: 
Domain=[LINUS] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \> ls
  .                                   D        0  Thu Mar 26 03:06:22 2020
  ..                                 DR        0  Thu Mar 26 02:55:50 2020
  test.txt                            A       12  Thu Mar 26 03:21:41 2020

		52403200 blocks of size 1024. 47782212 blocks available
smb: \> 

這樣就訪問成功了。

清空windows遠程連接

可以使用net use * /del /y清空網絡連接,默認一臺windows中只允許一個用戶訪問共享,若要且換用戶,需要重啓系統,刷新網絡配置,而使用net use * /del /y可以直接刷新,不需要重啓

C:\Users\Administrator>net use * /del /y
你有以下的遠程連接:

                    \\192.168.1.124\IPC$
繼續運行會取消連接。

命令成功完成。

C:\Users\Administrator>net use * /del /y
列表是空的。

6.再創建一個用戶caiwu2,修改配置文件,允許其訪問共享資源,但不允許其寫入

[root@linus ~]# useradd caiwu2
[root@linus ~]# pdbedit -a caiwu2

使用caiwu2訪問samba共享,然後將其共享文件進行修改,在保存的時候,報錯就來了。
在這裏插入圖片描述
這就是我們想看到的效果,權限已經放行了,但還是不能修改文件,因爲我們沒有把caiwu2加入可以寫入的列表。

安全考慮

服務是搭建完成了,沒什麼問題,訪問也需要密碼了,還有什麼問題呢?我們忽略了一點,現在用戶使用的賬戶名和密碼,是linux中實際存在的賬戶嗎?是的,因爲samba數據庫不允許創建不存在的用戶,也就是說,能訪問samba1的用戶在linux中實際存在,而這恰恰就是安全隱患。

爲了安全考慮,通常都會使用samba中的一個叫用戶名稱映射的功能。

1.創建用戶別名文件

[root@linus ~]# vim /etc/samba/samba_user_map	#在哪裏創建都可以
caiwu = zhangsan
caiwu2 = lisi

2.修改主配置文件,啓動用戶名稱映射功能

[global]
	workgroup = SAMBA
	security = user
	passdb backend = tdbsam
	username map = /etc/samba/samba_user_map	#只需要加入此項即可,路徑是別名文件的路徑
	printing = cups
	printcap name = cups
	load printers = yes
	cups options = raw

3.重載服務,然後開始驗證

[root@linus ~]# systemctl reload smb

在這裏插入圖片描述
密碼爲samba數據庫創建的賬戶密碼
在這裏插入圖片描述
通過設置別名的方式,也可以訪問共享,並且具有一定的安全性.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章