1. 程式人生 > >exportfs命令,NFS客戶端問題,FTP介紹,使用vsftp搭建ftp

exportfs命令,NFS客戶端問題,FTP介紹,使用vsftp搭建ftp

nfs ftp exportfs vsftp

筆記內容:

  • 14.4 exportfs命令

  • 14.5 NFS客戶端問題

  • 15.1 FTP介紹

  • 15.2/15.3 使用vsftpd搭建ftp

筆記日期:


14.4 exportfs命令

技術分享

技術分享

這個exportfs命令會在安裝nfs-util包時一起安裝,當服務端需要停止NFS服務或者進行一些變動並重啟時,其他掛載了共享目錄的機器需要將這個掛載的目錄卸載掉,不然的話服務進程就會出問題,單臺機器我們可以使用unmnt命令去卸載,但是如果有幾十臺機器的話總不能一個個去unmnt吧,所以這個exportfs命令就是用來進行多臺機器的卸載、重新掛載之類的操作的。

在服務端上執行exportfs -arv就能把共享目錄卸載掉:

技術分享


現在去客戶端就會發現共享目錄沒有了:

技術分享


然後再去服務端編輯/etc/exports文件增加以下內容,新增一個共享目錄:

/tmp/ 192.168.133.0/24(rw,sync,no_root_squash)

技術分享


在服務端執行exportfs -arv重新掛載:

技術分享


然後到客戶端showmount一下:

技術分享

可以看到無需重新啟動NFS服務器也能掛載共享目錄,這樣避免重啟服務帶來的問題。


現在客戶端就可以把共享目錄掛載到本地的mnt上了:

mount -t nfs 192.168.77.128:/tmp/ /mnt/

技術分享

現在客戶端上的mnt就是服務端的tmp目錄。


在客戶端上的mnt目錄創建一個文件,並在文件中隨便寫上一些內容:

vim /mnt/test.txt

創建好後ls -l /mnt/可以看到文件的屬主和屬組都是root:

技術分享


而在服務端上的這個文件的屬主和屬組也是root:

技術分享

這是因為在服務端上的exports配置文件中配置的是no_root_squash,所以在這個共享目錄下的權限就是root,這就是no_root_squash這個選項的作用。


14.5 NFS客戶端問題

技術分享

NFS有一個偶爾可能會遇到的問題,在CentOS6的時候遇到的比較多,不過只有NFS 4版本才會有該問題,這個問題就是:客戶端掛載共享目錄後,不管是root用戶還是普通用戶,創建新文件時屬主、屬組都為nobody。

也就是說即便在服務端的exports配置文件中定義的是no_root_squash選項,但是客戶端在共享目錄下創建新文件時屬主、屬組卻是為nobody。

這個問題有兩種解決方案:

  1. 客戶端掛載時加上 -o nfsvers=3,這是指定nfs的版本為3,不使用4版本。

技術分享


為了確保沒問題可以再remount一下:

技術分享


  1. 客戶端和服務端都需要修改etc/idmapd.conf配置文件:

vim /etc/idmapd.conf

把配置文件中的“#Domain = local.domain.edu” 改為 “Domain = xxx.com” (這裏的xxx.com,隨意定義吧),然後再重啟rpcidmapd服務,在CentOS7中為rpcbind服務。




15.1 FTP介紹

技術分享

FTP 和NFS類似,也是文件共享傳輸相關的一種服務,FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議以傳輸文件。在FTP的使用當中,用戶經常遇到兩個概念:"下載"(Download)和"上傳"(Upload)。"下載"文件就是從遠程主機拷貝文件至自己的計算機上;"上傳"文件就是將文件從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程序向(從)遠程主機上傳(下載)文件。

我們都知道xshell支持rz和sz命令,可以讓windows和Linux機器互相傳輸文件,但是這種傳輸方式有限制,例如超過四個G的文件就無法傳輸,又或者通過跳板機登錄的一臺遠程服務器,也無法使用rz和sz命令來傳輸文件。這種情況下就可以使用FTP來解決這個問題。

我們可以在遠程服務器上搭建一個FTP服務,如果Windows作為客戶端就可以下載一個客戶端軟件,連接上服務器的FTP服務,然後就可以進行互傳文件了,這種就叫FTP服務器。

但是如果在企業應用中,大企業的話是不使用FTP的,因為不是很安全,而且對於版本管理上並不是很好,所以一般只有小公司或者個人的網站之類的會使用FTP。大企業都是使用自動化發布類似於git這種能夠很好地進行版本控制的服務平臺。




15.2/15.3 使用vsftpd搭建ftp

技術分享

介紹完FTP後,下面我們自己通過vsftpd搭建一個ftp服務,CentOS上會自帶有vsftpd包,只需要通過yum安裝即可:

yum install -y vsftpd


然後創建virftp,作為這個服務的映射用戶:

