1. 程式人生 > >一、掌握Samba服務的配置原理;二、在linux下配置samba共享服務

一、掌握Samba服務的配置原理;二、在linux下配置samba共享服務

inter path mage con lob term 禁用 域控制器 技術分享

一、掌握Samba服務的配置原理
二、在linux下配置samba共享服務(匿名共享、身份驗證、賬戶映射、訪問控制)
Samba介紹

Samba是運行在Linux與Unix之上的免費共享服務的軟件,是典型服務器/客戶端模式,它有兩個進程,一個是smbd,主要是用來管理共享文件的進程,另一個是nmbd,用來實現主機名到IP地址的轉換(相當於Windows下的NetBIOS的功能),smbd運行在TCP的139、445端口,nmbd則運行在UDP的137、138端口(運行samba服務後可以用如:netstat -anp | grep smbd、netstat -anp |grep nmbd來查看它開放的端口號),如果不運行nmbd進程則客戶端只能通過IP地址來訪問samba服務器了!
配置文件:
samba的配置文件存放在/etc/samba/下面,叫smb.conf。它的註釋較多,不過沒有中文的:),它指定需要共享的文件目錄、目錄共享權限(記住:它也受本地權限限制的啊)、訪問日誌名稱與路徑等.它分成兩大部分,一是Global Settings, 用來指全局設置的變量,如安全級別等,對整個服務器生效,另一個是對Shared Definitinos,說明共享相關的定義,它以"#"開頭為註釋行,也有以";"開頭的配置範例行,默認是不生效的,如果想設置該行生效,可以把";"去掉即可!
常用的配置選項說明:
[Global]?配置文件必須以[Global]開頭(別忘了"["?? "]"啊),它說明全局配置的開始;
workgroup = WORKGROUP 指明共享所在的工作組,可以是NT域名、工作組名
server string =Samba Server 客戶端看到的服務器的描述信息
netbios name = share file of samba Windows下看到的netbios信息,默認是沒有給出的,要使具用此描述,必須手動添加。
hosts allow = 192.168.2. 192.168.1. EXCEPT 192.168.1.10?? 允許192.168.2.0段和192.168.1.0段訪問,但192.168.1.10主機除外(註意:多網段時要用空格隔開)
hosts deny = 192.168.2.10 拒絕192.168.2.10訪問(註意:與上一個同時使用時,deny優先生效)
interfaces = 192.168.2.10 當服務器有多個網絡接口時,可以指定samba監聽端口,默認監聽全部端口的訪問
smb passwd file = /etc/samba/smbpasswd 指定samba的密碼文件所在位置
username map = /etc/samba/smbusers 指定賬號映射文件的位置,它是提高安全性的方法,可以防止系統用戶直接暴露出來
log file = /var/log/samba/%m.log 默認的日誌文件,%m是以主機名稱來分別記錄日誌
max log size = 50 默認日誌大小為50K
include = /etc/samba/smb.conf.%U 加入以用戶為控制單位的配置文件
include = /etc/samba/smb.conf.%G 加入以組為控制單位的配置文件
security = share | user | server | domain | ads samba系統的安全級別
share安全級別模式,不需要輸入用戶和密碼就可以訪問共享資源
user安全級別模式,客戶端登錄samba服務器,需要提×××法帳號和密碼,經過服務器驗證才可以訪問共享資源
server安全級別模式,客戶端需要將用戶名和密碼,提交到指定的一臺samba服務器上進行驗證,如果驗證出現錯誤,客戶端會用user級別訪問
domain安全級別模式,如果samba服務器加入windows域環境中,驗證工作服將由windows域控制器負責,domain級別的samba服務器只是成為域的成員客戶端,並不具備服務器的特性,samba早期的版本就是使用此級別登錄windows域
ads安全級別模式,當samba服務器使用ads安全級別加入到windows域環境中,其就具備了domain安全級別模式中所有的功能並可以具備域控制器的功能
guest account=aaaa?讓用戶aaaa以匿名身份登錄,請確保/etc/passwd有此用戶
Socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192? 設置服務器和客戶之間會話的Socket選項,此項設置將優化傳輸速度。?
admin user = wuzh? 指時wuzh就是samba服務的管理員(好象有時候會說是無效參數啊)
---------Share Definitions--------
[public]??中括號裏是共享文件名
commont = share director of admin 共享的描述信息
path = /pub??共享文件路徑
public = yes|no??是否可以匿名訪問
browseable = yes|no?是否出現共享文件名
read only = yes|no?是否只讀
writable = yes|no??是否可寫
write list = 用戶名,用戶,@組名?設置可讀權限的用戶
valid users = 用戶名或@組名?設置有效用戶
invalid users = 用戶名或@組名?設置無效用戶
create mask = 0744??????????????? 設置創建文件時的權限
directory mask = 0755???????????? 設置創建目錄時的權限
添加samba用戶,因為samba用戶是基於系統用戶的,所以必須先建立系統用戶才能添加成samba用戶
useradd -s /sbin/nologin smbtest
smbpasswd -a smbtest?
輸入兩次samba密碼即可
smbpass常用選項:
smbpasswd -h 列出幫助信息
smbpasswd -a 添加用戶
smbpasswd -x 刪除現有的samba用戶
smbpasswd -n 刪除現有的samba用戶密碼
smbpasswd -d 禁用現有的samba用戶
smbpasswd -e 啟用已禁用的samba用戶
批量把系統用戶轉換成smbpasswd密碼文件:
cat /etc/passwd |mksmbpasswd.sh > /etc/samba/smbpasswd
smbpasswd 密碼文件存放在/etc/samba/smbpasswd裏,格式如下:
wuzh:500:561B1EBD1E1C9095AAD3B435B51404EE:5573EACDA2E72CD8CE6E8C433286B800:[U]:LCT-4325DFBD:
為提高安全性一般可以設置如下參數:
socket address = 192.168.2.126 指定監聽地址
username map = /etc/samba/smbusers 設置映射賬號文件
hosts allow 指明允許訪問的地址(網段以"."結束)
hosts deny 明確指出拒絕的地址
smb passwd file 指出密碼文件位置
security 設置安全級別
encrypt passwords 以加密的方式訪問samba服務器
smbusers文件格式如下:
系統用戶名=映射的虛擬賬號1,映射的虛擬賬號2,...

