Samba服務—SMB協定
在windows當中我們最常見的就是網路上的芳鄰可以看到同一網際網路上連接配接的所有使用者
在伺服器端,linux與window Server相比的穩定性,安全性執行效率以及成本效益都是較高的。是以好多window Server下跑的一些服務都會切換到運作在linux服務上,但是對于一些桌面使用者來說用到的較多的就是檔案共享協定。而在linux中我們可以使用 FTP NFS這類型檔案共享協定,但是對于window上比較簡單的直接打開的服務在linux中的nfs協定來說是不能在window上使用的這種直接将檔案系統共享出來的協定為SMB。
與ftp的差別是不用将檔案下載下傳下來在使用,是直接可以在共享中打開使用的,是以說這種共享方式在使用當中是非常友善的,但是SMB是window當中的一種私有協定。即使如此在linux當也提供對SMB協定的一種支援。(雖然是window下的私有協定但是我們的開源技術團隊為我們的linux也提供了這種服務稱為samba服務,在開發過程中也是相當的艱苦 ,由于在window下是閉源的是以開發者是通過抓包分析window下所産生的資料包來實作的。弄清楚它的一個原理。)
SMB(Server Message block)協定是window下所使用的檔案共享協定,我們在linux系統或者其類unix系統當中可以通過samba服務來實作SMB功能。
Samba服務是SMB的一個開源實作。
SMB的功能有哪些:
1.通過SMB協定進行檔案共享 |
---|
2.通過SMB協定進行列印共享(我們可以通過在linux上通過smb配置列印伺服器,為window提供列印服務) |
3.加入一個windows2000/2003/2008域環境(在企業環境當中應用最多,目前smb是支援這三種主流的window服務作業系統的,好多企業當中整個的企業環境當中是使用window的域環境進行管理的,而所有的使用者組,權限,組政策資訊都是在window域環境進行配置的,那麼但是我們的企業又想把一些應用服務和需要用到的一些域環境進行認證或者是做權限控制的這些應用服務去切換到linux系統當中,那在這種情況下就涉及到我如何和window下的這些域環境進行相容,那麼smb是可以加入window域環境當中,并且是可以和window下的這些域環境進行認證操作的。是以smb這個協定是相當強大的不僅限于隻是實作檔案共享) |
4.通過windows域環境進行認證操作 |
在linux中怎麼啟動SAMBA?
安裝samba。
Yum install samba -y
Samba擁有兩個主服務(相關服務),對于一般使用的服務他隻有一個主服務 | |
---|---|
smbd (提供samba核心功能也是使用最多的一種功能) | 提供檔案及列印共享服務功能,使用139/445端口 |
nmbd | 提供Netbios(解析協定慢慢的被淘汰)支援,使用137/138端口,而對于這種協定使用較少,現在都是dns進行解析 |
一般作為檔案共享使用samba,則隻需要smbd服務 |
SAMBA 配置檔案:

