RHCE(十四)Windows和Linux文件共享——Samba服務

Samba協議

SMB(Server Message block)協議是window下所使用的文件共享協議,我們在linux系統或者其類unix系統當中可以通過samba服務來實現SMB功能。Samba服務是SMB的一個開源實現。

在NetBIOS 出現之後,Microsoft就使用NetBIOS實現了一個網絡文件/打印服務系統,這個系統基於NetBIOS設定了一套文件共享協議, Microsoft稱之爲SMB(Server Message Block)協議。這個協議被Microsoft用於它們Lan Manager和Windows NT服務器系統中,實現不同計算機之間共享打印機、串行口和通訊抽象(如命名管道、郵件插槽等)。

隨着 Internet的流行,Microsoft希望將這個協議擴展到Internet上去,成爲Inter net上計算機之間相互共享數據的一種標準。因此它將原有的幾乎沒有多少技術文檔的SMB協議進行整理,重新命名爲 CIFS(Common Internet File System),並打算將它與NetBIOS相脫離,試圖使它成爲Internet上的一個標準協議。

Samba軟件的功能

想要讓Windows和Unix計算機相集成,最好的辦法即是在Unix計算機中安裝支持SMB/CIFS協議的軟件,這樣Windows客戶就不需要更改設置,就能如同使用Windows NT服務器一樣,使用Unix計算機上的資源了。Samba是用來實現SMB的一種軟件,它的工作原理是,讓NETBIOS(Windows95網絡鄰居的通訊協議)和SMB(Server Message Block)這兩個協議運行於TCP/IP通信協議之上,並且使用Windows的NETBEUI協議讓Unix計算機可以在網絡鄰居上被Windows 計算機看到。它的功能有:

  1. 共享Linux磁盤給Win95/NT
  2. 共享Win95/NT磁盤給Linux機器
  3. 共享Linux打印機給win95/NT
  4. 共享win95/NT打印機給Linux機器

兩個服務

安裝samba

Yum install samba -y

Samba擁有兩個主服務(相關服務)

  • smbd:對於一般使用的服務他只有一個主服務 smbd (提供samba核心功能也是使用最多的一種功能)
    提供文件及打印共享服務功能,使用139/445端口
  • nmbd:nmbd 提供Netbios(解析協議慢慢的被淘汰)支持,使用137/138端口,而對於這種協議使用較少,現在都是dns進行解析

一般作爲文件共享使用samba,則只需要smbd服務

使用的端口

Port 137 Used for NetBIOS network browsing
Port 138 Used for NetBIOS name service
Port 139 Used for file and printer sharing and other operations
Port 445 Used by Windows 2000/XP when NetBIOS over TCP/IP is disabled

NFS、samba、FTP三種文件傳輸協議的區別

NFS:Network File System 是已故的Sun公司制定的用於分佈式訪問的文件系統,它的本質是文件系統。主要在Unix系列操作系統上使用,基於TCP/IP協議層,可以將遠程的計算機磁盤掛載到本地,像本地磁盤一樣操作。

samba是Unix系統下實現的 Windows文件共享協議-CIFS,由於Windows共享是基於NetBios協議,是基於Ethernet的廣播協議,在沒有透明網橋的情況下(如VPN)是不能跨網段使用的。它主要用於unix和windows系統進行文件和打印機共享,也可以通過samba套件中的程序掛載到本地使用。

FTP的目的是在Internet上共享文件而發明的一種協議,基於TCP/IP。世界上絕大多數系統都會有支持FTP的工具存在,通用性很強。目前少有人把VPS修改成支持FTP組件的形式,主要是因爲FTP一開始就不是爲了文件系統而設計的。

三種協議雖然都可以支持文件共享,但是其功能點和側重點上面各有所不同,協議格式不同。Authentication登陸方式也會隨着協議的內容也有所不同。

SAMBA配置文件

Samba的配置文件爲/etc/samba/smb.conf,配置文件分爲三個部分:

  • [global] 定義全局性配置(配置samba服務的相關參數)
  • [homes] 定義對用戶家目錄的共享配置(其實在默認情況下不做任何設置,直接啓用服務我們就可以通過smb協議訪問所有用戶的家目錄)
  • [printers] 定義打印機共享配置

global

[global]					###全局控制段###
    workgroup = MYGROUP		#定義該Samba服務器所在的工作組或者域
    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			    #可讀寫

其中security = user定義Samba的安全級別,按從低到高分爲四級:share,user,server,domain。它們對應的驗證方式如下:
* share:沒有安全性的級別,任何用戶都可以不要用戶名和口令訪問服務器上的資源。
* user:samba的默認配置,要求用戶在訪問共享資源之前資源必須先提供用戶名和密碼進行驗證。
* server:和user安全級別類似,但用戶名和密碼是遞交到另外一個服務器去驗證,比如遞交給一臺NT服務器。如果遞交失敗,就退到user安全級。
* domain:這個安全級別要求網絡上存在一臺Windows的主域控制器,samba把用戶名和密碼遞交給它去驗證。
後面三種安全級都要求用戶在本Linux機器上也要系統帳戶。否則是不能訪問的。

homes

[homes] 					#家目錄
   	comment = Home Directories
	browsable = no				
	writable = yes

當客戶機發出服務請求時,就在smb.conf文件的其它部分查找友特定內容的服務。如果沒有發現這些服務,並且提供了homes段時,那麼就搜索密碼文件得到用戶的Home目錄。通過Homes段,Samba可以得到用戶的Home目錄並使之共享。