testparm 是測試smb.conf是否有錯誤的好用工具,直接testparm就可以顯示相關信息了,相當簡單
客戶端測試:

smbclient //服務器/共享名 -U 用戶名%密碼
掛載:mount -t cifs //目標/共享名 /本地掛載目錄 -o username=用戶名%密碼

接下來進行試驗操作:1.Samba服務匿名共享
2.Samba服務身份驗證共享
3.Samba服務賬戶映射
4.Samba服務訪問控制

試驗環境:在VMware虛擬機開啟一臺Linux系統(我這裏是Redhat6.5),再開一臺Windows7。
試驗目的:1.讓Windows7作為客戶端匿名共享Linux中的文件
2.在Windows7中共享Linux中的文件,但需要身份驗證。(身份、密碼)
3.給賬戶配置別名,建立映射關系,然後用別名登錄共享。
4.禁止指定的一個或多個網段進行訪問。
試驗過程:
1.首先我們對鏡像文件進行掛載,並安裝Samba服務軟件包。
分別執行命令:mount /dev/sr0 /mnt
rpm -ivh /mnt/Packages/samba-3.6.9-164.el6.x86_64.rpm 安裝軟件包。如下圖所示:

技術分享圖片
2.通過命令mv /etc/samba/smb.conf /etc/samba/smb.conf.bak 對
配置文件進行重命名。再通過grep -v "#" smb.conf.bak > smb.conf過濾掉配置文件中以#開頭的內容,這樣也可以做一個配置文件的備份,又方便查找。如下圖所示:
技術分享圖片
3.接下來進行Samba服務匿名訪問共享任務。
首先執行命令vi /etc/samba/smb.conf對配置文件進行修改,如下圖所示:
技術分享圖片
4.接下來繼續在主配置文件中手動創建一個匿名共享的組,給創建的組設置相應的權限。如下圖所示:
技術分享圖片
5.以上已經把匿名共享的文件創建好了,接下來我們選擇在/opt下面創建一個空目錄abc.。然後將abc的權限放到最大(777),這樣才能有寫入的權限。如下圖所示:
技術分享圖片
6.配置文件改完之後我們須關閉防火墻、關閉增強×××、重啟服務。
執行命令:service iptables stop 關閉防火墻
setenforce 0關閉增強×××
service smb restart重啟服務 如下圖所示:
技術分享圖片
7..接下來就可以在window7上驗證匿名共享文件。如下圖所示:
技術分享圖片
8.接下來我們進行身份驗證共享,所以還是要對主配置文件進行修改(vim /etc/samba/smb.conf)。修改如下圖所示:
技術分享圖片
9.繼續修改配置文件,再重新寫一個組,實現共享需要身份驗證,如下圖所示:
技術分享圖片
10.接下來先先重啟一下服務,然後創建李連傑、吳京兩個用戶,並設置smb訪問的密碼,在/opt下創建目錄test。並且給test目錄最大權限。如下圖所示:
技術分享圖片
11.重啟服務
技術分享圖片
12.接下來在Windows7中清空緩存,進行用戶身份驗證。如下圖所示:
技術分享圖片
技術分享圖片
如果只允許用戶吳京有寫入權限的話,在配置文件裏將writable=yes註釋掉就可以了。

13.接下裏我們通過賬戶映射配置,通過創建兩個映射別名來進行共享訪問。
首先我們先修改配置文件,添加賬戶映射。如下圖所示:
vim /etc/samba/smbuser
技術分享圖片
技術分享圖片
14.可以讓一個網段或多個網段禁止訪問,修改配置文件
vim /etc/samba/smb.conf 在test這個組裏添加禁止訪問的網段。如下圖所示:
技術分享圖片
15.拒絕192.168.10網段客戶端訪問
技術分享圖片
到此試驗成功!

一、掌握Samba服務的配置原理;二、在linux下配置samba共享服務