端口号:
配置檔案子產品詳解:
[global]
workgroup = MYGROUP 定義該Samba伺服器所在的工作組或者域(如果下面的security=domain的話)
server string = Samba Server Version %v
設定機器的描述,當我們通過網絡鄰居通路的時候可以在備注裡面看見這個内容,而且還可以使用%v = Samba服務的版本号。
log file = /var/log/samba/log.%m 定義記錄檔案的位置LogFileName
max log size = 50
定義記錄檔案的大小size(機關是KB,如果是0的話就不限大小)
security = user
定義Samba的安全級别,按從低到高分為四級:share,user,server,domain。它們對應的驗證方式如下:
* share:沒有安全性的級别,任何使用者都可以不要使用者名和密碼通路伺服器上的資源。
* user:samba的預設配置,要求使用者在通路共享資源之前資源必須先提供使用者名和密碼進行驗證。
* server:和user安全級别類似,但使用者名和密碼是遞交到另外一個伺服器去驗證,比如遞交給一台NT伺服器。如果遞交失敗,就退到user安全級。
* domain:這個安全級别要求網絡上存在一台Windows的主域控制器,samba把使用者名和密碼遞交給它去驗證。
後面三種安全級都要求使用者在本Linux機器上也要系統帳戶。否則是不能通路的。
load printers = yes
[homes]
smb.conf檔案中一般沒有對這個目錄的設定特定内容比如路徑等。
當客戶機發出服務請求時,就在smb.conf檔案的其它部分查找友特定内容的服務。
如果沒有發現這些服務,并且提供了homes段時,那麼就搜尋密碼檔案得到使用者的Home目錄。
通過Homes段,Samba可以得到使用者的Home目錄并使之共享。
下面是這個段的最基本的幾個設定。
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
write list = +staff @用來指定可以在該共享下寫入檔案的使用者
這裡printable指明該列印機可以列印, guest ok說明遊客也能列印,path指明列印的檔案隊列暫時放到/var/spool/samba目錄下。
SAMBA 配置檔案的格式
[global] ###全局控制段
workgroup = workgroup(MYGROUP) #工作組
server string = Samba Server Version %v
security = user
encrypt passwords = yes #密碼加密
wins support = yes #wins支援
log level = 1 #日志級别
max log size = 1000 #最大日志kb
read only = no #可讀寫
[homes] 共享目錄名稱 #家目錄
browsable = no #浏覽
map archive = yes
[printers] #列印機
path = /var/tmp #指定目錄
printable = yes #是個列印機
min print space = 2000 #空間
[test] #共享的目錄
browsable = yes #可浏覽
read only = yes #隻讀
path = /usr/local/samba/tmp #共享的伺服器目錄
例子:
[global]
workgroup = workgroup
[homes]
browseable = no
writable = yes
[test]
path = /share
comment = test a directory
#重新開機服務
[[email protected] samba]# systemctl restart smb
[[email protected] samba]# systemctl restart nmb
windows系統中删除登陸緩存資訊
cmd>net use * /delete
在window資源裝置器上去通路:\192.168.0.130
提示要賬号和密碼:
添加samba使用者
(先useradd添加使用者)
[[email protected] samba]# smbpasswd -a xixi
New SMB password:
Retype new SMB password:
Added user xixi.
檢視samba使用者用
#pdbedit -L
最後看到兩個目錄 使用者家目錄 xixi test 對應得是/share
實驗提升:
要求:
1、通過samba實作公司的檔案交換伺服器,
2、實作/public 目錄讓所有人通路,所有人都可以寫入檔案
配置示例:
[[email protected] samba]# cat smb.conf
[global]
workgroup = workgroup
[public]
path = /public
public = yes
comment = file
writable = yes
注意:selinux開啟的狀态下,需要執行:chcon -t samba_share_t /public -R
使用者控制:
1.public =所有使用者都可以通路 / guest ok =yes/no
2. map to guest = Bad User 匿名通路
3. browsable = 可浏覽(設定共享是否可遊覽,如果是no表示隐藏,通過ip+共享名進行通路)
4. writable = yes 可寫,還要看目錄權限
5. writable list = maomao,@GROUPNAME,+GROUPNAME
6. readonly = yes 隻讀設定
7. create mask = 0644 客戶機建立檔案權限
8. directory mask = 0744 客戶機建立目錄的權限
9. valid users = user1,user2,@group1//禁止登入使用者,使用者用逗号隔開,組用@ //禁止
invalid = //允許通路控制
10. max connections = 最大連接配接數目
11. deadtime = 斷掉連接配接時間(分鐘,0為不限制
12. hosts allow = 允許主機
hosts deny = 拒絕主機(允許優先)
實驗提升2:
案例2 要求:
1、通過samba提供一個公共檔案伺服器,所有人都可以通路并寫入,但是不可以删除和修改他人的檔案。
2、技術部需要一個檔案伺服器,用于存放常用的軟體工具,所有人都可以通路,但是隻有技術部可以寫入
3、每個人都可以進入自己的獨立家目錄,别人不可以通路。
配置示例:
[[email protected] ~]# vim /etc/samba/smb.conf
[global]
workgroup = workgroup
security = user
[public] 共享名
path = /public 共享路徑
public = yes 指定該共享目錄是否允許guest賬戶通路
comment = file 共享目錄的描述
writable = yes 該目錄路徑是否可寫
[soft]
path = /soft
public = yes
comment = soft
write list = @jishubu (表示技術部組的人可以寫添加技術部組将使用者加入組,并将使用者改為samba使用者)
[homes]
browsable = no
writable = yes
[[email protected] ~]# chcon -t samba_share_t /soft
[[email protected] ~]# chcon -t samba_share_t /share
[[email protected] ~]# setsebool -P samba_export_all_rw on
注意SELINUX開啟的情況下,需要執行setsebool -P samba_enable_home_dirs on 否則,使用者不能進入自己的家目錄