NFS(Network File System)數據傳輸基於RPC協議,RPC爲Remote Procedure Call的簡寫。shell
NFS的應用場景是:A,B,C3臺機器上須要保證被訪問到的文件是同樣的,A共享數據出來,B和C分別去掛載A共享的數據目錄,從而B和C訪問到的數據和A上的一致。數據庫
NFS原理圖:vim
在CentOS上使用NFS服務須要安裝兩個包(nfs-utils和rpcbind),當咱們使用yum安裝nfs-utils時會一併安裝rpcbind:安全
#yum install -y nfs-utils服務器
而後修改配置文件:session
#vim /etc/exportsdom
寫入以下內容:async
/home/nfstestdir 192.168.6.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)測試
編輯好配置文件後建立相關的目錄並啓動NFS服務:ui
[root@zhangjin-120:~]#mkdir /home/nfstestdir #建立目錄 [root@zhangjin-120:~]#chmod 777 /home/nfstestdir #更改權限 [root@zhangjin-120:~]#systemctl start rpcbind #啓動rpc服務 [root@zhangjin-120:~]#systemctl start nfs #啓動nfs服務 [root@zhangjin-120:~]#systemctl enable rpcbind #rpc服務開機啓動 [root@zhangjin-120:~]#systemctl enable nfs #nfs服務開機啓動 Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
上面咱們修改了配置文件/etc/exports,並寫入以下內容:
/home/nfstestdir 192.168.6.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
其中,第一部分是本地要共享出去的目錄,而後是容許訪問的主機(能夠是一個IP,也能夠是一個IP段),小括號裏面的是一些權限選項:
rw:表示只寫。
ro:表示只讀。
sync:同步模式,表示內存中的數據實時寫入磁盤。
async:非同步模式,表示把內存中的數據按期寫入磁盤。
no_root_squash:加上這個選項後,root用戶就會對共享的目錄擁有至高的權限控制,就像是對本機的目錄操做同樣。但這樣安全性會下降。
root_squash:與no_root_squash選項對應,表示root用戶對共享目錄的權限不高,只有普通用戶的權限,即限制了root。
all_squash:表示無論使用NFS的用戶是誰,其身份都會被限定爲一個指定的普通用戶身份。
anonuid/anongid:要和root_squash以及all_squash選項一同使用,用於指定使用NFS的用戶被限定後的uid和gid,但前提是本機的/etc/passwd中存在相應的uid和gid。
上面的配置文件/etc/exports爲要共享的目錄爲/home/nfstestdir,信任的主機爲192.168.6.0/24這個網段,權限爲讀/寫,同步模式,限定全部使用者,而且限定的uid和gid都爲1000。
咱們準備兩臺虛擬機,192.168.6.120做爲服務端,192.168.6.123做爲客戶端。在客戶端掛載NFS以前,咱們須要先查看服務端共享了哪些目錄。客戶端安裝了nfs-utils包後,可使用showmount命令查看:
使用命令showmount -e IP能夠查看NFS的共享狀況,從上面咱們能夠看到192.168.6.120的共享目錄爲/home/nfstestdir,信任主機爲192.168.6.0/24這個網段。
而後在客戶端上(192.168.6.123)掛載NFS:
能夠看到增長了一個/mnt分區,這個就是NFS共享的目錄了。
咱們進入到/mnt/目錄下,並建立測試文件:
咱們在服務端上也能夠看到這個文件:
exportfs命令的經常使用選項有:
-a:表示所有掛載或者卸載。
-r:表示從新掛載。
-u:表示卸載某一個目錄。
-v:表示顯示共享的目錄。
當改變/etc/exports配置文件後,使用exportfs命令掛載不須要重啓NFS服務。
咱們在服務端(192.168.6.120)修改配置文件/etc/exports:
而後在服務端執行命令exportfs -arv:
在前面咱們用不對勁了mount命令。其實用mount命令來掛載NFS服務是要用-t nfs來指定掛載的類型爲nfs。另外在掛載NFS服務時,經常使用-o nolock(不加鎖)選項。例如咱們在客戶端(192.168.6.123)上執行以下命令:
咱們還能夠把要掛載的NFS目錄寫到客戶端上的/etc/fstab文件中,掛載時只須要執行mount -a命令便可。
#vim /etc/fstab
這樣操做的好處是之後開機會自動掛載NFS。剛剛掛載的/zhangjin/目錄在服務端設置了no_root_squash,它並不會限制root用戶,也就是說使用root用戶建立文件時,跟在客戶端本機上建立的同樣:
能夠看到,test.txt的全部者和所屬組都爲root。
NFS4版本會有該問題:客戶端掛載共享目錄後,不論是root用戶仍是普通用戶,建立新文件時屬主、屬組爲nobody。
解決的辦法有兩種:
一是客戶端掛載時加上-o nfsvers=3(指定nfs的版本爲3版本)
# mount -t nfs -o nfsvers=3 192.168.6.120:/tmp/ /mnt/
客戶端和服務端都須要
另外一種方法是編輯文件:
vim /etc/idmapd.conf
把「#Domain = local.domain.edu」改成「Domain = xxx.com」,而後再重啓rpcidmapd服務。
FTP(File Transfer Protocol)文件傳輸協議,用於在因特網上控制文件的雙向傳輸。它同時也是一個應用程序,用戶能夠經過它把本身的PC機與世界各地全部運行FTP協議的服務器相連,以訪問服務器上的大量程序和信息。
FTP的主要做用就是讓用戶鏈接一個遠程計算機,並查看遠程計算機中的文件,而後把文件從遠程計算機複製到本地計算機,或把本地計算機的文件傳送到遠程計算機。FTP方便傳輸數據,因此我的用戶不少,但在企業裏用得愈來愈少,由於FTP是有必定安全隱患的。
一、安裝vsftpd
#yum install -y vsftpd
二、創建賬號及與虛擬帳戶相關的文件
#useradd virftp -s /sbin/nologin
#vim /etc/vsftpd/vsftpd_login
寫入以下內容:
test1
123456
zhangjin
abcdef
其中,test一、test2爲用戶名,12345六、abcdef爲對應的密碼。
再更改該文件的權限
#chmod 600 /etc/vsftpd/vsftpd_login
因爲vsftpd使用的密碼不是明文的,須要生成對應的庫文件:
#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 test1
寫入以下內容:
local_root=/home/virftp/test1 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 max_per_ip=5 local_max_rate=50000
其中,local_root爲test1帳號的家目錄,anonymous_enable用來限制是否容許匿名帳號登陸(若爲NO,表示不容許匿名帳號登陸),write_enable=YES表示可寫,local_umask指定umask值,anon_upload_enable表示是否容許匿名帳號上傳文件,anon_mkdir_write_enable表示是否容許匿名帳號可寫。
建立zhangjin帳號的步驟和test1同樣:
#mkdir /home/virftp/test1
#touch /home/virftp/test1/testvirftp.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
四、修改全局配置文件/etc/vsftpd/vsftpd.conf
並在文件最後面添加以下內容:
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
而後啓動vsftpd服務:
#systemctl start vsftpd
再安裝lftp客戶端軟件:
#yum install -y lftp
而後進行測試:
下載軟件:
在Xshell裏按住ctrl+alt+f彈出下載頁面:
安裝完成後再在Xshell裏按住ctrl+alt+f,此時就會彈出傳輸頁面:
此時就能夠在兩邊傳輸文件了。
一、安裝pure-ftpd
#yum install -y epel-release
#yum install -y pure-ftpd
二、配置pure-ftpd
#vim /etc/pure-ftpd/pure-ftpd.conf
而後搜索PureDB /etc/pure-ftpd/pureftpd.pdb,把前面的#去掉。而後啓動pure-ftpd,啓動以前須要關閉vsftpd,由於端口衝突:
#systemctl stop vsftpd
#systemctl start pure-ftpd
查看pure-ftpd是否啓動成功:
三、創建帳號
其中,-u選項將虛擬用戶ftp_user1與系統用戶pure-ftp關聯在一塊兒,也就是說,使用ftp_user1帳號登陸FTP後,會以pure-ftp的身份來讀取和下載文件,-d選項後面的目錄爲ftp_user1帳戶的家目錄,這樣可使ftp_user1只能訪問其家目錄/data/ftp/。
而後建立用戶信息數據庫文件:
#pure-pw mkdb
其中,pure-pw還能夠列出當前的FTP帳號以及刪除某個帳號。例如:
下面進行測試: