欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          詳解FTP服務(wù)之vsftpd(附三種用戶(hù)安裝腳本)

          FTP(File Transfer Protocol,文件傳輸協(xié)議)可以在網(wǎng)絡(luò)中傳輸文檔、圖像、視頻以及應(yīng)用程序等多種類(lèi)型的文件。在企業(yè)中大多數(shù)情況下,則是用戶(hù)使用FTP從服務(wù)器上下載文件。

          一個(gè)完整的FTP文件傳輸需要建立兩種類(lèi)型的連接,一種為控制文件傳輸?shù)拿睿Q(chēng)為控制連接;另一種實(shí)現(xiàn)真正的文件傳輸,稱(chēng)為數(shù)據(jù)連接

          控制連接:客戶(hù)端希望與FTP服務(wù)器建立上傳下載的數(shù)據(jù)傳輸時(shí),它首先向服務(wù)器TCP協(xié)議的21端口發(fā)起一個(gè)建立連接的請(qǐng)求,F(xiàn)TP服務(wù)器接受來(lái)自客戶(hù)端的請(qǐng)求,完成連接的建立過(guò)程,這樣的連接就稱(chēng)為FTP控制連接

          數(shù)據(jù)連接:FTP控制連接建立后,即可開(kāi)始傳輸文件,傳輸文件的連接稱(chēng)為FTP數(shù)據(jù)連接。FTP數(shù)據(jù)連接就是FTP傳輸數(shù)據(jù)的過(guò)程,它有主動(dòng)傳輸模式和被動(dòng)傳輸模式兩種。

          FTP數(shù)據(jù)傳輸原理

          用戶(hù)在使用FTP傳輸數(shù)據(jù)時(shí),整個(gè)FTP建立連接的過(guò)程經(jīng)過(guò)以下幾個(gè)步驟

          1、FTP服務(wù)器會(huì)自動(dòng)對(duì)默認(rèn)端口21進(jìn)行監(jiān)聽(tīng),當(dāng)某個(gè)客戶(hù)端向這個(gè)端口請(qǐng)求建立連接時(shí),便激活了FTP服務(wù)器上的控制進(jìn)程,通過(guò)這個(gè)控制進(jìn)程,F(xiàn)TP服務(wù)器對(duì)連接用戶(hù)名、密碼以及連接權(quán)限等進(jìn)行身份驗(yàn)證

          2、當(dāng)FTP服務(wù)器身份驗(yàn)證完成后,F(xiàn)TP服務(wù)器和客戶(hù)端之間還會(huì)建立一條用來(lái)傳輸數(shù)據(jù)的專(zhuān)有連接

          3、FTP服務(wù)器在傳輸數(shù)據(jù)過(guò)程中的控制將一直工作,并不斷發(fā)出指令控制整個(gè)FTP傳輸數(shù)據(jù),數(shù)據(jù)傳輸完畢后控制進(jìn)程給客戶(hù)端發(fā)送結(jié)束指令。

          FTP傳輸模式

          在建立數(shù)據(jù)傳輸?shù)臅r(shí)候有兩種傳輸模式,即主動(dòng)模式和被動(dòng)模式

          主動(dòng)模式(PORT模式)

          主動(dòng)模式的數(shù)據(jù)傳輸專(zhuān)有連接是在建立控制連接(用戶(hù)身份驗(yàn)證完成后),首先由FTP服務(wù)器使用20端口主動(dòng)向客戶(hù)端進(jìn)行連接,建立專(zhuān)用于傳輸數(shù)據(jù)的連接,這種方式在網(wǎng)絡(luò)管理上比較好控制。FTP服務(wù)器上的端口21用于用戶(hù)驗(yàn)證,端口20用于數(shù)據(jù)傳輸,只要將這兩個(gè)端口開(kāi)放就可以使用FTP功能了,此時(shí)客戶(hù)端只是出于接收狀態(tài)。

          被動(dòng)模式(PASV模式)

          被動(dòng)模式與主動(dòng)模式不同,數(shù)據(jù)傳輸專(zhuān)有連接是在建立控制連接(用戶(hù)身份驗(yàn)證后)由客戶(hù)端向FTP服務(wù)器發(fā)起連接的。客戶(hù)端使用哪個(gè)端口,連接到FTP服務(wù)器的哪個(gè)端口都是隨機(jī)產(chǎn)生的,服務(wù)器并不參與數(shù)據(jù)的主動(dòng)傳輸,只是被動(dòng)接受。

          FTP用戶(hù)

          匿名用戶(hù):它是指在FTP服務(wù)器中沒(méi)有指定賬戶(hù),但是他仍然可以匿名訪問(wèn)某些公開(kāi)的資源。

          本地用戶(hù):它是指在FTP服務(wù)器上擁有賬戶(hù)。在這類(lèi)用戶(hù)訪問(wèn)FTP服務(wù)器的時(shí)候,其默認(rèn)的主目錄就是賬戶(hù)命名的家目錄。但是他還可以變更到其他目錄中去。

          虛擬用戶(hù):在FTP服務(wù)器中,使用這類(lèi)用戶(hù)只能訪問(wèn)其主目錄下的文件,而不能訪問(wèn)目錄以外的文件,F(xiàn)TP服務(wù)器通過(guò)這種方式來(lái)保障服務(wù)器上其他文件的安全性。

          vsftpd簡(jiǎn)介

          vsftpd(very secure FTP daemon,非常安全的FTP守護(hù)進(jìn)程)是一款可以運(yùn)行在Unix/Linux操作系統(tǒng)上,安全、易用、開(kāi)放源代碼的FTP服務(wù)器軟件。

          1、匿名用戶(hù)登錄

          vsftps服務(wù)啟動(dòng)后,默認(rèn)就允許匿名用戶(hù)(anonymous或ftp)連接到vsftpd服務(wù)器。默認(rèn)匿名用戶(hù)不能離開(kāi)vsftpd服務(wù)器匿名用戶(hù)目錄/var/ftp,匿名用戶(hù)只能下載文件,而沒(méi)有權(quán)限上傳文件到vsftpd服務(wù)器上。

          [root@linux-node1 ~]# yum install -y vsftpd

          [root@linux-node1 ~]# cat /etc/vsftpd/vsftpd.conf|egrep -v '^#|^$' ##默認(rèn)配置

          anonymous_enable=YES

          local_enable=YES

          write_enable=YES

          local_umask=022

          dirmessage_enable=YES

          xferlog_enable=YES

          connect_from_port_20=YES

          xferlog_std_format=YES

          listen=NO

          listen_ipv6=YES

          pam_service_name=vsftpd

          userlist_enable=YES

          tcp_wrappers=YES

          [root@vsftpd ~]# vim /var/ftp/pub/.message

          hello world

          允許匿名用戶(hù)上傳、下載文件和創(chuàng)建目錄

          [root@linux-node1 ~]# vim /etc/vsftpd/vsftpd.conf

          anon_upload_enable=YES

          anon_mkdir_write_enable=YES

          anon_other_write_enable=YES

          [root@vsftpd ~]# cd /var/ftp/pub/

          [root@vsftpd pub]# mkdir test

          [root@vsftpd pub]# chmod o+w test/

          [root@vsftpd vsftpd]# chmod 777 /var/ftp/pub/

          [root@vsftpd vsftpd]# ll /var/ftp/

          total 4

          -rw-r–r– 1 root root 0 Nov 19 16:25 123

          drwxrwxrwx 3 root root 4096 Nov 19 23:05 pub

          [root@vsftpd vsftpd]# /etc/init.d/vsftpd start

          Shutting down vsftpd: [ OK ]

          Starting vsftpd for vsftpd: [ OK ]

          2、認(rèn)證用戶(hù)配置:

          [root@vsftpd ~]# useradd -d /var/ftp ftpuser

          [root@vsftpd ~]# echo '123456'|passwd –stdin ftpuser

          [root@vsftpd vsftpd]# vim vsftpd.conf

          anonymous_enable=NO

          local_root=/var/ftp

          chroot_local_user=YES

          [root@vsftpd ~]# systemctl restart vsftpd

          拒絕指定用戶(hù)連接vsftpd服務(wù)器

          1、編輯/etc/vsftpd/ftpusers文件

          在默認(rèn)情況下,這個(gè)文件內(nèi)已經(jīng)有一些拒絕連接的用戶(hù),在該文件的最后添加拒絕的用戶(hù)就可以了

          [root@vsftpd ~]# vim /etc/vsftpd/ftpusers

          ftpuser

          [root@vsftpd ~]# systemctl restart vsftpd

          [root@linux-node2 ~]# wget ftp://ftpuser:123@10.0.0.100:21/123

          –2018-11-23 20:53:55– ftp://ftpuser:password@10.0.0.100/123

          => “123.1”

          Connecting to 10.0.0.100:21… connected.

          Logging in as ftpuser … Logged in!

          ==> SYST … done. ==> PWD … done.

          ==> TYPE I … done. ==> CWD not needed.

          ==> SIZE 123 … done.

          ==> PASV … done. ==> RETR 123 … done.

          [<=> ] 0 –.-K/s in 0s

          2018-11-23 20:53:55 (0.00 B/s) – “123.1” saved [0]

          3、虛擬用戶(hù)設(shè)置:

          匿名用戶(hù)可以很好地保證服務(wù)器的安全性,但是對(duì)匿名用戶(hù)的權(quán)限管理不夠靈活。如果想對(duì)訪問(wèn)FTP的賬戶(hù)給予更多的權(quán)限,就可以使用本地賬戶(hù)來(lái)實(shí)現(xiàn)。但是本地賬戶(hù)默認(rèn)情況下是可以登錄Linux系統(tǒng)的,這樣對(duì)Linux系統(tǒng)來(lái)說(shuō)是一個(gè)安全隱患。使用虛擬用戶(hù)能在靈活地賦予FTP用戶(hù)權(quán)限的前提下,保證服務(wù)器乃至系統(tǒng)的安全。

          虛擬用戶(hù)并不是一個(gè)合法的Linux系統(tǒng)賬戶(hù),但是他可以來(lái)登錄系統(tǒng)上運(yùn)行的vsftpd服務(wù)器,當(dāng)用戶(hù)在連接上vsftpd服務(wù)器后,會(huì)被要求輸入用戶(hù)名和密碼。服務(wù)器在拿到這個(gè)用戶(hù)名和密碼后,會(huì)調(diào)用相應(yīng)的PAM認(rèn)證模塊對(duì),和系統(tǒng)中的FTP認(rèn)證文件進(jìn)行比較。如果該用戶(hù)名和密碼與FTP認(rèn)證文件中的某條記錄相符就通過(guò)認(rèn)證,該賬戶(hù)就被映射成一個(gè)Linux下的本地賬戶(hù),然后根據(jù)該本地賬戶(hù)對(duì)FTP資源進(jìn)行訪問(wèn),負(fù)責(zé)就斷開(kāi)該連接請(qǐng)求。

          3.1、建立虛擬用戶(hù)帳號(hào)口令庫(kù)文件

          [root@linux-node1 vsftpd]# vim vulist

          tom

          123

          [root@linux-node1 vsftpd]# yum install db4-utils -y

          [root@linux-node1 vsftpd]# db_load -T -t hash -f vulist vuser.db (轉(zhuǎn)化為伯克利格式)

          [root@linux-node1 vsftpd]# chmod 600 vuser.*

          3.2、建立虛擬用戶(hù)映射的系統(tǒng)用戶(hù)及根目錄

          [root@linux-node1 vsftpd]# useradd -d /var/vftp -s /sbin/nologin vuser

          [root@linux-node1 vsftpd]# chmod 755 /var/vftp

          3.3、建立虛擬用戶(hù)的PAM認(rèn)證文件

          [root@linux-node1 vsftpd]# vim /etc/pam.d/vupam

          auth required pam_userdb.so db=/etc/vsftpd/vuser

          account required pam_userdb.so db=/etc/vsftpd/vuser

          3.4、修改vsftpd.conf,開(kāi)啟虛擬用戶(hù)支持

          [root@linux-node1 vsftpd]# vim vsftpd.conf

          listen=YES

          listen_address=10.0.0.103

          listen_port=21

          connect_from_port_20=YES

          #pasv_min_port=2222

          #pasv_max_port=2225

          write_enable=YES

          xferlog_enable=YES

          xferlog_std_format=YES

          #pam_service_name=vsftpd

          userlist_enable=YES

          tcp_wrappers=YES

          #max_clients=0

          #max_per_ip=0

          anonymous_enable=NO

          anon_umask=022

          #anon_root=/var/ftp

          #anon_upload_enable=YES

          #anon_mkdir_write_enable=YES

          #anon_other_write_enable=YES

          #anon_max_rate=0

          local_enable=YES

          local_umask=022

          #local_root=/var/ftp

          #chroot_local_user=YES

          #local_max_rate=0

          guest_enable=YES

          virtual_use_local_privs=YES ##centos7中一定要有

          guest_username=vuser

          pam_service_name=vupam

          3.5、為不同虛擬用戶(hù)建立獨(dú)立的配置文件

          listen=YES

          listen_address=10.0.0.103

          listen_port=21

          connect_from_port_20=YES

          #pasv_min_port=2222

          #pasv_max_port=2225

          write_enable=YES

          xferlog_enable=YES

          xferlog_std_format=YES

          #pam_service_name=vsftpd

          userlist_enable=YES

          tcp_wrappers=YES

          #max_clients=0

          #max_per_ip=0

          anonymous_enable=NO

          anon_umask=022

          #anon_root=/var/ftp

          #anon_upload_enable=YES

          #anon_mkdir_write_enable=YES

          #anon_other_write_enable=YES

          #anon_max_rate=0

          local_enable=YES

          local_umask=022

          #local_root=/var/ftp

          #chroot_local_user=YES

          #local_max_rate=0

          guest_enable=YES

          virtual_use_local_privs=YES ##centos7中一定要有

          guest_username=vuser

          pam_service_name=vupam

          user_config_dir=/etc/vsftpd/vuconf

          [root@linux-node1 vsftpd]# mkdir /etc/vsftpd/vuconf

          [root@linux-node1 vsftpd]# vim /etc/vsftpd/vuconf/tom

          anon_upload_enable=YES

          anon_mkdir_write_enable=YES

          local_root=/var/ftp/pub/tom

          [root@linux-node1 vsftpd]# mkdir /var/ftp/pub/tom

          [root@linux-node1 vsftpd]# chmod 777 /var/ftp/pub/tom

          [root@linux-node1 vsftpd]# vim /var/ftp/pub/tom/23

          121234

          [root@linux-node1 vsftpd]# /etc/init.d/vsftpd restart

          Shutting down vsftpd: [ OK ]

          Starting vsftpd for vsftpd: [ OK ]

          [root@linux-node2 ~]# wget ftp://tom:123@10.0.0.103:21/23

          –2018-11-23 22:42:01– ftp://tom:password@10.0.0.103/23

          => “23”

          Connecting to 10.0.0.103:21… connected.

          Logging in as tom … Logged in!

          ==> SYST … done. ==> PWD … done.

          ==> TYPE I … done. ==> CWD not needed.

          ==> SIZE 23 … 5

          ==> PASV … done. ==> RETR 23 … done.

          Length: 5 (unauthoritative)

          100%[===================================>] 5 –.-K/s in 0s

          2018-11-23 22:42:01 (662 KB/s) – “23” saved [5]

          附一鍵安裝腳本:

          #!/bin/bash

          time=$(date +%F-%H:%M)

          Kernel=$(uname -r|awk -F. '{print $1}')

          menu(){

          cat <1.[anonymous install]

          2.[local_user(ftpuser) install]

          3.[vuser_user(tom and andy) install]

          4.[vuser_user(tom's home) install]

          5.[exit]

          EOF

          echo -e "