28 网络文件共享服务
文章目錄
- 網(wǎng)絡(luò)文件共享服務(wù)
- 本章內(nèi)容
- 存儲(chǔ)類型
- FTP服務(wù)
- NFS服務(wù)
- SAMBA服務(wù)
- 網(wǎng)絡(luò)數(shù)據(jù)同步
- 1 存儲(chǔ)類型
- 存儲(chǔ)類型分為三種
- 1.1 DAS存儲(chǔ)
- 1.2 NAS存儲(chǔ)
- 但NAS有一個(gè)關(guān)鍵性問(wèn)題,即備份過(guò)程中的帶寬消耗。與將備份數(shù)據(jù)流從LAN中轉(zhuǎn)移出去的存儲(chǔ)區(qū)域網(wǎng)(SAN)不同,NAS仍使用網(wǎng)絡(luò)進(jìn)行備份和恢復(fù)。NAS 的一個(gè)缺點(diǎn)是它將存儲(chǔ)事務(wù)由并行SCSI連接轉(zhuǎn)移到了網(wǎng)絡(luò)上。這就是說(shuō)LAN除了必須處理正常的最終用戶傳輸流外,還必須處理包括備份操作的存儲(chǔ)磁盤(pán)請(qǐng)求。
- 1.3 SAN存儲(chǔ)
- SAN的優(yōu)勢(shì):
- 1.4 三種存儲(chǔ)比較
- SAN與NAS的主要-別體現(xiàn)在文件系統(tǒng)所在的位置
- 三種存儲(chǔ)架構(gòu)的應(yīng)用場(chǎng)景
- 2 文件傳輸協(xié)議FTP
- 2.1 FTP工作原理介紹
- 兩種模式:從服務(wù)器角度
- 命令(控制):客戶端:隨機(jī)port ---> 服務(wù)器:21/tcp
- 數(shù)據(jù):客戶端:隨機(jī)port <---服務(wù)器:20/tcp
- 命令(控制):客戶端:隨機(jī)port ---> 服務(wù)器:21/tcp
- 數(shù)據(jù):客戶端:隨機(jī)port ---> 服務(wù)器:隨機(jī)port /tcp
- 范例:服務(wù)器被動(dòng)模式數(shù)據(jù)端口
- FTP服務(wù)狀態(tài)碼:
- 用戶認(rèn)證:
- 2.2 常見(jiàn) FTP 相關(guān)軟件
- FTP服務(wù)器端軟件
- 客戶端軟件:
- 2.3 vsftpd 軟件介紹
- 由 vsftpd 包提供,不再由xinetd管理
- 用戶認(rèn)證配置文件:/etc/pam.d/vsftpd
- 啟動(dòng)服務(wù)相關(guān)文件:
- 配置文件:
- 配置文件格式:
- 用戶和其共享目錄
- 2.4 vsftpd服務(wù)常見(jiàn)配置
- 2.4.1 命令端口
- listen_port=21
- 2.4.2 主動(dòng)模式端口
- connect_from_port_20=YES 主動(dòng)模式端口為20
- ftp_data_port=20 (默認(rèn)) 指定主動(dòng)模式的端口
- 2.4.3 被動(dòng)模式端口范圍
- linux 客戶端默認(rèn)使用被動(dòng)模式
- windows 客戶端默認(rèn)使用主動(dòng)模式
- pasv_min_port=6000 0為隨機(jī)分配
- pasv_max_port=6010
- 2.4.4 使用當(dāng)?shù)貢r(shí)間
- use_localtime=YES 使用當(dāng)?shù)貢r(shí)間(默認(rèn)為NO,使用GMT)
- 2.4.5 匿名用戶登錄
- anonymous_enable=YES 支持匿名用戶
- no_anon_password=YES 匿名用戶略過(guò)口令檢查 , 默認(rèn)NO
- 2.4.6 匿名用戶上傳
- anon_upload_enable=YES 匿名上傳,注意:文件系統(tǒng)權(quán)限
- anon_mkdir_write_enable=YES 匿名建目錄
- anon_world_readable_only 只能下載全部讀的文件, 默認(rèn)YES
- anon_umask=0333 指定匿名上傳文件的umask,默認(rèn)077
- anon_other_write_enable=YES 可刪除和修改上傳的文件, ,默認(rèn)NO
- 2.4.7 指定匿名用戶的上傳文件的默認(rèn)的所有者和權(quán)限
- chown_uploads=YES 默認(rèn)NO
- chown_username=wang
- chown_upload_mode=0644
- 2.4.8 Linux系統(tǒng)用戶
- local_enable=YES 是否允許linux用戶登錄
- write_enable=YES 允許linux用戶上傳文件
- local_umask=022 指定系統(tǒng)用戶上傳文件的默認(rèn)權(quán)限
- 2.4.9 將系統(tǒng)用戶映射為指定的guest用戶
- guest_enable=YES 所有系統(tǒng)用戶都映射成guest用戶
- guest_username=ftp 配合上面選項(xiàng)才生效,指定guest用戶
- local_root=/ftproot guest用戶登錄所在目錄
- 2.4.10 禁錮系統(tǒng)用戶
- 禁錮所有系統(tǒng)在家目錄中
- 禁錮或不禁錮特定的系統(tǒng)用戶在家目錄中,與上面設(shè)置功能相反
- 2.4.11 日志
- wu-ftp日志:默認(rèn)啟用
- vsftpd日志:默認(rèn)不啟用
- 2.4.12 提示信息
- 登錄提示信息
- 目錄訪問(wèn)提示信息
- 2.4.13 PAM模塊實(shí)現(xiàn)用戶訪問(wèn)控制
- pam_service_name=vsftpd
- pam配置文件:/etc/pam.d/vsftpd
- /etc/vsftpd/ftpusers 默認(rèn)文件中用戶拒絕登錄
- 2.4.14 是否啟用控制用戶登錄的列表文件
- userlist_enable=YES 此為默認(rèn)值
- userlist_deny=YES(默認(rèn)值) 黑名單,不提示口令,NO為白名單
- userlist_file=/etc/vsftpd/users_list 此為默認(rèn)值
- 2.4.15 連接數(shù)限制
- max_clients=0 最大并發(fā)連接數(shù)
- max_per_ip=0 每個(gè)IP同時(shí)發(fā)起的最大連接數(shù)
- 2.4.16 傳輸速率,字節(jié)/秒
- anon_max_rate=0 匿名用戶的最大傳輸速率
- local_max_rate=0 本地用戶的最大傳輸速率
- 2.4.17 連接時(shí)間:秒為單位
- connect_timeout=60 主動(dòng)模式數(shù)據(jù)連接超時(shí)時(shí)長(zhǎng)
- accept_timeout=60 被動(dòng)模式數(shù)據(jù)連接超時(shí)時(shí)長(zhǎng)
- data_connection_timeout=300 數(shù)據(jù)連接無(wú)數(shù)據(jù)輸超時(shí)時(shí)長(zhǎng)
- idle_session_timeout=60 無(wú)命令操作超時(shí)時(shí)長(zhǎng)
- 2.4.18 優(yōu)先以文本方式傳輸
- scii_upload_enable=YES
- ascii_download_enable=YES
- 2.4.19 實(shí)現(xiàn)基于SSL的FTPS
- 查看是否支持SSL
- 范例:
- 配置vsftpd服務(wù)支持SSL:
- 2.5 vsftpd 虛擬用戶
- 虛擬用戶:
- 虛擬用戶帳號(hào)的存儲(chǔ)方式:
- 2.5.1 實(shí)現(xiàn)基于文件驗(yàn)證的vsftpd虛擬用戶
- 2.5.1.1 創(chuàng)建用戶數(shù)據(jù)庫(kù)文件
- 2.5.1.2 創(chuàng)建用戶和訪問(wèn)FTP目錄
- 2.5.1.3 創(chuàng)建pam配置文件
- 2.5.1.4 指定pam配置文件
- 2.5.1.5 虛擬用戶建立獨(dú)立的配置文件
- 2.5.2 實(shí)現(xiàn)基于MYSQL驗(yàn)證的vsftpd虛擬用戶
- 環(huán)境準(zhǔn)備
- 本實(shí)驗(yàn)在兩臺(tái)CentOS主機(jī)上實(shí)現(xiàn), CentOS 7 一臺(tái)做為FTP服務(wù)器,一臺(tái)做數(shù)據(jù)庫(kù)服務(wù)器
- 2.5.2.1 在數(shù)據(jù)庫(kù)服務(wù)器上安裝mysql數(shù)據(jù)庫(kù)
- 2.5.2.2 在數(shù)據(jù)庫(kù)服務(wù)上配置數(shù)據(jù)庫(kù)支持vsftpd服務(wù)
- 2.5.2.3 在FTP服務(wù)器上安裝vsftpd 和 pam_mysql包
- 2.5.2.4 在FTP服務(wù)器上安裝 pam_mysql
- 對(duì)于 centos 6:pam_mysql由EPEL的源中提供
- 對(duì)于 centos7 和 8:無(wú)對(duì)應(yīng)rpm包,需手動(dòng)編譯安裝
- 2.5.2.5 在FTP服務(wù)器上建立pam認(rèn)證所需文件
- 注意:以上參考 README文檔
- crypt 加密方式:
- 配置字段說(shuō)明
- 2.5.2.6 建立相應(yīng)用戶和修改vsftpd配置文件
- 2.5.2.7 在FTP服務(wù)器上配置虛擬用戶具有不同的訪問(wèn)權(quán)限
- 3 NFS服務(wù)
- 3.1 NFS工作原理
- 3.2 NFS軟件介紹
- 軟件包:nfs-utils
- 相關(guān)軟件包:rpcbind(必須),tcp_wrappers
- Kernel支持:nfs.ko
- 端口:2049(nfsd), 其它端口由portmap(111)分配
- NFS服務(wù)主要進(jìn)程:
- 日志:/var/lib/nfs/
- NFS配置文件:
- /etc/exports
- /etc/exports.d/*.exports
- 3.3 NFS共享配置文件格式
- 格式說(shuō)明:
- \#開(kāi)始為注釋
- 主機(jī)格式:
- 每個(gè)條目指定目錄導(dǎo)出到的哪些主機(jī),及相關(guān)的權(quán)限和選項(xiàng)
- 范例:NFS配置示例
- 3.4 NFS工具
- 3.4.1 rpcinfo
- rpcinfo 工具可以查看RPC相關(guān)信息
- 查看注冊(cè)在指定主機(jī)的RPC程序
- 查看RPC注冊(cè)程序
- 范例:rpcinfo
- 3.4.2 exportfs
- exportfs:可用于管理NFS導(dǎo)出的文件系統(tǒng)
- 常見(jiàn)選項(xiàng):
- 3.4.3 showmount
- 常見(jiàn)用法:
- 3.4.4 mount.nfs
- 客戶端NFS掛載
- NFS相關(guān)的掛載選項(xiàng):man 5 nfs
- 提示:基于安全考慮,建議使用nosuid,nodev,noexec掛載選項(xiàng)_
- 范例:臨時(shí)掛載NFS共享
- 范例:開(kāi)機(jī)掛載
- 3.5 自動(dòng)掛載
- 可使用 autofs 服務(wù)按需要掛載外圍設(shè)備,NFS共享等,并在空閑5分鐘后后自動(dòng)卸載
- 3.5.1 相關(guān)包和文件
- 軟件包:autofs
- 服務(wù)文件:/usr/lib/systemd/system/autofs.service
- 配置文件:/etc/auto.master
- 3.5.2 配置文件格式
- 參看幫助:man 5 autofs
- 所有導(dǎo)出到網(wǎng)絡(luò)中的NFS啟用特殊匹配 -host 至“browse”
- 范例:/net目錄可以自動(dòng)掛載NFS共享
- 自動(dòng)掛載資源有兩種格式:
- 相對(duì)路徑法:
- /etc/auto.master 格式
- 指定目錄的配置文件格式
- 范例:相對(duì)路徑法
- 范例:相對(duì)路徑法為支持通配符
- 絕對(duì)路徑法
- /etc/auto.master 格式
- 指定配置文件格式
- 范例:絕對(duì)路徑法
- 3.7 實(shí)戰(zhàn)案例
- 3.7.1 目標(biāo)
- 將NFS的共享目錄,通過(guò)autofs 發(fā)布出來(lái),做為遠(yuǎn)程主機(jī)用戶的家目錄
- 3.7.2 環(huán)境準(zhǔn)備
- 三臺(tái)主機(jī)
- 一臺(tái)主機(jī) nfs server,IP:192.168.8.100
- 另兩臺(tái)當(dāng) nfs client,IP:192.168.8.101和192.168.8.102
- 3.7.3 步驟
- 4 SAMBA服務(wù)
- 4.1 SAMBA服務(wù)簡(jiǎn)介
- SMB:Server Message Block 服務(wù)器消息塊,IBM發(fā)布,最早是DOS網(wǎng)絡(luò)文件共享協(xié)議
- CIFS:common internet file system,微軟基于SMB發(fā)布
- SAMBA:1991年Andrew Tridgell,實(shí)現(xiàn) windows和UNIX相通
- 官方網(wǎng)站:http://www.samba.org/
- SAMBA的功能:
- 共享文件和打印,實(shí)現(xiàn)在線編輯
- 實(shí)現(xiàn)登錄SAMBA用戶的身份認(rèn)證
- 可以進(jìn)行NetBIOS名稱解析
- 外圍設(shè)備共享
- Windows計(jì)算機(jī)網(wǎng)絡(luò)管理模式:
- 工作組WORKGROUP:計(jì)算機(jī)對(duì)等關(guān)系,帳號(hào)信息各自管理
- 域DOMAIN:C/S結(jié)構(gòu),帳號(hào)信息集中管理,DC,AD
- 4.2 SAMBA軟件介紹
- 相關(guān)包:
- samba 提供smb服務(wù)
- samba-client 客戶端軟件
- samba-common 通用軟件
- cifs-utils smb客戶端工具
- samba-winbind 和AD相關(guān)
- 相關(guān)服務(wù)進(jìn)程:
- smbd 提供smb(cifs)服務(wù) TCP:139,445
- nmbd NetBIOS名稱解析 UDP:137,138
- 主配置文件:/etc/samba/smb.conf 幫助參看:man smb.conf
- 語(yǔ)法檢查: testparm [-v] [/etc/samba/smb.conf]
- 客戶端工具:smbclient,mount.cifs
- 范例:
- 4.3 SAMBA客戶端工具
- UNC路徑: Universal Naming Convention,通用命名規(guī)范,格式如下
- 4.3.1 使用smbclient 訪問(wèn)SAMBA服務(wù)器
- 4.3.2 掛載CIFS文件系統(tǒng)
- 范例:手動(dòng)掛載
- 范例:開(kāi)機(jī)自動(dòng)掛載
- 4.4 管理SAMBA用戶
- 4.4.1 實(shí)現(xiàn)samba用戶說(shuō)明
- 包:samba-common-tools
- 工具:smbpasswd pdbedit
- 用戶數(shù)據(jù)庫(kù):/var/lib/samba/private/passdb.tdb
- 說(shuō)明:samba用戶須是Linux用戶,建議使用/sbin/nologin
- 4.4.2 管理用戶命令
- 添加samba用戶:
- 修改用戶密碼:
- 刪除用戶和密碼:
- 查看samba用戶列表:
- 范例:
- 查看samba服務(wù)器狀態(tài):
- 范例:
- 4.5 SAMBA服務(wù)器配置
- samba 配置文件 /etc/smb.conf 格式 ,使用.ini文件的格式
- 用 [ ] 分分成以下幾部分
- 全局設(shè)置:
- 特定共享設(shè)置:
- samba配置中的宏定義:
- 4.5.1 SAMBA服務(wù)器全局配置
- workgroup 指定工作組名稱
- server string 主機(jī)注釋信息
- netbios name 指定NetBIOS名,注意:netbios name需要啟動(dòng)nmb服務(wù)
- 范例:
- interfaces 指定服務(wù)偵聽(tīng)接口和IP
- hosts allow 可用逗號(hào),空格,或tab分隔,默認(rèn)允許所有主機(jī)訪問(wèn),也可在每個(gè)共享獨(dú)立配置,如在[global]設(shè)置,將應(yīng)用并覆蓋所有共享設(shè)置,可以是以下格式:
- 范例:
- hosts deny 拒絕指定主機(jī)訪問(wèn),格式和hosts allow 相同
- config file=/etc/samba/conf.d/%U 用戶獨(dú)立的配置文件
- Log file=/var/log/samba/log.%I 不同客戶機(jī)采用不同日志
- log level = 2 日志級(jí)別,默認(rèn)為0,不記錄日志
- 范例:
- max log size=50 日志文件達(dá)到50K,將輪循rotate,單位KB
- Security三種認(rèn)證方式:
- passdb backend = tdbsam 密碼數(shù)據(jù)庫(kù)格式
- 4.5.2 配置特定目錄共享
- 每個(gè)共享目錄應(yīng)該有獨(dú)立的[ ]部分
- [共享名稱] 遠(yuǎn)程網(wǎng)絡(luò)看到的共享名稱
- 范例:基于特定用戶和組的共享
- 4.6 實(shí)戰(zhàn)案例
- 4.6.1 實(shí)戰(zhàn)案例:利用SAMBA實(shí)現(xiàn)指定目錄共享
- 4.6.2 實(shí)戰(zhàn)案例2:實(shí)現(xiàn)不同samba用戶訪問(wèn)相同的samba共享,實(shí)現(xiàn)不同的配置
- 5 數(shù)據(jù)的實(shí)時(shí)同步
- 在生產(chǎn)環(huán)境,有時(shí)會(huì)需要兩臺(tái)主機(jī)的特定目錄實(shí)現(xiàn)實(shí)時(shí)同步。比如,將NFS共享目錄的數(shù)據(jù)文件,自動(dòng)實(shí)時(shí)同步到備份的服務(wù)器特定目錄中
- 5.1 實(shí)時(shí)同步技術(shù)介紹
- 實(shí)現(xiàn)實(shí)時(shí)同步的方法
- 工作原理:
- inotify:
- 實(shí)現(xiàn)inotify軟件:
- inotify+rsync使用方式
- 5.2 實(shí)現(xiàn)inotify
- 5.2.1 內(nèi)核支持
- 內(nèi)核是否支持inotify
- inotify內(nèi)核參數(shù)說(shuō)明:
- 范例:
- 5.2.2 inotify-tools工具
- inotify-tools參考文檔:https://github.com/rvoicilas/inotify-tools/wiki
- 安裝inotify-tools:基于epel源
- inotify-tools包主要工具:
- inotifywait 命令常見(jiàn)選項(xiàng)
- inotifywait 的--timefmt 時(shí)間格式
- 參考 man 3 strftime
- inotifywait 的 --format 格式定義
- 范例:
- inotifywait -e 選項(xiàng)指定的事件類型
- 范例:
- 范例:使用inotifywait
- 5.3 rsync
- rsync 常用于做為 linux系統(tǒng)下的數(shù)據(jù)鏡像備份工具,實(shí)現(xiàn)實(shí)現(xiàn)遠(yuǎn)程同步,支持本地復(fù)制,或者與其他SSH、rsync主機(jī)同步數(shù)據(jù),支持增量備份,配合任務(wù)計(jì)劃,rsync能實(shí)現(xiàn)定時(shí)或間隔同步,配合inotify或sersync,可以實(shí)現(xiàn)觸發(fā)式的實(shí)時(shí)數(shù)據(jù)同步
- 官方網(wǎng)站: http://rsync.samba.org/
- 軟件包:rsync,rsync-daemon(CentOS 8)
- 服務(wù)文件:/usr/lib/systemd/system/rsyncd.service
- 配置文件:/etc/rsyncd.conf
- 端口:873/tcp
- 5.3.1 rsync命令
- rsync 格式
- rsync有三種工作方式:
- 前兩者的本質(zhì)是通過(guò)本地或遠(yuǎn)程shell,而第3種方式則是讓遠(yuǎn)程主機(jī)上運(yùn)行rsyncd服務(wù),使其監(jiān)聽(tīng)在一個(gè)端口上,等待客戶端的連接。
- 常見(jiàn)選項(xiàng):
- 5.3.2 以獨(dú)立服務(wù)方式運(yùn)行rsync
- 范例:以獨(dú)立服務(wù)方式運(yùn)行 rsync
- 5.4 創(chuàng)建inotify_rsync.sh腳本
- 5.5 實(shí)戰(zhàn)案例:實(shí)現(xiàn)基于分布式的LAMP架構(gòu),并將NFS實(shí)時(shí)同步到備份服務(wù)器
網(wǎng)絡(luò)文件共享服務(wù)
本章內(nèi)容
-
存儲(chǔ)類型
-
FTP服務(wù)
-
NFS服務(wù)
-
SAMBA服務(wù)
-
網(wǎng)絡(luò)數(shù)據(jù)同步
1 存儲(chǔ)類型
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-O4DEQz7f-1577107595321)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223130012238.png)]
-
存儲(chǔ)類型分為三種
- 直連式存儲(chǔ):Direct-Attached Storage,簡(jiǎn)稱DAS
- 網(wǎng)絡(luò)附加存儲(chǔ):Network-Attached Storage,簡(jiǎn)稱NAS
- 存儲(chǔ)區(qū)域網(wǎng)絡(luò):Storage Area Network,簡(jiǎn)稱SAN
1.1 DAS存儲(chǔ)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-ZYsNkfkb-1577107595323)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223130159383.png)]
- DAS存儲(chǔ)是最常見(jiàn)的一種存儲(chǔ)方式,尤其是在中小企業(yè)應(yīng)用中。PC中的硬盤(pán)或只有一個(gè)外部SCSI接口的JBOD都屬于DAS架構(gòu)。DAS是指存儲(chǔ)設(shè)備直接連接到服務(wù)器總線上,存儲(chǔ)設(shè)備只與一臺(tái)獨(dú)立的主機(jī)連接,其他主機(jī)不能使用這個(gè)存儲(chǔ)設(shè)備。DAS存儲(chǔ)設(shè)備與服務(wù)器主機(jī)之間的連接通道通常采用SCSI連接,DAS存儲(chǔ)設(shè)備主要是磁盤(pán)陣列(RAID: Redundant Arrays of Independent Disks)、磁盤(pán)簇(JBOD:Just a Bunch Of Disks)等。
1.2 NAS存儲(chǔ)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-7xIrosEs-1577107595324)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223130252166.png)]
- NAS存儲(chǔ)就是存儲(chǔ)設(shè)備通過(guò)標(biāo)準(zhǔn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)(比如以太網(wǎng))添加到一群計(jì)算機(jī)上。與DAS以及SAN不同,NAS是文件級(jí)的存儲(chǔ)方法。采用NAS較多的功能是用來(lái)進(jìn)行文件共享。
- NAS存儲(chǔ)也通常被稱為附加存儲(chǔ),顧名思義,就是存儲(chǔ)設(shè)備通過(guò)標(biāo)準(zhǔn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)(例如以太網(wǎng))添加到一群計(jì)算機(jī)上。NAS是文件級(jí)的存儲(chǔ)方法,它的重點(diǎn)在于幫助工作組和部門級(jí)機(jī)構(gòu)解決迅速增加存儲(chǔ)容量的需求。如今更多的親們采用NAS較多的功能是用來(lái)文檔共享、圖片共享、電影共享等等,而且隨著云計(jì)算的發(fā)展,一些NAS廠商也推出了云存儲(chǔ)功能,大大方便了企業(yè)和親們等個(gè)人用戶的使用。
- NAS產(chǎn)品是真正即插即用的產(chǎn)品。NAS設(shè)備一般支持多計(jì)算機(jī)平臺(tái),用戶通過(guò)網(wǎng)絡(luò)支持協(xié)議可進(jìn)入相同的文檔,因而NAS設(shè)備無(wú)需改造即可用于混合Unix/Windows NT局域網(wǎng)內(nèi),同時(shí)NAS的應(yīng)用非常靈活。
-
但NAS有一個(gè)關(guān)鍵性問(wèn)題,即備份過(guò)程中的帶寬消耗。與將備份數(shù)據(jù)流從LAN中轉(zhuǎn)移出去的存儲(chǔ)區(qū)域網(wǎng)(SAN)不同,NAS仍使用網(wǎng)絡(luò)進(jìn)行備份和恢復(fù)。NAS 的一個(gè)缺點(diǎn)是它將存儲(chǔ)事務(wù)由并行SCSI連接轉(zhuǎn)移到了網(wǎng)絡(luò)上。這就是說(shuō)LAN除了必須處理正常的最終用戶傳輸流外,還必須處理包括備份操作的存儲(chǔ)磁盤(pán)請(qǐng)求。
1.3 SAN存儲(chǔ)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-q6aQvGTQ-1577107595324)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223130455456.png)]
-
存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN,文件和存儲(chǔ)空間),這個(gè)是通過(guò)光纖通道或以太網(wǎng)交換機(jī)連接存儲(chǔ)陣列和服務(wù)器主機(jī),最后成為一個(gè)專用的存儲(chǔ)網(wǎng)絡(luò)。SAN經(jīng)過(guò)十多年歷史的發(fā)展,已經(jīng)相當(dāng)成熟,成為業(yè)界的事實(shí)標(biāo)準(zhǔn)(但各個(gè)廠商的光纖交換技術(shù)不完全相同,其服務(wù)器和SAN存儲(chǔ)有兼容性的要求)。
-
SAN提供了一種與現(xiàn)有LAN連接的簡(jiǎn)易方法,并且通過(guò)同一物理通道支持廣泛使用的SCSI和IP協(xié)議。SAN不受現(xiàn)今主流的、基于SCSI存儲(chǔ)結(jié)構(gòu)的布局限制。特別重要的是,隨著存儲(chǔ)容量的爆炸性增長(zhǎng),SAN允許企業(yè)獨(dú)立地增加它們的存儲(chǔ)容量。SAN的結(jié)構(gòu)允許任何服務(wù)器連接到任何存儲(chǔ)陣列,這樣不管數(shù)據(jù)置放在那里,服務(wù)器都可直接存取所需的數(shù)據(jù)。因?yàn)椴捎昧斯饫w接口,SAN還具有更高的帶寬。
-
如今的SAN解決方案通常會(huì)采取以下兩種形式:光纖信道以及iSCSI或者基于IP的SAN,也就是FC SAN和IP SAN。光纖信道是SAN解決方案中大家最熟悉的類型,但是,最近一段時(shí)間以來(lái),基于iSCSI的SAN解決方案開(kāi)始大量出現(xiàn)在市場(chǎng)上,與光纖通道技術(shù)相比較而言,這種技術(shù)具有良好的性能,而且價(jià)格低廉。
-
SAN的優(yōu)勢(shì):
- 隨著存儲(chǔ)容量的增長(zhǎng),SAN允許企業(yè)獨(dú)立地增加他們的存儲(chǔ)容量。
- SAN允許任何服務(wù)器連接到任何存儲(chǔ)陣列(好處是:不管數(shù)據(jù)放在哪里,服務(wù)器都可以直接存取所需的數(shù)據(jù))
- 由于使用光纖接口,SAN具有更高的帶寬。除了FC連接,SAN連接還有ISCSI(SCSI over IP)以及SAS(Serial Attached SCSI)接口。
- 光纖接口可以提供10公里那么長(zhǎng)那么遠(yuǎn)的連接長(zhǎng)度,非常容易實(shí)現(xiàn)物理分離的存儲(chǔ)
1.4 三種存儲(chǔ)比較
-
SAN與NAS的主要-別體現(xiàn)在文件系統(tǒng)所在的位置
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-YrtchMJr-1577107595325)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223131404546.png)]
-
三種存儲(chǔ)架構(gòu)的應(yīng)用場(chǎng)景
- DAS雖然比較古老了,但是還是很適用于那些數(shù)據(jù)量不大,對(duì)磁盤(pán)訪問(wèn)速度要求較高的中小企業(yè)
- NAS多適用于文件服務(wù)器,用來(lái)存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),雖然受限于以太網(wǎng)的速度,但是部署靈活,成本低
- SAN則適用于大型應(yīng)用或數(shù)據(jù)庫(kù)系統(tǒng),缺點(diǎn)是成本高、較為復(fù)雜
2 文件傳輸協(xié)議FTP
2.1 FTP工作原理介紹
-
文件傳輸協(xié)議:File Transfer Protocol 早期的三個(gè)應(yīng)用級(jí)協(xié)議之一,基于C/S結(jié)構(gòu)
-
數(shù)據(jù)傳輸格式:二進(jìn)制(默認(rèn))和文本
-
雙通道協(xié)議:命令和數(shù)據(jù)連接
-
兩種模式:從服務(wù)器角度
- 主動(dòng)(PORT style):服務(wù)器主動(dòng)連接
-
命令(控制):客戶端:隨機(jī)port —> 服務(wù)器:21/tcp
-
數(shù)據(jù):客戶端:隨機(jī)port <—服務(wù)器:20/tcp
-
- 被動(dòng)(PASV style):客戶端主動(dòng)連接
-
命令(控制):客戶端:隨機(jī)port —> 服務(wù)器:21/tcp
-
數(shù)據(jù):客戶端:隨機(jī)port —> 服務(wù)器:隨機(jī)port /tcp
-
- 主動(dòng)(PORT style):服務(wù)器主動(dòng)連接
-
范例:服務(wù)器被動(dòng)模式數(shù)據(jù)端口
- 227 Entering Passive Mode (172,16,0,1,224,59)
- 服務(wù)器數(shù)據(jù)端口為:224*256+59
-
FTP服務(wù)狀態(tài)碼:
-
1XX:信息 125:數(shù)據(jù)連接打開(kāi)
-
2XX:成功類狀態(tài) 200:命令OK 230:登錄成功
-
3XX:補(bǔ)充類 331:用戶名OK
-
4XX:客戶端錯(cuò)誤 425:不能打開(kāi)數(shù)據(jù)連接
-
5XX:服務(wù)器錯(cuò)誤 530:不能登錄
-
-
用戶認(rèn)證:
- 匿名用戶:ftp,anonymous,對(duì)應(yīng)Linux用戶ftp
- 系統(tǒng)用戶:Linux用戶,用戶/etc/passwd,密碼/etc/shadow
- 虛擬用戶:特定服務(wù)的專用用戶,獨(dú)立的用戶/密碼文件
2.2 常見(jiàn) FTP 相關(guān)軟件
-
FTP服務(wù)器端軟件
- Wu-ftpd
- Proftpd
- Pureftpd
- Filezilla Server
- Serv-U
- Wing FTP Server
- IIS
-
vsftpd:Very Secure FTP Daemon,CentOS 默認(rèn)FTP服務(wù)器;
- 高速,穩(wěn)定,下載速度是WU-FTP的兩倍
- ftp.redhat.com數(shù)據(jù):單機(jī)最多可支持15000個(gè)并發(fā)
-
客戶端軟件:
-
ftp,lftp,lftpget,wget,curl
- ftp -A ftpserver port -A 主動(dòng)模式 –p 被動(dòng)模式
- lftp –u username ftpserver
- lftp username@ftpserver
- lftpget ftp://ftpserver/pub/file
-
gftp:GUI centos5 最新版2.0.19 (11/30/2008)
-
filezilla,FTP Rush,CuteFtp,FlashFXP,LeapFtp
-
IE ftp://username:password@ftpserver
2.3 vsftpd 軟件介紹
-
由 vsftpd 包提供,不再由xinetd管理
-
用戶認(rèn)證配置文件:/etc/pam.d/vsftpd
-
啟動(dòng)服務(wù)相關(guān)文件:
- /usr/lib/systemd/system/vsftpd.service
- /etc/rc.d/init.d/vsftpd
-
配置文件:
- /etc/vsftpd/vsftpd.conf
- 幫助:man 5 vsftpd.conf
-
配置文件格式:
- option=value
- 注意:= 前后不要有空格
-
用戶和其共享目錄
- 匿名用戶(映射為系統(tǒng)用戶ftp )共享文件位置:/var/ftp
- 系統(tǒng)用戶共享文件位置:用戶家目錄
- 虛擬用戶共享文件位置:為其映射的系統(tǒng)用戶的家目錄
2.4 vsftpd服務(wù)常見(jiàn)配置
2.4.1 命令端口
-
listen_port=21
2.4.2 主動(dòng)模式端口
-
connect_from_port_20=YES 主動(dòng)模式端口為20
-
ftp_data_port=20 (默認(rèn)) 指定主動(dòng)模式的端口
2.4.3 被動(dòng)模式端口范圍
-
linux 客戶端默認(rèn)使用被動(dòng)模式
-
windows 客戶端默認(rèn)使用主動(dòng)模式
-
pasv_min_port=6000 0為隨機(jī)分配
-
pasv_max_port=6010
2.4.4 使用當(dāng)?shù)貢r(shí)間
-
use_localtime=YES 使用當(dāng)?shù)貢r(shí)間(默認(rèn)為NO,使用GMT)
2.4.5 匿名用戶登錄
-
anonymous_enable=YES 支持匿名用戶
-
no_anon_password=YES 匿名用戶略過(guò)口令檢查 , 默認(rèn)NO
2.4.6 匿名用戶上傳
-
anon_upload_enable=YES 匿名上傳,注意:文件系統(tǒng)權(quán)限
-
anon_mkdir_write_enable=YES 匿名建目錄
-
anon_world_readable_only 只能下載全部讀的文件, 默認(rèn)YES
-
anon_umask=0333 指定匿名上傳文件的umask,默認(rèn)077
-
anon_other_write_enable=YES 可刪除和修改上傳的文件, ,默認(rèn)NO
2.4.7 指定匿名用戶的上傳文件的默認(rèn)的所有者和權(quán)限
-
chown_uploads=YES 默認(rèn)NO
-
chown_username=wang
-
chown_upload_mode=0644
2.4.8 Linux系統(tǒng)用戶
-
local_enable=YES 是否允許linux用戶登錄
-
write_enable=YES 允許linux用戶上傳文件
-
local_umask=022 指定系統(tǒng)用戶上傳文件的默認(rèn)權(quán)限
2.4.9 將系統(tǒng)用戶映射為指定的guest用戶
-
guest_enable=YES 所有系統(tǒng)用戶都映射成guest用戶
-
guest_username=ftp 配合上面選項(xiàng)才生效,指定guest用戶
-
local_root=/ftproot guest用戶登錄所在目錄
2.4.10 禁錮系統(tǒng)用戶
-
禁錮所有系統(tǒng)在家目錄中
- chroot_local_user=YES 禁錮系統(tǒng)用戶,默認(rèn)NO,即不禁錮
-
禁錮或不禁錮特定的系統(tǒng)用戶在家目錄中,與上面設(shè)置功能相反
- chroot_list_enable=YES
- chroot_list_file=/etc/vsftpd/chroot_list
- 當(dāng)chroot_local_user=YES時(shí),則chroot_list中用戶不禁錮
- 當(dāng)chroot_local_user=NO時(shí),則chroot_list中用戶禁錮
2.4.11 日志
-
wu-ftp日志:默認(rèn)啟用
- xferlog_enable=YES 啟用記錄上傳下載日志,此為默認(rèn)值
- xferlog_std_format=YES 使用wu-ftp日志格式,此為默認(rèn)值
- xferlog_file=/var/log/xferlog 可自動(dòng)生成, 此為默認(rèn)值
-
vsftpd日志:默認(rèn)不啟用
- dual_log_enable=YES 使用vsftpd日志格式,默認(rèn)不啟用
- vsftpd_log_file=/var/log/vsftpd.log 可自動(dòng)生成, 此為默認(rèn)值
2.4.12 提示信息
-
登錄提示信息
- ftpd_banner=“welcome to mage ftp server”
- banner_file=/etc/vsftpd/ftpbanner.txt
-
目錄訪問(wèn)提示信息
- dirmessage_enable=YES 此為默認(rèn)值
- message_file=.message 信息存放在指定目錄下.message ,此為默認(rèn)值
2.4.13 PAM模塊實(shí)現(xiàn)用戶訪問(wèn)控制
-
pam_service_name=vsftpd
-
pam配置文件:/etc/pam.d/vsftpd
-
/etc/vsftpd/ftpusers 默認(rèn)文件中用戶拒絕登錄
2.4.14 是否啟用控制用戶登錄的列表文件
-
userlist_enable=YES 此為默認(rèn)值
-
userlist_deny=YES(默認(rèn)值) 黑名單,不提示口令,NO為白名單
-
userlist_file=/etc/vsftpd/users_list 此為默認(rèn)值
2.4.15 連接數(shù)限制
-
max_clients=0 最大并發(fā)連接數(shù)
-
max_per_ip=0 每個(gè)IP同時(shí)發(fā)起的最大連接數(shù)
2.4.16 傳輸速率,字節(jié)/秒
-
anon_max_rate=0 匿名用戶的最大傳輸速率
-
local_max_rate=0 本地用戶的最大傳輸速率
2.4.17 連接時(shí)間:秒為單位
-
connect_timeout=60 主動(dòng)模式數(shù)據(jù)連接超時(shí)時(shí)長(zhǎng)
-
accept_timeout=60 被動(dòng)模式數(shù)據(jù)連接超時(shí)時(shí)長(zhǎng)
-
data_connection_timeout=300 數(shù)據(jù)連接無(wú)數(shù)據(jù)輸超時(shí)時(shí)長(zhǎng)
-
idle_session_timeout=60 無(wú)命令操作超時(shí)時(shí)長(zhǎng)
2.4.18 優(yōu)先以文本方式傳輸
-
scii_upload_enable=YES
-
ascii_download_enable=YES
2.4.19 實(shí)現(xiàn)基于SSL的FTPS
-
查看是否支持SSL
ldd `which vsftpd` #查看到libssl.so -
范例:
[root@centos8 ~]#ldd which vsftpd|grep libssl
libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007f8878e2c000)
-
配置vsftpd服務(wù)支持SSL:
[root@centos7 ~]#vim /etc/vsftpd/vsftpd.conf ssl_enable=YES #啟用SSL allow_anon_ssl=NO #匿名不支持SSL force_local_logins_ssl=YES #本地用戶登錄加密 force_local_data_ssl=YES #本地用戶數(shù)據(jù)傳輸加密 rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem #rsa_private_key_file /path/file #此項(xiàng)如果沒(méi)有指定,私鑰也在證書(shū)文件中 #ssl_tlsv1=YES #ssl_sslv2=NO #ssl_sslv3=NO #require_ssl_reuse=NO #ssl_ciphers=HIGH[root@centos7 ~]#systemctl restart vsftpd[root@centos7 ~]#ftp 192.168.100.7 Connected to 192.168.100.7 (192.168.100.7). 220-welcome to magedu 220 Name (192.168.100.8:root): wang 530 Non-anonymous sessions must use encryption. Login failed. 421 Service not available, remote server has closed connection#用filezilla等工具測(cè)試[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-oh2mAChc-1577107595326)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223141639196.png)]
2.5 vsftpd 虛擬用戶
-
虛擬用戶:
- 所有虛擬用戶會(huì)統(tǒng)一映射為一個(gè)指定的系統(tǒng)帳號(hào):訪問(wèn)共享位置,即為此系統(tǒng)帳號(hào)的家目錄
- 各虛擬用戶可被賦予不同的訪問(wèn)權(quán)限,通過(guò)匿名用戶的權(quán)限控制參數(shù)進(jìn)行指定
-
虛擬用戶帳號(hào)的存儲(chǔ)方式:
-
文件:編輯文本文件,此文件需要被編碼為hash格式
-
奇數(shù)行為用戶名
-
偶數(shù)行為密碼
db_load -T -t hash -f vusers.txt vusers.db
-
-
關(guān)系型數(shù)據(jù)庫(kù)中的表中:實(shí)時(shí)查詢數(shù)據(jù)庫(kù)完成用戶認(rèn)證
-
vsftpd 支持mysql庫(kù):pam要依賴于pam-mysql
- /lib64/security/pam_mysql.so
- /usr/share/doc/pam_mysql-0.7/README
-
2.5.1 實(shí)現(xiàn)基于文件驗(yàn)證的vsftpd虛擬用戶
2.5.1.1 創(chuàng)建用戶數(shù)據(jù)庫(kù)文件
vim /etc/vsftpd/vusers.txt wang wangpass mage magepass cd /etc/vsftpd/ db_load -T -t hash -f vusers.txt vusers.db chmod 600 vusers.db2.5.1.2 創(chuàng)建用戶和訪問(wèn)FTP目錄
useradd -d /data/ftproot -s /sbin/nologin -r vuser mkdir -pv /data/ftproot/upload setfacl -m u:vuser:rwx /data/ftproot/upload #chmod a=rx /data/ftproot/ 如果自動(dòng)創(chuàng)建家目錄,需修改權(quán)限2.5.1.3 創(chuàng)建pam配置文件
vim /etc/pam.d/vsftpd.db auth required pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers2.5.1.4 指定pam配置文件
vim /etc/vsftpd/vsftpd.conf guest_enable=YES guest_username=vuser pam_service_name=vsftpd.db2.5.1.5 虛擬用戶建立獨(dú)立的配置文件
#指定各個(gè)用戶配置文件存放的路徑 vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers.d/#創(chuàng)建各個(gè)用戶配置文件存放的路徑 mkdir /etc/vsftpd/vusers.d/ cd /etc/vsftpd/vusers.d/#創(chuàng)建各用戶自已的配置文件,允許wang用戶可讀寫(xiě),其它用戶只讀 vim wang anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES#創(chuàng)建各用戶自已的配置文件 vim mage #登錄目錄改變至指定的目錄 local_root=/data/ftproot22.5.2 實(shí)現(xiàn)基于MYSQL驗(yàn)證的vsftpd虛擬用戶
-
環(huán)境準(zhǔn)備
-
本實(shí)驗(yàn)在兩臺(tái)CentOS主機(jī)上實(shí)現(xiàn), CentOS 7 一臺(tái)做為FTP服務(wù)器,一臺(tái)做數(shù)據(jù)庫(kù)服務(wù)器
-
2.5.2.1 在數(shù)據(jù)庫(kù)服務(wù)器上安裝mysql數(shù)據(jù)庫(kù)
yum –y install mariadb-server systemctl enable --now mariadb.service2.5.2.2 在數(shù)據(jù)庫(kù)服務(wù)上配置數(shù)據(jù)庫(kù)支持vsftpd服務(wù)
#建立存儲(chǔ)虛擬用戶數(shù)據(jù)庫(kù)和表 mysql> CREATE DATABASE vsftpd; mysql> USE vsftpd; mysql> CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL );#添加虛擬用戶,為了安全應(yīng)該使用PASSWORD函數(shù)加密其密碼后存儲(chǔ) mysql> INSERT INTO users(name,password) values('wang',password('magedu')); mysql> INSERT INTO users(name,password) values('mage',password('magedu'));#創(chuàng)建連接的數(shù)據(jù)庫(kù)用戶 mysql> GRANT SELECT ON vsftpd.* TO vsftpd@'172.16.0.%' IDENTIFIED BY 'magedu'; mysql> FLUSH PRIVILEGES;2.5.2.3 在FTP服務(wù)器上安裝vsftpd 和 pam_mysql包
yum install vsftpd -y2.5.2.4 在FTP服務(wù)器上安裝 pam_mysql
-
對(duì)于 centos 6:pam_mysql由EPEL的源中提供
yum install pam_mysql -y -
對(duì)于 centos7 和 8:無(wú)對(duì)應(yīng)rpm包,需手動(dòng)編譯安裝
#安裝相關(guān)包 yum install vsftpd gcc gcc-c++ make mariadb-devel pam-devel #下載pam-mysql源碼進(jìn)行編譯 wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz #https://github.com/NigelCunningham/pam-MySQL/archive/v0.8.1.tar.gz tar xvf pam_mysql-0.7RC1.tar.gz cd pam_mysql-0.7RC1/ ./configure --with-pam-mods-dir=/lib64/security#如果上面命令不指定 --with-pam-mods-dir=/lib64/security 會(huì)報(bào)以下錯(cuò)誤 #checking if the second argument of pam_conv.conv() takes const pointer... no configure: error: Your system doesn't appear to be configured to use PAM.Perhaps you need to specify the correct location where the PAM modules reside.make && make install [root@vsftpd ~]#ll /lib64/security/pam_mysql* -rwxr-xr-x 1 root root 882 Dec 17 14:34 /lib64/security/pam_mysql.la -rwxr-xr-x 1 root root 141712 Dec 17 14:34 /lib64/security/pam_mysql.so
2.5.2.5 在FTP服務(wù)器上建立pam認(rèn)證所需文件
vi /etc/pam.d/vsftpd.mysql #添加如下兩行 auth required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required pam_mysql.so user=vsftpd passwd=magedu host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2注意:以上參考 README文檔
-
crypt 加密方式:
- 0表示不加密
- 1表示crypt(3)加密
- 2表示使用mysql password()函數(shù)加密
- 3表示md5加密
- 4表示sha1加密
-
配置字段說(shuō)明
- auth 表示認(rèn)證
- account 驗(yàn)證賬號(hào)密碼正常使用
- required 表示認(rèn)證要通過(guò)
- pam_mysql.so模塊是默認(rèn)的相對(duì)路徑,是相對(duì)/lib64/security/路徑而言,也可以寫(xiě)絕對(duì)路徑;后面為給此模塊傳遞的參數(shù)
- user=vsftpd為登錄mysql的用戶
- passwd=magedu 登錄mysql的的密碼
- host=mysqlserver mysql服務(wù)器的主機(jī)名或ip地址
- db=vsftpd 指定連接msyql的數(shù)據(jù)庫(kù)名稱
- table=users 指定連接數(shù)據(jù)庫(kù)中的表名
- usercolumn=name 當(dāng)做用戶名的字段
- passwdcolumn=password 當(dāng)做用戶名字段的密碼
- crypt=2 密碼的加密方式為mysql password()函數(shù)加密
2.5.2.6 建立相應(yīng)用戶和修改vsftpd配置文件
#建立虛擬用戶映射的系統(tǒng)用戶及對(duì)應(yīng)的目錄 useradd -s /sbin/nologin -d /data/ftproot -r vuser #centos7 需除去ftp根目錄的寫(xiě)權(quán)限 chmod 555 /data/ftproot mkdir -pv /data/ftproot/{upload,pub} setfacl –m u:vuser:rwx /data/ftproot/upload #確保/etc/vsftpd.conf中已經(jīng)啟用了以下選項(xiàng) anonymous_enable=YES #添加下面兩項(xiàng) guest_enable=YES guest_username=vuser#修改下面一項(xiàng),原系統(tǒng)用戶無(wú)法登錄 pam_service_name=vsftpd.mysql#啟動(dòng)vsftpd服務(wù) systemctl enable --now vsftpd2.5.2.7 在FTP服務(wù)器上配置虛擬用戶具有不同的訪問(wèn)權(quán)限
-
vsftpd可以在配置文件目錄中為每個(gè)用戶提供單獨(dú)的配置文件以定義其ftp服務(wù)訪問(wèn)權(quán)限,每個(gè)虛擬用戶的配置文件名同虛擬用戶的用戶名。配置文件目錄可以是任意未使用目錄,只需要在vsftpd.conf指定其路徑及名稱即可
#配置vsftpd為虛擬用戶使用配置文件目錄 vim /etc/vsftpd/vsftpd.conf #添加如下選項(xiàng) user_config_dir=/etc/vsftpd/vusers.d/#創(chuàng)建所需要目錄,并為虛擬用戶提供配置文件 mkdir /etc/vsftpd/vusers.d/ cd /etc/vsftpd/vusers.d/ touch wang mage#配置虛擬用戶的訪問(wèn)權(quán)限 #虛擬用戶對(duì)vsftpd服務(wù)的訪問(wèn)權(quán)限是通過(guò)匿名用戶的相關(guān)指令進(jìn)行的。如要讓用戶wang具有上傳文件的權(quán) 限,可修改/etc/vsftpd/vusers.d/wang文件,在里面添加如下選項(xiàng)并設(shè)置為YES即可,只讀則設(shè)為NO #注意:需確保對(duì)應(yīng)的映射用戶對(duì)于文件系統(tǒng)有寫(xiě)權(quán)限 anon_upload_enable={YES|NO} anon_mkdir_write_enable={YES|NO} anon_other_write_enable={YES|NO} #登錄目錄改變至指定的目錄 local_root=/data/ftproot2
3 NFS服務(wù)
3.1 NFS工作原理
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-cXrrJn5e-1577107595326)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223142809038.png)]
-
NFS:Network File System 網(wǎng)絡(luò)文件系統(tǒng),基于內(nèi)核的文件系統(tǒng)。Sun公司開(kāi)發(fā),通過(guò)使用NFS,用戶和程序可以像訪問(wèn)本地文件一樣訪問(wèn)遠(yuǎn)端系統(tǒng)上的文件,基于RPC(Remote Procedure Call Protocol 遠(yuǎn)程過(guò)程調(diào)用)實(shí)現(xiàn)
-
RPC采用C/S模式,客戶機(jī)請(qǐng)求程序調(diào)用進(jìn)程發(fā)送一個(gè)有進(jìn)程參數(shù)的調(diào)用信息到服務(wù)進(jìn)程,然后等待應(yīng)答信息。在服務(wù)器端,進(jìn)程保持睡眠狀態(tài)直到調(diào)用信息到達(dá)為止。當(dāng)一個(gè)調(diào)用信息到達(dá),服務(wù)器獲得進(jìn)程參數(shù),計(jì)算結(jié)果,發(fā)送答復(fù)信息,然后等待下一個(gè)調(diào)用信息,最后,客戶端調(diào)用進(jìn)程接收答復(fù)信息,獲得進(jìn)程結(jié)果,然后調(diào)用執(zhí)行繼續(xù)進(jìn)行
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-K8R5ZtLR-1577107595327)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223142925620.png)]
-
NFS優(yōu)勢(shì):節(jié)省本地存儲(chǔ)空間,將常用的數(shù)據(jù),如:/home目錄,存放在NFS服務(wù)器上且可以通過(guò)網(wǎng)絡(luò)訪問(wèn),本地終端將可減少自身存儲(chǔ)空間的使用
3.2 NFS軟件介紹
-
軟件包:nfs-utils
-
相關(guān)軟件包:rpcbind(必須),tcp_wrappers
-
Kernel支持:nfs.ko
-
端口:2049(nfsd), 其它端口由portmap(111)分配
- 說(shuō)明:CentOS 6 開(kāi)始portmap進(jìn)程由rpcbind代替
-
NFS服務(wù)主要進(jìn)程:
- rpc.nfsd 最主要的NFS進(jìn)程,管理客戶端是否可登錄
- rpc.mountd 掛載和卸載NFS文件系統(tǒng),包括權(quán)限管理
- rpc.lockd 非必要,管理文件鎖,避免同時(shí)寫(xiě)出錯(cuò)
- rpc.statd 非必要,檢查文件一致性,可修復(fù)文件
-
日志:/var/lib/nfs/
-
NFS配置文件:
-
/etc/exports
-
/etc/exports.d/*.exports
-
3.3 NFS共享配置文件格式
/dir 主機(jī)1(opt1,opt2) 主機(jī)2(opt1,opt2)...-
格式說(shuō)明:
-
#開(kāi)始為注釋
-
主機(jī)格式:
單個(gè)主機(jī):ipv4,ipv6,FQDN IP networks:兩種掩碼格式均支持172.18.0.0/255.255.0.0172.18.0.0/16 wildcards:主機(jī)名通配,例如*.magedu.com,IP不可以 netgroups:NIS域的主機(jī)組,@group_name anonymous:表示使用*通配所有客戶端 -
每個(gè)條目指定目錄導(dǎo)出到的哪些主機(jī),及相關(guān)的權(quán)限和選項(xiàng)
默認(rèn)選項(xiàng):(ro,sync,root_squash,no_all_squash) ro,rw 只讀和讀寫(xiě) async 異步,數(shù)據(jù)變化后不立即寫(xiě)磁盤(pán),性能高 sync(1.0.0后為默認(rèn)) 同步,數(shù)據(jù)在請(qǐng)求時(shí)立即寫(xiě)入共享存儲(chǔ)磁盤(pán) root_squash (默認(rèn))遠(yuǎn)程root映射為nfsnobody,UID為65534,CentOS8 為nobody,早期版本是4294967294 (nfsnobody) no_root_squash 遠(yuǎn)程root映射成root用戶 all_squash 所有遠(yuǎn)程用戶(包括root)都變成nfsnobody,CentOS8 為nobody no_all_squash (默認(rèn))保留共享文件的UID和GID anonuid和anongid 指明匿名用戶映射為特定用戶UID和組GID,而非nfsnobody,可配合all_squash使用
-
-
范例:NFS配置示例
vim /etc/exports /myshare server.example.com /myshare *.example.com /myshare server?.example.com /myshare server[0-20].example.com /myshare 172.25.11.10 /myshare 172.25.0.0/16 /myshare 2000:472:18:b51:c32:a21 /myshare 2000:472:18:b51::/64 /myshare *.example.com 172.25.0.0/16 /myshare desktop.example.com(ro) /myshare desktop.example.com(ro) server[0-20].example.com(rw) /myshare diskless.example.com(rw,no_root_squash)
3.4 NFS工具
3.4.1 rpcinfo
-
rpcinfo 工具可以查看RPC相關(guān)信息
-
查看注冊(cè)在指定主機(jī)的RPC程序
rpcinfo -p hostname -
查看RPC注冊(cè)程序
rpcinfo –s hostname -
范例:rpcinfo
[root@centos8 ~]#rpcinfo -pprogram vers proto port service100000 4 tcp 111 portmapper100000 3 tcp 111 portmapper100000 2 tcp 111 portmapper100000 4 udp 111 portmapper100000 3 udp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 36310 status100024 1 tcp 45265 status [root@centos8 ~]#rpcinfo -sprogram version(s) netid(s) service owner100000 2,3,4 local,udp,tcp,udp6,tcp6 portmapper superuser100024 1 tcp6,udp6,tcp,udp status 29
3.4.2 exportfs
-
exportfs:可用于管理NFS導(dǎo)出的文件系統(tǒng)
-
常見(jiàn)選項(xiàng):
- –v 查看本機(jī)所有NFS共享
- –r 重讀配置文件,并共享目錄
- –a 輸出本機(jī)所有共享
- –au 停止本機(jī)所有共享
3.4.3 showmount
-
常見(jiàn)用法:
showmount -e hostname
3.4.4 mount.nfs
-
客戶端NFS掛載
-
NFS相關(guān)的掛載選項(xiàng):man 5 nfs
- fg(默認(rèn))前臺(tái)掛載
- bg后臺(tái)掛載
- hard(默認(rèn))持續(xù)請(qǐng)求
- soft 非持續(xù)請(qǐng)求
- intr 和hard配合,請(qǐng)求可中斷
- rsize和wsize 一次讀和寫(xiě)數(shù)據(jù)最大字節(jié)數(shù),rsize=32768
- netdev 無(wú)網(wǎng)絡(luò)不掛載
-
提示:基于安全考慮,建議使用nosuid,nodev,noexec掛載選項(xiàng)_
-
范例:臨時(shí)掛載NFS共享
mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/ -
范例:開(kāi)機(jī)掛載
vim /etc/fstab 172.16.0.1:/public /mnt/nfs nfs defaults,_netdev 0 0
3.5 自動(dòng)掛載
-
可使用 autofs 服務(wù)按需要掛載外圍設(shè)備,NFS共享等,并在空閑5分鐘后后自動(dòng)卸載
3.5.1 相關(guān)包和文件
-
軟件包:autofs
-
服務(wù)文件:/usr/lib/systemd/system/autofs.service
-
配置文件:/etc/auto.master
3.5.2 配置文件格式
-
參看幫助:man 5 autofs
-
所有導(dǎo)出到網(wǎng)絡(luò)中的NFS啟用特殊匹配 -host 至“browse”
-
范例:/net目錄可以自動(dòng)掛載NFS共享
cat /etc/auto.master /net -hosts cd /net/192.168.8.100/ -
自動(dòng)掛載資源有兩種格式:
- 相對(duì)路徑法:將mount point 路徑分成 dirname 和 basename 分別配置,可能會(huì)影響現(xiàn)有的目錄結(jié)構(gòu)
- 絕對(duì)路徑法:直接匹配全部絕對(duì)路徑名稱,不會(huì)影響本地目錄結(jié)構(gòu)
-
相對(duì)路徑法:
-
/etc/auto.master 格式
掛載點(diǎn)的dirname 指定目錄的配置文件路徑 -
指定目錄的配置文件格式
掛載點(diǎn)的basename 掛載選項(xiàng) 選項(xiàng)設(shè)備
-
-
范例:相對(duì)路徑法
[root@centos8 ~]#vim /etc/auto.master /misc /etc/auto.misc [root@centos8 ~]#vim /etc/auto.misc cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom -
范例:相對(duì)路徑法為支持通配符
vim /etc/auto.master /misc /etc/auto.misc vim /etc/auto.misc #表示/misc下面的子目錄和nfs共享/export目錄的子目錄同名 * server:/export/& -
絕對(duì)路徑法
-
/etc/auto.master 格式
/- 指定配置文件路徑 -
指定配置文件格式
絕對(duì)路徑 掛載選項(xiàng) 選項(xiàng)設(shè)備
-
-
范例:絕對(duì)路徑法
vim /etc/auto.master: /- /etc/auto.directvim /etc/auto.direct: /foo -fstype=nfs server1:/export/foo /user/local/ -fstype=nfs,vers=3 server1:/usr/local /mnt/cdrom -fstype=iso9660 :/dev/cdrom
3.7 實(shí)戰(zhàn)案例
3.7.1 目標(biāo)
-
將NFS的共享目錄,通過(guò)autofs 發(fā)布出來(lái),做為遠(yuǎn)程主機(jī)用戶的家目錄
3.7.2 環(huán)境準(zhǔn)備
-
三臺(tái)主機(jī)
-
一臺(tái)主機(jī) nfs server,IP:192.168.8.100
-
另兩臺(tái)當(dāng) nfs client,IP:192.168.8.101和192.168.8.102
-
3.7.3 步驟
#NFS服務(wù)器創(chuàng)建用戶和相應(yīng)的家目錄,將用戶wang的家目錄共享 useradd -d /data/wang wang Vim /etc/exports.d/test.exports /data/wang *(rw,anonuid=1000,anongid=1000,all_sqush)#在第一臺(tái)NFS客戶端主機(jī)192.168.8.101上實(shí)現(xiàn)相對(duì)路徑法的autofs vim /etc/auto.master /home /etc/homeauto vim /etc/homeauto * -fstype=nfs,vers=3 192.168.8.100:/data/wang/&#注意:home目錄下其它用戶家目錄無(wú)法訪問(wèn)#在第二臺(tái)NFS客戶端主機(jī)192.168.8.102上實(shí)現(xiàn)絕對(duì)路徑法的autofs vim /etc/auto.master /- /etc/homeauto vim e/etc/homeauto /home/wang -fstype=nfs,vers=3 nfsserver:/data/wang4 SAMBA服務(wù)
4.1 SAMBA服務(wù)簡(jiǎn)介
-
SMB:Server Message Block 服務(wù)器消息塊,IBM發(fā)布,最早是DOS網(wǎng)絡(luò)文件共享協(xié)議
-
CIFS:common internet file system,微軟基于SMB發(fā)布
-
SAMBA:1991年Andrew Tridgell,實(shí)現(xiàn) windows和UNIX相通
-
官方網(wǎng)站:http://www.samba.org/
-
SAMBA的功能:
-
共享文件和打印,實(shí)現(xiàn)在線編輯
-
實(shí)現(xiàn)登錄SAMBA用戶的身份認(rèn)證
-
可以進(jìn)行NetBIOS名稱解析
-
外圍設(shè)備共享
-
-
Windows計(jì)算機(jī)網(wǎng)絡(luò)管理模式:
-
工作組WORKGROUP:計(jì)算機(jī)對(duì)等關(guān)系,帳號(hào)信息各自管理
-
域DOMAIN:C/S結(jié)構(gòu),帳號(hào)信息集中管理,DC,AD
-
4.2 SAMBA軟件介紹
-
相關(guān)包:
-
samba 提供smb服務(wù)
-
samba-client 客戶端軟件
-
samba-common 通用軟件
-
cifs-utils smb客戶端工具
-
samba-winbind 和AD相關(guān)
-
-
相關(guān)服務(wù)進(jìn)程:
-
smbd 提供smb(cifs)服務(wù) TCP:139,445
-
nmbd NetBIOS名稱解析 UDP:137,138
-
-
主配置文件:/etc/samba/smb.conf 幫助參看:man smb.conf
-
語(yǔ)法檢查: testparm [-v] [/etc/samba/smb.conf]
-
客戶端工具:smbclient,mount.cifs
-
范例:
dnf install samba systemctl start smb systemctl start nmb
4.3 SAMBA客戶端工具
-
UNC路徑: Universal Naming Convention,通用命名規(guī)范,格式如下
4.3.1 使用smbclient 訪問(wèn)SAMBA服務(wù)器
smbclient -L instructor.example.com smbclient -L instructor.example.com -U smb用戶%password#可以使用-U選項(xiàng)來(lái)指定用戶%密碼,或通過(guò)設(shè)置和導(dǎo)出USER和PASSWD環(huán)境變量來(lái)指定 smbclient //instructor.example.com/shared -U wang >cd directory >get file1 >put file24.3.2 掛載CIFS文件系統(tǒng)
-
范例:手動(dòng)掛載
-
范例:開(kāi)機(jī)自動(dòng)掛載
4.4 管理SAMBA用戶
4.4.1 實(shí)現(xiàn)samba用戶說(shuō)明
-
包:samba-common-tools
-
工具:smbpasswd pdbedit
-
用戶數(shù)據(jù)庫(kù):/var/lib/samba/private/passdb.tdb
說(shuō)明:samba用戶須是Linux用戶,建議使用/sbin/nologin
4.4.2 管理用戶命令
-
添加samba用戶:
smbpasswd -a <user> pdbedit -a -u <user> -
修改用戶密碼:
smbpasswd <user> -
刪除用戶和密碼:
smbpasswd –x <user> pdbedit –x –u <user> -
查看samba用戶列表:
pdbedit –L –v -
范例:
[root@centos8 ~]#pdbedit -L No builtin backend found, trying to load plugin smb1:1002: smb2:1003: smb3:1004: [root@centos8 ~]#pdbedit -L -v No builtin backend found, trying to load plugin --------------- Unix username: smb1 NT username: Account Flags: [U ] User SID: S-1-5-21-1476810783-3936299954-1329646792-1000 Primary Group SID: S-1-5-21-1476810783-3936299954-1329646792-513 Full Name: Home Directory: \\linux39\smb1 HomeDir Drive: Logon Script: Profile Path: \\linux39\smb1\profile Domain: CENTOS8 Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Wed, 06 Feb 2036 23:06:39 CST Kickoff time: Wed, 06 Feb 2036 23:06:39 CST Password last set: Thu, 19 Dec 2019 10:02:31 CST Password can change: Thu, 19 Dec 2019 10:02:31 CST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF --------------- Unix username: smb2 NT username: Account Flags: [U ] User SID: S-1-5-21-1476810783-3936299954-1329646792-1001 Primary Group SID: S-1-5-21-1476810783-3936299954-1329646792-513 Full Name: Home Directory: \\linux39\smb2 HomeDir Drive: Logon Script: Profile Path: \\linux39\smb2\profile Domain: CENTOS8 Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Wed, 06 Feb 2036 23:06:39 CST Kickoff time: Wed, 06 Feb 2036 23:06:39 CST Password last set: Thu, 19 Dec 2019 09:57:36 CST Password can change: Thu, 19 Dec 2019 09:57:36 CST Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF --------------- -
查看samba服務(wù)器狀態(tài):
smbstatus -
范例:
[root@centos8 ~]#smbstatus Samba version 4.9.1 PID Username Group Machine Protocol Version Encryption Signing -------------------------------------------------------------------------------- -------------------------------------------------------- 45299 smb1 smb1 1 92.168.39.6 (ipv4:192.168.39.6:55898) NT1- - Service pid Machine Connected at Encryption Signing -------------------------------------------------------------------------------- ------------- smb1 45299 192.168.39.6 Thu Dec 19 10:30:24 AM 2019 CST - - No locked files
4.5 SAMBA服務(wù)器配置
-
samba 配置文件 /etc/smb.conf 格式 ,使用.ini文件的格式
-
用 [ ] 分分成以下幾部分
-
全局設(shè)置:
- [global] 服務(wù)器通用或全局設(shè)置的部分
-
特定共享設(shè)置:
- [homes] 用戶的家目錄共享
- [printers] 定義打印機(jī)資源和服務(wù)
- [sharename] 自定義的共享目錄配置
- 其中:#和;開(kāi)頭的語(yǔ)句為注釋,大小寫(xiě)不敏感
-
samba配置中的宏定義:
- %m 客戶端主機(jī)的NetBIOS名
- %M 客戶端主機(jī)的FQDN
- %H 當(dāng)前用戶家目錄路徑
- %U 當(dāng)前用戶的用戶名
- %g 當(dāng)前用戶所屬組
- %h samba服務(wù)器的主機(jī)名
- %L samba服務(wù)器的NetBIOS名
- %I 客戶端主機(jī)的IP
- %T 當(dāng)前日期和時(shí)間
- %S 可登錄的用戶名
-
4.5.1 SAMBA服務(wù)器全局配置
-
workgroup 指定工作組名稱
-
server string 主機(jī)注釋信息
-
netbios name 指定NetBIOS名,注意:netbios name需要啟動(dòng)nmb服務(wù)
-
范例:
[global]workgroup = workgroupnetbios name = linux39 -
interfaces 指定服務(wù)偵聽(tīng)接口和IP
-
hosts allow 可用逗號(hào),空格,或tab分隔,默認(rèn)允許所有主機(jī)訪問(wèn),也可在每個(gè)共享獨(dú)立配置,如在[global]設(shè)置,將應(yīng)用并覆蓋所有共享設(shè)置,可以是以下格式:
IPv4 network/prefix: 172.16.0.0/24 IPv4 前綴: 172.16.0. IPv4 network/netmask: 172.16.0.0/255.255.255.0 主機(jī)名: desktop.example.com 以example.com后綴的主機(jī)名: .example.com-
范例:
hosts allow = 172.16. .example.com
-
-
hosts deny 拒絕指定主機(jī)訪問(wèn),格式和hosts allow 相同
-
config file=/etc/samba/conf.d/%U 用戶獨(dú)立的配置文件
-
Log file=/var/log/samba/log.%I 不同客戶機(jī)采用不同日志
-
log level = 2 日志級(jí)別,默認(rèn)為0,不記錄日志
-
范例:
[global]Log file=/var/log/samba/log.%Ilog level = 2
-
-
max log size=50 日志文件達(dá)到50K,將輪循rotate,單位KB
-
Security三種認(rèn)證方式:
- user:samba用戶(采有l(wèi)inux用戶,samba的獨(dú)立口令)
- share:匿名(CentOS7不再支持),已不建議使用
- server:已不建議使用
-
passdb backend = tdbsam 密碼數(shù)據(jù)庫(kù)格式
4.5.2 配置特定目錄共享
-
每個(gè)共享目錄應(yīng)該有獨(dú)立的[ ]部分
-
[共享名稱] 遠(yuǎn)程網(wǎng)絡(luò)看到的共享名稱
- comment 注釋信息
- path 所共享的目錄路徑
- public 能否被guest訪問(wèn)的共享,默認(rèn)no,和guest ok 類似
- browsable 是否允許所有用戶瀏覽此共享,默認(rèn)為yes,no為隱藏
- writable=yes 可以被所有用戶讀寫(xiě),默認(rèn)為no
- read only=no 和writable=yes等價(jià),如與以上設(shè)置沖突,放在后面的設(shè)置生效,默認(rèn)只讀
- write list 用戶,@組名,+組名,用,分隔,如writable=no,列表中用戶或組可讀寫(xiě),不在列表中用戶只讀
- valid users 特定用戶才能訪問(wèn)該共享,如為空,將允許所有用戶,用戶名之間用空格分隔
-
范例:基于特定用戶和組的共享
vim /etc/samba/smb.conf [share] path = /app/dir valid users=wang,@admins writeable = no browseable = no
4.6 實(shí)戰(zhàn)案例
4.6.1 實(shí)戰(zhàn)案例:利用SAMBA實(shí)現(xiàn)指定目錄共享
#在samba服務(wù)器上安裝samba包 yum -y install samba #創(chuàng)建samba用戶和組 groupadd -r admins useradd -s /sbin/nologin -G admins wang smbpasswd -a wang useradd -s /sbin/nologin mage smbpasswd -a mage#創(chuàng)建samba共享目錄,并設(shè)置SElinux mkdir /testdir/smbshare chgrp admins /testdir/smbshare chmod 2775 /testdir/smbshare#samba服務(wù)器配置 vim /etc/samba/smb.conf ...省略... [share] path = /testdir/smbshare write list = @adminssystemctl enable --now smb nmb#samba客戶端訪問(wèn) yum -y install cifs-utils#用wang用戶掛載smb共享并訪問(wèn) mkdir /mnt/wang mount -o username=wang //smbserver/share /mnt/wang echo "Hello wang" >/mnt/wang/wangfile.txt#用mage用戶掛載smb共享并訪問(wèn) mkdir /mnt/mage mount -o username=mage //smbserver/share /mnt/mage touch /mnt/mage/magefile.txt4.6.2 實(shí)戰(zhàn)案例2:實(shí)現(xiàn)不同samba用戶訪問(wèn)相同的samba共享,實(shí)現(xiàn)不同的配置
#創(chuàng)建三個(gè)samba用戶,并指定密碼為magedu useradd -s /sbin/nologin -r smb1 useradd -s /sbin/nologin -r smb2 useradd -s /sbin/nologin -r smb3 smbpasswd –a smb1 smbpasswd –a smb2 smbpasswd –a smb3#修改samba配置文件 Vim /etc/samba/smb.conf #在workgroup下加一行 config file= /etc/samba/conf.d/%U 說(shuō)明:%U表示用戶名 [share] Path=/data/dir Read only= NO Guest ok = yes write list=@wheel#針對(duì)smb1和smb2用戶創(chuàng)建單獨(dú)的配置文件 Vim /etc/samba/conf.d/smb1 [share] Path=/data/dir1 Read only= NO 等價(jià)于writable = yes Create mask=0644 #說(shuō)明:默認(rèn)為744Vim /etc/samba/conf.d/smb2 [share] path=/data/dir2systemctl restart smb nmb#用戶smb1,smb2,smb3訪問(wèn)share共享目錄,看到目錄是不同目錄 smbclient //sambaserver/share -U smb1%magedu smbclient //sambaserver/share -U smb2%magedu smbclient //sambaserver/share -U smb3%magedu5 數(shù)據(jù)的實(shí)時(shí)同步
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-95ARsVUk-1577107595328)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223151647197.png)]
-
在生產(chǎn)環(huán)境,有時(shí)會(huì)需要兩臺(tái)主機(jī)的特定目錄實(shí)現(xiàn)實(shí)時(shí)同步。比如,將NFS共享目錄的數(shù)據(jù)文件,自動(dòng)實(shí)時(shí)同步到備份的服務(wù)器特定目錄中
5.1 實(shí)時(shí)同步技術(shù)介紹
-
實(shí)現(xiàn)實(shí)時(shí)同步的方法
- inotify + rsync 方式實(shí)現(xiàn)數(shù)據(jù)同步
- sersync :金山公司周洋在 inotify 軟件基礎(chǔ)上進(jìn)行開(kāi)發(fā)的,功能更加強(qiáng)大
-
工作原理:
- 要利用監(jiān)控服務(wù)(inotify),監(jiān)控同步數(shù)據(jù)服務(wù)器目錄中信息的變化
- 發(fā)現(xiàn)目錄中數(shù)據(jù)產(chǎn)生變化,就利用rsync服務(wù)推送到備份服務(wù)器上
-
inotify:
-
異步的文件系統(tǒng)事件監(jiān)控機(jī)制,利用事件驅(qū)動(dòng)機(jī)制,而無(wú)須通過(guò)諸如cron等的輪詢機(jī)制來(lái)獲取事件,linux內(nèi)核從2.6.13起支持 inotify,通過(guò)inotify可以監(jiān)控文件系統(tǒng)中添加、刪除,修改、移動(dòng)等各種事件
[root@centos8 ~]#grep -i inotify /boot/config-4.18.0-80.el8.x86_64 CONFIG_INOTIFY_USER=y
-
-
實(shí)現(xiàn)inotify軟件:
- inotify-tools
- sersync
- lrsyncd
-
inotify+rsync使用方式
- inotify 對(duì)同步數(shù)據(jù)目錄信息的監(jiān)控
- rsync 完成對(duì)數(shù)據(jù)的同步
- 利用腳本進(jìn)行結(jié)合
5.2 實(shí)現(xiàn)inotify
5.2.1 內(nèi)核支持
-
內(nèi)核是否支持inotify
-
Linux支持inotify的內(nèi)核最小版本為 2.6.13,參看man 7 inotify
ls -l /proc/sys/fs/inotify #列出下面的文件,說(shuō)明服務(wù)器內(nèi)核支持inotify -rw-r--r-- 1 root root 0 Dec 7 10:10 max_queued_events -rw-r--r-- 1 root root 0 Dec 7 10:10 max_user_instances -rw-r--r-- 1 root root 0 Dec 6 05:54 max_user_watches
-
-
inotify內(nèi)核參數(shù)說(shuō)明:
- max_queued_events:inotify事件隊(duì)列最大長(zhǎng)度,如值太小會(huì)出現(xiàn) Event Queue Overflow 錯(cuò)誤,默認(rèn)值:16384
- max_user_instances:每個(gè)用戶創(chuàng)建inotify實(shí)例最大值,默認(rèn)值:128
- max_user_watches:可以監(jiān)視的文件數(shù)量(單進(jìn)程),默認(rèn)值:8192
-
范例:
[root@centos8 ~]#vim /etc/sysctl.conf fs.inotify.max_queued_events=66666 fs.inotify.max_user_watches=100000 [root@centos8 ~]#sysctl -p fs.inotify.max_queued_events = 66666 fs.inotify.max_user_watches = 100000 [root@centos8 ~]#cat /proc/sys/fs/inotify/* 66666 128 100000
5.2.2 inotify-tools工具
-
inotify-tools參考文檔:https://github.com/rvoicilas/inotify-tools/wiki
-
安裝inotify-tools:基于epel源
yum install inotify-tools -
inotify-tools包主要工具:
- inotifywait: 在被監(jiān)控的文件或目錄上等待特定文件系統(tǒng)事件(open ,close,delete等)發(fā)生,常用于實(shí)時(shí)同步的目錄監(jiān)控
- inotifywatch:收集被監(jiān)控的文件系統(tǒng)使用的統(tǒng)計(jì)數(shù)據(jù),指文件系統(tǒng)事件發(fā)生的次數(shù)統(tǒng)計(jì)
-
inotifywait 命令常見(jiàn)選項(xiàng)
- -m, --monitor 始終保持事件監(jiān)聽(tīng)
- -d, --daemon 以守護(hù)進(jìn)程方式執(zhí)行,和-m相似,配合-o使用
- -r, --recursive 遞歸監(jiān)控目錄數(shù)據(jù)信息變化
- -q, --quiet 輸出少量事件信息
- –exclude 指定排除文件或目錄,使用擴(kuò)展的正則表達(dá)式匹配的模式實(shí)現(xiàn)
- –excludei 和exclude相似,不區(qū)分大小寫(xiě)
- -o, --outfile 打印事件到文件中,相當(dāng)于標(biāo)準(zhǔn)正確輸出,注意:使用絕對(duì)路徑
- -s, --syslogOutput 發(fā)送錯(cuò)誤到syslog相當(dāng)于標(biāo)準(zhǔn)錯(cuò)誤輸出
- –timefmt 指定時(shí)間輸出格式
- –format 指定的輸出格式;即實(shí)際監(jiān)控輸出內(nèi)容
- -e指定監(jiān)聽(tīng)指定的事件,如果省略,表示所有事件都進(jìn)行監(jiān)聽(tīng)
-
inotifywait 的–timefmt 時(shí)間格式
-
參考 man 3 strftime
-
%Y 年份信息,包含世紀(jì)信息
-
%y 年份信息,不包括世紀(jì)信息
-
%m 顯示月份,范圍 01-12
-
%d 每月的第幾天,范圍是 01-31
-
%H 小時(shí)信息,使用 24小時(shí)制,范圍 00-23
-
%M 分鐘,范圍 00-59
--timefmt "%Y-%m-%d %H:%M"
-
-
inotifywait 的 --format 格式定義
- %T 輸出時(shí)間格式中定義的時(shí)間格式信息,通過(guò) --timefmt option 語(yǔ)法格式指定時(shí)間信息
- %w 事件出現(xiàn)時(shí),監(jiān)控文件或目錄的名稱信息
- %f 事件出現(xiàn)時(shí),將顯示監(jiān)控目錄下觸發(fā)事件的文件或目錄信息,否則為空
- %e 顯示發(fā)生的事件信息,不同的事件默認(rèn)用逗號(hào)分隔
- %Xe顯示發(fā)生的事件信息,不同的事件指定用X進(jìn)行分隔
-
范例:
--format "%T %w%f event: %;e" --format '%T %w %f' -
inotifywait -e 選項(xiàng)指定的事件類型
- create 文件或目錄創(chuàng)建
- delete 文件或目錄被刪除
- modify 文件或目錄內(nèi)容被寫(xiě)入
- attrib 文件或目錄屬性改變
- close_write 文件或目錄關(guān)閉,在寫(xiě)入模式打開(kāi)之后關(guān)閉的
- close_nowrite 文件或目錄關(guān)閉,在只讀模式打開(kāi)之后關(guān)閉的
- close 文件或目錄關(guān)閉,不管讀或是寫(xiě)模式
- open 文件或目錄被打開(kāi)
- moved_to 文件或目錄被移動(dòng)到監(jiān)控的目錄中
- moved_from 文件或目錄從監(jiān)控的目錄中被移動(dòng)
- move 文件或目錄不管移動(dòng)到或是移出監(jiān)控目錄都觸發(fā)事件
- access 文件或目錄內(nèi)容被讀取
- delete_self 文件或目錄被刪除,目錄本身被刪除
- unmount 取消掛載
- 范例:
范例:使用inotifywait
-
范例:
-e create,delete,moved_to,close_write, attrib -
范例:使用inotifywait
#監(jiān)控一次性事件 inotifywait /data#持續(xù)前臺(tái)監(jiān)控 inotifywait -mrq /data#持續(xù)后臺(tái)監(jiān)控,并記錄日志 inotifywait -o /root/inotify.log -drq /data --timefmt "%Y-%m-%d %H:%M" --format "%T %w%f event: %e"#持續(xù)前臺(tái)監(jiān)控特定事件 inotifywait -mrq /data --timefmt "%F %H:%M" --format "%T %w%f event: %;e" -e create,delete,moved_to,close_write,attrib
5.3 rsync
-
rsync 常用于做為 linux系統(tǒng)下的數(shù)據(jù)鏡像備份工具,實(shí)現(xiàn)實(shí)現(xiàn)遠(yuǎn)程同步,支持本地復(fù)制,或者與其他SSH、rsync主機(jī)同步數(shù)據(jù),支持增量備份,配合任務(wù)計(jì)劃,rsync能實(shí)現(xiàn)定時(shí)或間隔同步,配合inotify或sersync,可以實(shí)現(xiàn)觸發(fā)式的實(shí)時(shí)數(shù)據(jù)同步
-
官方網(wǎng)站: http://rsync.samba.org/
-
軟件包:rsync,rsync-daemon(CentOS 8)
-
服務(wù)文件:/usr/lib/systemd/system/rsyncd.service
-
配置文件:/etc/rsyncd.conf
-
端口:873/tcp
5.3.1 rsync命令
-
rsync 格式
#Local: rsync [OPTION...] SRC... [DEST]#Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST#Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST -
rsync有三種工作方式:
- 本地文件系統(tǒng)上實(shí)現(xiàn)同步。命令行語(yǔ)法格式為上述"Local"段的格式。
- 本地主機(jī)使用遠(yuǎn)程shell和遠(yuǎn)程主機(jī)通信。命令行語(yǔ)法格式為上述"Access via remote shell"段的格式。
- 本地主機(jī)通過(guò)網(wǎng)絡(luò)套接字連接遠(yuǎn)程主機(jī)上的rsync daemon。命令行語(yǔ)法格式為上述"Access via rsync daemon"段的格式。
-
前兩者的本質(zhì)是通過(guò)本地或遠(yuǎn)程shell,而第3種方式則是讓遠(yuǎn)程主機(jī)上運(yùn)行rsyncd服務(wù),使其監(jiān)聽(tīng)在一個(gè)端口上,等待客戶端的連接。
-
常見(jiàn)選項(xiàng):
-v:顯示rsync過(guò)程中詳細(xì)信息。可以使用"-vvvv"獲取更詳細(xì)信息。 -P:顯示文件傳輸?shù)倪M(jìn)度信息。(實(shí)際上"-P"="--partial --progress",其中的"--progress"才是顯示進(jìn)度信息的)。 -n --dry-run :僅測(cè)試傳輸,而不實(shí)際傳輸。常和"-vvvv"配合使用來(lái)查看rsync是如何工作的。 -a --archive :歸檔模式,表示遞歸傳輸并保持文件屬性。等同于"-rtopgDl"。 -r --recursive:遞歸到目錄中去。 -t --times:保持mtime屬性。強(qiáng)烈建議任何時(shí)候都加上"-t",否則目標(biāo)文件mtime會(huì)設(shè)置為系統(tǒng)時(shí)間,導(dǎo)致下次更新:檢查出mtime不同從而導(dǎo)致增量傳輸無(wú)效。 -o --owner:保持owner屬性(屬主)。 -g --group:保持group屬性(屬組)。 -p --perms:保持perms屬性(權(quán)限,不包括特殊權(quán)限)。 -D :是"--device --specials"選項(xiàng)的組合,即也拷貝設(shè)備文件和特殊文件。 -l --links:如果文件是軟鏈接文件,則拷貝軟鏈接本身而非軟鏈接所指向的對(duì)象 -z :傳輸時(shí)進(jìn)行壓縮提高效率 -R --relative:使用相對(duì)路徑。意味著將命令行中指定的全路徑而非路徑最尾部的文件名發(fā)送給服務(wù)端,包括它們的屬性。用法見(jiàn)下文示例。 --size-only :默認(rèn)算法是檢查文件大小和mtime不同的文件,使用此選項(xiàng)將只檢查文件大小。 -u --update :僅在源mtime比目標(biāo)已存在文件的mtime新時(shí)才拷貝。注意,該選項(xiàng)是接收端判斷的,不會(huì)影響刪除行為。 -d --dirs :以不遞歸的方式拷貝目錄本身。默認(rèn)遞歸時(shí),如果源為"dir1/file1",則不會(huì)拷貝dir1目錄,使用該選項(xiàng)將拷貝dir1但不拷貝file1。 --max-size :限制rsync傳輸?shù)淖畲笪募笮 ?梢允褂脝挝缓缶Y,還可以是一個(gè)小數(shù)值(例如:"-- max-size=1.5m") --min-size :限制rsync傳輸?shù)淖钚∥募笮 _@可以用于禁止傳輸小文件或那些垃圾文件。 --exclude :指定排除規(guī)則來(lái)排除不需要傳輸?shù)奈募?--delete :以SRC為主,對(duì)DEST進(jìn)行同步。多則刪之,少則補(bǔ)之。注意"--delete"是在接收端執(zhí)行的,所以它是在:exclude/include規(guī)則生效之后才執(zhí)行的。 -b --backup :對(duì)目標(biāo)上已存在的文件做一個(gè)備份,備份的文件名后默認(rèn)使用"~"做后綴。 --backup-dir:指定備份文件的保存路徑。不指定時(shí)默認(rèn)和待備份文件保存在同一目錄下。 -e :指定所要使用的遠(yuǎn)程shell程序,默認(rèn)為ssh。 --port :連接daemon時(shí)使用的端口號(hào),默認(rèn)為873端口。 --password-file:daemon模式時(shí)的密碼文件,可以從中讀取密碼實(shí)現(xiàn)非交互式。注意,這不是遠(yuǎn)程shell認(rèn)證的密碼,而是rsync模塊認(rèn)證的密碼。 -W --whole-file:rsync將不再使用增量傳輸,而是全量傳輸。在網(wǎng)絡(luò)帶寬高于磁盤(pán)帶寬時(shí),該選項(xiàng)比增量傳輸更高效。 --existing :要求只更新目標(biāo)端已存在的文件,目標(biāo)端還不存在的文件不傳輸。注意,使用相對(duì)路徑時(shí)如果上層目錄不存在也不會(huì)傳輸。 --ignore-existing:要求只更新目標(biāo)端不存在的文件。和"--existing"結(jié)合使用有特殊功能,見(jiàn)下文示例。 --remove-source-files:要求刪除源端已經(jīng)成功傳輸?shù)奈募?
5.3.2 以獨(dú)立服務(wù)方式運(yùn)行rsync
-
范例:以獨(dú)立服務(wù)方式運(yùn)行 rsync
#創(chuàng)建rsync服務(wù)器的配置文件 vi /etc/rsyncd.conf uid = root gid = root use chroot = no max connections = 0 ignore errors exclude = lost+found/ log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock reverse lookup = no hosts allow = 192.168.8.0/24 [backup] path = /backup/ comment = backup read only = no auth users = rsyncuser secrets file = /etc/rsync.pass#服務(wù)器端準(zhǔn)備目錄 mkdir /backup#服務(wù)器端生成驗(yàn)證文件 echo "rsyncuser:magedu" > /etc/rsync.pass chmod 600 /etc/rsync.pass#服務(wù)器端啟動(dòng)rsync服務(wù) rsync --daemon #可加入/etc/rc.d/rc.local實(shí)現(xiàn)開(kāi)機(jī)啟動(dòng) systemctl start rsyncd #CentOS 7 以上版本#客戶端配置密碼文件 echo "magedu" > /etc/rsync.pass chmod 600 /etc/rsync.pass #此為必要項(xiàng)#客戶端測(cè)試同步數(shù)據(jù) rsync -avz --delete --password-file=/etc/rsync.pass /data/ \ rsyncuser@rsync服務(wù)器IP::backup
5.4 創(chuàng)建inotify_rsync.sh腳本
#!/bin/bash SRC='/data/' DEST='rsyncuser@rsync服務(wù)器IP::backup' inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;doFILEPATH=${DIR}${FILE}rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log done5.5 實(shí)戰(zhàn)案例:實(shí)現(xiàn)基于分布式的LAMP架構(gòu),并將NFS實(shí)時(shí)同步到備份服務(wù)器
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-MjCRZZLo-1577107595329)(%E6%88%AA%E5%9B%BE/2019%E5%B9%B411%E6%9C%8821%E6%97%A5/image-20191223153905577.png)]
總結(jié)
以上是生活随笔為你收集整理的28 网络文件共享服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于今天参加学校ACM比赛的感想
- 下一篇: 小程序--获取手机型号