14.1 NFS介紹
14.2 NFS服務端安裝配置
14.3 NFS配置選項
14.4 exportfs命令
14.5 NFS客戶端問題
15.1 FTP介紹
15.2/15.3 使用vsftpd搭建ftp
15.4 xshell使用xftp傳輸文件
15.5 使用pure-ftpd搭建ftp服務
擴展
vsftp使用mysql存放虛擬用戶並驗證 http://www.aminglinux.com/bbs/thread-342-1-1.html
ftp的主動和被動模式 http://www.aminglinux.com/bbs/thread-961-1-1.htmlphp
1、NFS介紹
一、NFS簡介html
NFS,Network File System的縮寫。網絡文件系統,即經過網絡,對在不一樣主機上的文件進行共享。 NFS最先由Sun公司開發,分2,3,4三個版本,2和3由Sun起草開發,4.0開始Netapp公司參與並主導開發,最新爲4.1版本,更新比較慢其實4.1是從2010年就開始使用了。 NFS數據傳輸基於RPC協議,RPC爲Remote Procedure Call的簡寫。NFS服務須要藉助於RPC協議實現通訊 NFS應用場景是:A,B,C三臺機器上須要保證被訪問到的文件是同樣的,A共享數據出來,B和C分別去掛載A共享的數據目錄,從而B和C訪問到的數據和A上的一致
二、NFS原理:mysql
2、NFS服務端安裝配置linux
用兩臺機器作實驗,一臺做爲服務端(001 192.168.83.3),一臺做爲客戶端(002 192.168.83.33);
在兩臺機器上安裝: yum install -y nfs-utils rpcbindsql
在001上,編輯配置文件 :vim /etc/exportsshell
寫入如下語句vim
/home/nfstestdir 192.168.83.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)windows
語句釋義:centos
/home/nfstestdir :共享的目錄數組
rw: 讀寫
ro: 只讀
sync: 同步模式,內存數據實時寫入磁盤
async :非同步模式
no_root_squash: 客戶端掛載NFS共享目錄後,root用戶不受約束,權限很大
root_squash: 與上面選項相對,客戶端上的root用戶收到約束,被限定成某個普通用戶
all_squash:客戶端上全部用戶在使用NFS共享目錄時都被限定爲一個普通用戶
anonuid/anongid: 和上面幾個選項搭配使用,定義被限定用戶的uid和gid
192.168.83.0/24:爲客戶端的網段;
建立nfstestdir要分享的目錄,並給予777權限
開啓nfs服務 : systemctl start nfs
查看監聽端口,端口111爲rpcbind默認端口
設置開機啓動:systemctl enable nfs
3、NFS配置選項
一、掛載NFS
showmount -e 192.168.83.3 //該ip爲NFS服務端ip
若是沒有出現共享目錄,有下面可能,注意排查:
一、二者通訊問題
二、把二者的防火牆關閉
此處關閉服務端和客戶端的防火牆: systemctl stop firewalld
selinux也要關掉
showmount -e 192.168.83.3 //該ip爲NFS服務端ip
開始掛載:
mount -t nfs 192.168.83.3:/home/nfstestdir /mnt
在客戶端掛載目錄/mnt/下,就是NFS共享的目錄,建立一個測試文件tobe.php
在服務端的共享目錄中能夠看到
4、exportfs命令
看下圖:假如A的NFS服務停掉了,可是B和C還在掛載着A分享的分區,這就沒法正常工做了,因爲B和C上面的進程是d狀態(不可中斷進程,在ps一節中學習到的),一旦A中止了,B和C必定會出問題,沒法服務,既不能夠重啓,也不能夠關閉,就會把系統整掛掉。因此NFS必定不能夠隨便重啓。 若是必須重啓怎麼辦?先把B和C上面的目錄卸載下來。
若是掛載了多臺機器,使用exportps
exportps命令經常使用選項:
-a 所有掛載或者所有卸載 -r 從新掛載 -u 卸載某一個目錄 -v 顯示共享目錄 如下操做在服務端上 vim /etc/exports //增長 /tmp/ 192.168.83.33/24(rw,sync,no_root_squash) exportfs -arv //不用重啓nfs服務,配置文件就會生效
在服務端001上:
exportfs -arv
這樣就可讓配置文件從新生效,不須要再次重啓nfs服務,也不會對客戶端形成以前所說的錯誤
編輯配置文件,增長一個共享的目錄
vim /etc/exports
/tmp/ 192.168.83.33/24(rw,sync,no_root_squash)
用命令:exportfs -arv 直接生效,不用重啓NFS服務
使用客戶端測試;
查看服務端共享目錄:showmount -e 192.168.83.3
掛載 mount -t nfs 192.168.83.3:/tmp /mnt
由於以前掛載了,須要先取消掛載
在客戶端mnt下建立一個測試文本
新檢測試文本1212.txt,查看其gid和uid都爲root
在服務端001下
查看/tmp目錄下的1212.txt測試文本,其uid和gid都爲root
5、NFS客戶端問題
注意:NFS 4版本會有該問題
在客戶端掛載共享目錄且權限設置爲no_root_squash,不論是root用戶仍是普通用戶,建立新文件時屬主、屬組爲nobody , 這個不是設置錯誤,是軟件自己自帶的BUG。
解決方案:
方案1: 在客戶端掛載的時候加上 -o nfsvers=3,其目的是指定nfs使用3版本,
mount -t nfs -o,nfsvers=3 192.168.83.3:/tmp /mnt 須要卸載 mount -t nfs -oremount,nfsvers=3 192.168.83.3:/tmp /mnt -oremount,nfsvers=3,不卸載使用remount(從新加載),-oremount:-o與remount中間看狀況是否要加空格
方案2:在服務端和客戶端配置:
vim /etc/idmapd.conf
把「#Domain = local.domain.edu」 改成 「Domain = xxx.com」 (這裏的xxx.com,看狀況能夠自定義),而後再重啓rpcbind服務
6、FTP介紹
咱們以前傳輸文件所用的是rz,sz命令,能夠簡單明瞭的就把咱們所需的文件下載或者上傳。可是有個缺陷,不能夠上傳或者下載大致積的文件。FTP就能夠解決這個問題! FTP是File Transfer Protocol(文件傳輸協議,簡稱文傳協議)的英文簡稱,用於在Internet上控制文件的雙向傳輸。 FTP的主要做用就是讓用戶鏈接一個遠程計算機(這些計算機上運行着FTP服務器程序),並查看遠程計算機中的文件,而後把文件從遠程計算機複製到本地計算機,或把本地計算機的文件傳送到遠程計算機。 小公司用的多,大企業不用FTP,由於不安全,一般使用GitHub。
7、使用vsftpd搭建ftp服務
centos上自帶的FTP服務軟件vsftpd,默認沒有安裝;須要用yum安裝
yum install -y vsftpd
安裝後,不用配置,能夠直接使用,默認支持使用系統帳號登陸,可是由於安全緣由,須要創建帳號體系
useradd -s /sbin/nologin virftp //建立虛擬用戶virftp vim /etc/vsftpd/vsftpd_login //建立虛擬用戶的密碼文件
vim /etc/vsftpd/vsftpd_login內容以下,奇數行爲用戶名,偶數行爲密碼,多個用戶就寫多行
tobe和user爲用戶名
chmod 600 /etc/vsftpd/vsftpd_login 更改權限
db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db //生成庫文件
建立虛擬用戶的配置文件所在目錄,目錄能夠自定義
mkdir /etc/vsftpd/vsftpd_user_conf
建立第一個用戶的配置文件,文件名要和用戶名保持一致
cd /etc/vsftpd/vsftpd_user_conf/
vim tobe
local_root=/home/virftp/tobe //虛擬用戶的家目錄 anonymous_enable=NO //是否容許匿名用戶 write_enable=YES //是否容許可寫 local_umask=022 //建立新目錄和文件的權限 anon_upload_enable=NO //是否容許匿名用戶上傳 anon_mkdir_write_enable=NO //是否容許匿名用戶可建立 idle_session_timeout=600 //鏈接後沒有任何操做的超時時間,空閒時間段,600秒 data_connection_timeout=120 //數據傳輸的超時時間120秒 max_clients=10 //最大容許鏈接的clients客戶端個數
建立虛擬用戶家目錄,並建立一個文件
mkdir /home/virftp/tobe touch /home/virftp/tobe/test.txt chown -R virftp:virftp /home/virftp //更改整個目錄權限 vim /etc/pam.d/vsftpd //定義密碼文件在哪裏,在最前面加上以下內容,注意每行語句後面不能有空格 auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
修改vsftpd的主配置文件/etc/vsftpd/vsftpd.conf。注意每行語句後面不能有空格
vim /etc/vsftpd/vsftpd.conf
將anonymous_enable=YES 改成 anonymous_enable=NO 將anon_upload_enable=YES 改成 anon_upload_enable=NO 將anon_mkdir_write_enable=YES 改成 anon_mkdir_write_enable=NO 再增長以下內容: chroot_local_user=YES guest_enable=YES guest_username=virftp virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/vsftpd_user_conf allow_writeable_chroot=YES
systemctl start vsftpd //啓動vsftpd服務,並查看啓動狀態
注意: 21端口FTP; 22端口SSHD; 23端口TELNET
二、測試ftp
在服務器上安裝lftp yum install -y lftp
安裝完成後,連接用戶tobe: lftp tobe@127.0.0.1
執行命令ls,看是否正常輸出,若不正常查看日誌/var/log/messages和/var/log/secure
? //是用來查看能夠操做的命令
使用 get+文件名 來下載一個文件到當前所在目錄,下圖所在目錄爲/root/,因此文件在root目錄下
8、xshell使用xftp傳輸文件
一、使用xshell直接傳輸
原理就是:使用sftp模式登陸服務器
第一步:在xshell下,新建會話,按下圖設置其屬性
第二步:按下圖,設置其下載到的目錄
設置完成輸入用戶名密碼進入
能夠自由切換目錄
get httpd-2.4.39.tar.gz 獲取此文件
此時windows在桌面上,找到對應的目錄,便可看到相應的文件
二、xshell使用xftp軟件傳輸文件
在xshell界面上按下「ctrl+alt+F」彈出如下對話框,點擊下載,跳轉到下載頁,下載安裝
安裝完成後,回到xshell上,按下「ctrl+alt+F」彈出軟件界面
左側windows下選擇好要傳輸的目錄,在右側選擇要傳輸的文件,點擊傳輸,左側會顯示傳輸過去的文件
9、 使用pure-ftpd搭建ftp服務
pure-ftp爲另一款輕量FTP服務軟件,和vsftp相似
安裝並配置pure-ftpd
yum install -y pure-ftpd
vim /etc/pure-ftpd/pure-ftpd.conf //找到pureftpd.pdb這行,把行首的#刪除
由於vsftpd和pure-ftpd 共用21端口,所以須要把vsftpd服務關掉,再開啓pure-ftpd
systemctl stop vsftpd
systemctl start pure-ftpd
建立一個測試用戶目錄及用戶
mkdir /data/ftp useradd -u 1010 pure-ftp chown -R pure-ftp:pure-ftp /data/ftp
經過pure-pw命令增長ftp用戶以及配置用戶庫文件
pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp 經過pure-pw命令建立一個用戶,useradd指定用戶名爲ftp_usera,-u指定系統的用戶是pure-ftp,-d 指定虛擬用戶的家目錄爲/data/ftp pure-pw mkdb //創建虛擬用戶數據 touch /data/ftp/123.txt 建立一個測試文件 lftp ftp_usera@127.0.0.1 測試正常
chown pure-ftp:pure-ftp /data/ftp/123.txt 屬主映射成UID,數組爲系統中組的名字