useradd -s /sbin/nologin virftp


雖然vsftpd可以直接使用系統級別的用戶,但是這樣做不安全,所以我們要創建虛擬用戶去映射這個普通用戶,而虛擬用戶是可以映射多個的,由於創建普通用戶時候指定了 /sbin/nologin,這樣的話即便有賬戶和密碼也無法登陸系統,這樣能夠提高安全性,編輯vsftpd_login文件,這是虛擬用戶的密碼文件:

vim /etc/vsftpd/vsftpd_login


內容如下,奇數行為用戶名,偶數行為密碼,多個用戶就寫多行:

testuser1

123456abc

技術分享


保存退出後給這個文件授予600權限,因為這是密碼文件不能給所有的用戶都可以讀:

chmod 600 /etc/vsftpd/vsftpd_login


接著就是把這個密碼文件轉換成二進制文件,轉換命令如下:

db_load -T -t hash -f /etc/vsftpd/vsftpd_login

技術分享


創建虛擬用戶的配置文件所在的目錄:

mkdir /etc/vsftpd/vsftpd_user_conf


進入到該目錄:

cd /etc/vsftpd/vsftpd_user_conf


技術分享

創建一個配置文件,這個配置文件的名稱必須和你在vsftpd_login文件裏定義的用戶名一致:

vim testuser1


編輯內容如下:

local_root=/home/virftp/testuser1 //定義虛擬用戶的家目錄

anonymous_enable=NO //定義是否允許匿名用戶

write_enable=YES //定義是否可寫

local_umask=022 //定義創建目錄或文件的默認權限

anon_upload_enable=NO //定義是否允許匿名用戶可上傳

anon_mkdir_write_enable=NO //定義是否允許匿名用戶創建目錄,並且可寫

idle_session_timeout=600 //定義超時時間

data_connection_timeout=120 /定義/數據傳輸的超時時間

max_clients=10 //定義最大的連接數



技術分享

定義完虛擬用戶的配置文件之後,創建用戶的家目錄:

mkdir -p /home/virftp/testuser1


在家目錄下創建一個文件,等會登錄虛擬用戶時就能看到這個文件:

touch /home/virftp/testuser1/aming.txt


修改virftp家目錄的權限,因為虛擬用戶要映射到這個用戶上:

chown -R virftp:virftp /home/virftp


編輯/etc/pam.d/vsftpd 文件,這個文件用來認證登錄用戶的。在這個文件裏需要指定用戶的密碼文件的路徑在哪,通過這個密碼文件去對比登錄用戶的賬戶密碼:

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

技術分享

註意:如果/lib64/security/pam_userdb.so不存在的話是無法進行驗證的,CentOS6的話是不在lib64目錄下的。




技術分享

接著編輯vsftpd.conf文件,這是vsftpd的主配置文件:

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 //告訴vsftpd服務使用的是虛擬用戶

user_config_dir=/etc/vsftpd/vsftpd_user_conf

allow_writeable_chroot=YES

技術分享


修改完後就可以啟動vsftpd服務了:

systemctl start vsftpd

技術分享


監聽的是21端口:

技術分享

到此為止我們的FTP服務就搭建完成了,接下來就是進行測試環節。



技術分享

測試需要安裝一個客戶端,在windows上可以下載filezilla,Linux則可以安裝lftp作為客戶端,下面在Linux上演示一下:

yum -y install lftp


安裝好後就可以通過lftp命令登錄虛擬用戶了:

技術分享


輸入 ? 可以看到支持使用哪些命令:

技術分享

最常用的兩個命令就是put和get,put是上傳文件,get是下載文件,例如我們get一下aming.txt這個文件,然後退出客戶端,可以看到默認會get到當前目錄下:

技術分享


最後介紹一下如何使用Xshell實現與ftp相似的功能,有兩種方式:

  1. 新建一個會話:

技術分享


屬性編輯如下:

技術分享


設置一下文件的保存路徑,我這裏是定義在桌面上:

技術分享


然後點擊確定,接著連接虛擬機:

技術分享

輸入用戶和密碼後,登錄到服務器上:

技術分享


默認是登錄到root目錄下:

技術分享


可以get一個文件(前提是此文件沒有過高的權限):

技術分享

如圖就是get成功了。

文件也保存到桌面上了:

技術分享



  1. 因為以上這種是命令行的方式,不夠直觀,除此之外的第二種方式就是下載一個插件,這個插件是Xftp,能夠實現圖形化的效果,按Ctrl + Alt + F 快捷鍵能夠彈出Xftp的下載窗口:

技術分享


具體的安裝和使用會在下一篇介紹。

















本文出自 “zero” 博客,請務必保留此出處http://zero01.blog.51cto.com/12831981/1978472

exportfs命令,NFS客戶端問題,FTP介紹,使用vsftp搭建ftp