用戶控制:本地用戶

 public =所有用戶都可以訪問    /guest ok=yes/no
 map to guest = Bad User	匿名訪問
 browseable = 可瀏覽(設置共享是否可遊覽,如果是no表示隱藏,通過ip+共享名進行訪問)
 writable = yes	可寫,還要看目錄權限     rw
 write list = maomao,@GROUPNAME,+GROUPNAME
 read only = yes 只讀設置     ro
 create mask = 0644 客戶機創建文件權限
 directory mask = 0755 客戶機創建目錄的權限
 valid user = //允許
invalid =  user1,user2,@group1//禁止登錄用戶,用戶用逗號隔開,組用@  //禁止  
訪問控制
 max connections = 最大連接數目
 deadtime = 斷掉連接時間(分鐘,0爲不限制)
 hosts allow =	允許主機  
 hosts deny =	拒絕主機  允許優先

printers

[printers] 					#打印機
	comment = All Printers
	path = /var/spool/samba		#指定目錄
	browseable = no
	guest ok = no				#說明遊客也能打印
	writable = no
	printable = yes				#指明該打印機可以打印
	write list = +staff   		#用來指定可以在該共享下寫入文件的用戶        

修改配置文件必須重啓服務才生效

[root@mail samba]# systemctl restart smb
[root@mail samba]# systemctl restart nmb

添加samba用戶

上面的安全級別爲security = user,所以要添加samba用戶(先useradd添加用戶)

[root@localhost samba]# smbpasswd -a user1
New SMB password:
Retype new SMB password:
Added user user1.

查看samba用戶用:pdbedit -L

Windows客戶端訪問

在window資源設備器上去訪問:

\\192.168.0.130

Windows會緩存用戶登錄信息,若要修改後再查看需要刪除緩存信息

cmd>net use * /delete		windows系統中刪除登陸緩存信息

linux客戶端訪問

安裝軟件包——samba-client

列出服務器資源


[root@localhost ~]# smbclient -L //192.168.171.143 -U xixi
出現錯誤(暫時可以解決):
protocol negotiation failed: NT_STATUS_IO_TIMEOUT
解決辦法是在客戶端的/etc/hosts文件中添加客戶端和服務端的地址映射
如:
192.168.40.131  web
192.168.40.132  ldap

通過客戶端 進入samba

[root@localhost ~]# smbclient  //192.168.221.129/public -U xixi
Enter xixi's password: 
Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.2.3]
smb: \>ls  	查看共享目錄信息
smb: \> mget File  下載文件
smb: \>showconnect	 查看連接情況

客戶端掛載文件系統

手動掛載(臨時掛載)

#掛載使用資源
mount  //192.168.171.143/share    /share   -o username=xixi,password=redhat
掛載命令    指定文件系統             掛載點目錄 -o 指定掛載參數列表信息

開機自動掛載

//192.168.142.128/share	/pub	  cifs	   	defaults,username=xixi,password=redhat      0  0                                                                                                                                           (通用互聯網文件系統)
共享目錄		          掛載點目錄 文件系統類型  掛載參數,基於用戶密碼參數	              開機是否檢查 是否備份

autofs自動掛載

#安裝autofs
yum install autofs -y

#主配置文件
vim /etc/auto.master
	/auto 	/etc/auto.msic 
	掛載點	掛載時指定的配置文件

#掛載時使用的配置文件
public   			-fstype=cifs,username=user1,password=redhat  	://192.168.0.128/public
觸發條件(掛載點目錄)	文件系統參數信息								    文件系統

注意:掛載時參數信息必須指定文件系統類型和用戶名和密碼

練習:多用戶SMB掛載

在服務器上通過SMB共享目錄/devops,並滿足以下要求
1、共享名爲devops
2、共享目錄devops只能被192.168.171.0/24網段中的客戶端使用 hosts allow = 172.16.80.
3、共享目錄devops必須可以被瀏覽
4、用戶xixi必須能以讀的方式訪問此共享,訪問密碼是redhat ro
5、用戶haha必須能以讀寫的方式訪問此共享,訪問密碼是redhat rw
此共享永久掛載在192.168.171.144上的/mnt/dev/目錄,並使用用戶xixi作爲認證任何用戶可以通過用戶haha來臨時獲取寫的權限

配置服務端

1、 安裝軟件
[root@wangxing ~]# yum install samba -y

2、修改配置文件
[root@wangxing samba]# vim smb.conf
在這裏插入圖片描述

3、創建/devops目錄
[root@wangxing ~]# mkdir /devops

4、添加Samba用戶,並設置訪問控制
在這裏插入圖片描述
5、重啓smb,nmb服務,關閉防火牆和selinux
[root@wangxing ~]# systemctl restart smb nmb
[root@wangxing ~]# systemctl stop firewalld
[root@wangxing ~]# setenforce 0

配置客戶端

1、 安裝cifs-utils軟件
[root@desktop ~]# yum install cifs-utils -y

2、創建掛載點目錄
在這裏插入圖片描述
3、創建和服務端同樣的測試用戶
[root@desktop ~]# useradd -u 1111 haha
[root@desktop ~]# useradd -u 2222 xixi

4、 修改fstab文件
[root@desktop ~]# vim /etc/fstab

//172.24.8.128/devops  /123/dev  cifs      defaults,multiuser,username=xixi,password=redhat,sec=ntlmssp  0 0
共享目錄		          掛載點	  文件系統類型   參數:默認,多用戶掛載,用戶,密碼,安全級別=網絡安全級別		       開機自檢 是否備份

[root@desktop ~]# mount -a

5、提權cifs-utils對xixi和haha用戶提權

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