ftp

ftp

安裝包:vsftpd-2.2.2-11.el6.x86_64.rpm 服務(wù)端

lftp-4.0.9-1.el6.x86_64.rpm 客戶(hù)端

配置文件:/etc/vsftpd/vsftpd.conf

端口:20 21

服務(wù)數(shù)據(jù)目錄:/var/ftp

啟動(dòng)服務(wù):service vsftpd restart

客戶(hù)端:

[root@robin ~]# lftp 172.16.110.1 ls查看重新鏈接,可能是防火墻的原因

lftp 172.16.110.1:~> get biji.txt

指定目錄下載:

lftp 172.16.110.1:~> lcd /tmp/

lftp 172.16.110.1:/> get biji.txt

或者

lftp 172.16.110.1:/> get biji.txt -o /home/

或者

[root@robin ~]# wget ftp://172.16.110.1/biji.txt

下載目錄

lftp 172.16.110.1:/> mirror software/

上傳文件

lftp 172.16.110.1:/> put /root/install.log

上傳目錄

lftp 172.16.110.1:/pub> mirror -R /boot/

匿名模式

上傳文件 (還要對(duì)文件有寫(xiě)權(quán)限,777)

anonymous_enable=yes

          anon_upload_enable=yes 27 

          anon_mkdir_write_enable=yes 31 

          anon_umask=022 

上傳文件下載

anon_umask=022 (在添加此權(quán)限之前上傳的文件都不刻意再下載,只有開(kāi)啟次權(quán)限后再上傳的文件可以再下載)

限速

anon_max_rate=20000

修改匿名帳號(hào)登錄位置

方法:1.修改ftp用戶(hù)家目錄(家目錄權(quán)限必須是755)

ftp:x:14:50:FTP User:/tmp/ftp:/sbin/nologin

方法2:

[root@robin ftp]# vim /etc/vsftpd/vsftpd.conf

anon_root=/tmp/ftp

工作原理

主動(dòng)模式

C S

1024+n---------->21

1024+m- -------->21

1024+m<------- --20

主動(dòng)方式的FTP是這樣的:客戶(hù)端從一個(gè)任意的非特權(quán)端口N(N>1024)連接到FTP服務(wù)器的命令端口,也就是21端口。然后客戶(hù)端開(kāi)始監(jiān)聽(tīng)端口N+1,并發(fā)送FTP命令"port N+1"到FTP服務(wù)器。接著服務(wù)器會(huì)從它自己的數(shù)據(jù)端口(20)連接到客戶(hù)端指定的數(shù)據(jù)端口(N+1)。

針對(duì)FTP服務(wù)器前面的防火墻來(lái)說(shuō),必須允許以下通訊才能支持主動(dòng)方式FTP:

1. 任何端口到FTP服務(wù)器的21端口 (客戶(hù)端初始化的連接 S<-C)

2. FTP服務(wù)器的21端口到大于1024的端口(服務(wù)器響應(yīng)客戶(hù)端的控制端口 S->C)

3. FTP服務(wù)器的20端口到大于1024的端口(服務(wù)器端初始化數(shù)據(jù)連接到客戶(hù)端的數(shù)據(jù)端口 S->C)

4. 大于1024端口到FTP服務(wù)器的20端口(客戶(hù)端發(fā)送ACK響應(yīng)到服務(wù)器的數(shù)據(jù)端口 S<-C)

總結(jié):

命令連接:客戶(hù)端>1024端口-> 服務(wù)器21端口

數(shù)據(jù)連接:客戶(hù)端>1024端口<- 服務(wù)器20端口

端口模式

C S

1024+n--------->21

<-----------------1024+m

1024+x--------->1024+m

為了解決服務(wù)器發(fā)起到客戶(hù)的連接的問(wèn)題,人們開(kāi)發(fā)了一種不同的FTP連接方式。這就是所謂的被動(dòng)方式,或者叫做PASV,當(dāng)客戶(hù)端通知服務(wù)器它處于被動(dòng)模式時(shí)才啟用。

在被動(dòng)方式FTP中,命令連接和數(shù)據(jù)連接都由客戶(hù)端,這樣就可以解決從服務(wù)器到客戶(hù)端的數(shù)據(jù)端口的入方向連接被防火墻過(guò)濾掉的問(wèn)題。當(dāng)開(kāi)啟一個(gè) FTP連接時(shí),客戶(hù)端打開(kāi)兩個(gè)任意的非特權(quán)本地端口(N > 1024和N+1)。第一個(gè)端口連接服務(wù)器的21端口,但與主動(dòng)方式的FTP不同,客戶(hù)端不會(huì)提交PORT命令并允許服務(wù)器來(lái)回連它的數(shù)據(jù)端口,而是提交 PASV命令。這樣做的結(jié)果是服務(wù)器會(huì)開(kāi)啟一個(gè)任意的非特權(quán)端口(P > 1024),并發(fā)送PORT P命令給客戶(hù)端。然后客戶(hù)端發(fā)起從本地端口N+1到服務(wù)器的端口P的連接用來(lái)傳送數(shù)據(jù)。

對(duì)于服務(wù)器端的防火墻來(lái)說(shuō),必須允許下面的通訊才能支持被動(dòng)方式的FTP:

1. 從任何端口到服務(wù)器的21端口 (客戶(hù)端初始化的連接 S<-C)

2. 服務(wù)器的21端口到任何大于1024的端口 (服務(wù)器響應(yīng)到客戶(hù)端的控制端口的連接 S->C)

3. 從任何端口到服務(wù)器的大于1024端口 (入;客戶(hù)端初始化數(shù)據(jù)連接到服務(wù)器指定的任意端口 S<-C)

4. 服務(wù)器的大于1024端口到遠(yuǎn)程的大于1024的端口(出;服務(wù)器發(fā)送ACK響應(yīng)和數(shù)據(jù)到客戶(hù)端的數(shù)據(jù)端口 S->C)

總結(jié):

命令連接:客戶(hù)端>1024端口-> 服務(wù)器21端口

數(shù)據(jù)連接:客戶(hù)端>1024端口-> 服務(wù)器>1024端口

客戶(hù)端傳輸模式(客戶(hù)端開(kāi)啟被動(dòng)模式)

[root@robin tmp]# vim /etc/lftp.conf

set ftp:passive-mode off

服務(wù)器關(guān)閉被動(dòng)模式

[root@data1 ftp]# vim /etc/vsftpd/vsftpd.conf

pasv_enable=no

用戶(hù)驗(yàn)證登錄(基于系統(tǒng)用戶(hù))

[root@robin tmp]# useradd robin 此用戶(hù)是在服務(wù)端

[root@robin tmp]# passwd robin

[root@robin tmp]# lftp -u robin,123 172.16.110.1 默認(rèn)進(jìn)入用戶(hù)的家目錄

ftp用戶(hù)將shell設(shè)置為:/sbin/nologin

當(dāng)然你要保證自己能讀寫(xiě)自己的目錄,就要在配置文件vsftpd.conf里設(shè)置一下就可以讀寫(xiě)了.

local_enable=yes

write_enable=yes

local_umask=022

限制本地用戶(hù)切換目錄

不限制此功能可以隨意切換目錄 ls,并在有權(quán)限的目錄下上傳文件(tmp)

方法1:

[root@robin tmp]# vim /etc/vsftpd/vsftpd.conf

chroot_local_user=YES 限制所有用戶(hù)切換目錄

設(shè)置本地用戶(hù)登錄目錄(不要求目錄權(quán)限,如果上傳就需要寫(xiě)權(quán)限)

local_root=/tmp/manager

限制本地用戶(hù)速度

local_max_rate=200000

限制用戶(hù)使用ftp

方法1:

將不允許登錄的用戶(hù)寫(xiě)入該文件:/etc/vsftpd/ftpusers (執(zhí)行命令時(shí),顯示連接)

方法2:黑白名單

userlist_enable=YES

userlist_deny=YES

名單文件:/etc/vsftpd/user_list 黑名單

userlist_enable=YES

userlist_deny=NO

名單文件:/etc/vsftpd/user_list 白名單(名單以外的用戶(hù)不可操作)

虛擬用戶(hù)

1.建立用戶(hù)數(shù)據(jù)庫(kù)

cat /etc/vsftpd/ftpuser.txt

test111 # 賬戶(hù)

pass111 # 密碼

test222

pass222

2.轉(zhuǎn)換文本文件為數(shù)據(jù)庫(kù)文件

[root@robin ~]# rpm -qf $(which db_load)

db4-utils-4.7.25-17.el6.x86_64

[root@robin ~]# db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db

[root@robin ~]# chmod 600 /etc/vsftpd/vsftpd_login.db

3.更改驗(yàn)證方式

[root@robin ~]# mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

[root@robin ~]# vim /etc/pam.d/vsftpd 新建一個(gè)虛擬用戶(hù)的pam文件

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

4.建立系統(tǒng)帳號(hào)做為虛擬帳號(hào)的映射帳號(hào)

[root@robin ~]# useradd -d /home/vsftp virtual

[root@robin ~]# chmod 755 /home/vsftp

5.修改配置文件啟用虛擬用戶(hù)

[root@robin ~]# vim /etc/vsftpd/vsftpd.conf

guest_enable=YES # 開(kāi)啟虛擬用戶(hù)功能

guest_username=virtual # 指定虛擬用戶(hù)使用的系統(tǒng)用戶(hù)

權(quán)限:

virtual_use_local_privs=YES 該選項(xiàng)為YES虛擬帳號(hào)權(quán)限和本地用戶(hù)相同

virtual_use_local_privs=NO 該選項(xiàng)為NO虛擬帳號(hào)權(quán)限和匿名用戶(hù)相同

給每個(gè)用戶(hù)設(shè)置權(quán)限

[root@robin ~]# vim /etc/vsftpd/vsftpd.conf

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vsftp_user_conf

[root@robin ~]# mkdir /etc/vsftpd/vsftp_user_conf

[root@robin ~]# touch /etc/vsftpd/vsftp_user_conf/test111

[root@robin ~]# cat /etc/vsftpd/vsftp_user_conf/test111

write_enable=NO

local_max_rate=20000000

[root@robin ~]# touch /etc/vsftpd/vsftp_user_conf/test222

[root@robin ~]# cat /etc/vsftpd/vsftp_user_conf/test222

write_enable=YES

local_max_rate=1000000

登錄后目錄都是 /home/vsftp

可以在/etc/vsftpd/vsftp_user_conf/test111 中添加

local_root=/home/vsftp/test111

添加vsftp 用戶(hù)的步驟

1.在/etc/vsftpd/ftpuser.txt中添加用戶(hù)和密碼

2.運(yùn)行db_load命令將用戶(hù)和密碼加入數(shù)據(jù)庫(kù)

3.在/home/vsftp 中新建文件夾與用戶(hù)同名

4.在vsftpd_user_conf 中新建和用戶(hù)同名的文件并加入local_root=/home/vsftp/name

=========================

7. 實(shí)現(xiàn)虛擬路徑

        將某個(gè)目錄掛載到FTP服務(wù)器下供用戶(hù)使用,這就叫做虛擬路徑. 

        比如將gxl用戶(hù)的目錄掛載到FTP服務(wù)器中,供FTP服務(wù)器的用戶(hù)使用,使用如下命令即可: 

    [[root@localhost](mailto:root@localhost) opt]#     mount --bind /home/gxl /var/ftp/pub #使用掛載命令 

    [[root@localhost](mailto:root@localhost) opt]#     ls /var/ftp/pub 

                LumaQQ Screenshot.png 桌面 

8. 打開(kāi)vsFTPd的日志功能

        添加下面一行到vsftpd.conf文件中,一般情況下該文件中有這一行,只要把前面的注釋符號(hào)#去掉即可,沒(méi)有的話(huà)就添加,或者修改: 

            xferlog_file=/var/log/vsftpd.log 

9. 限制鏈接數(shù),以及每個(gè)IP最大的鏈接數(shù)

        修改配置文件中,例如vsftp最大支持鏈接數(shù)100個(gè),每個(gè)IP能支持5個(gè)鏈接: 

            max_client=100 

            max_per=5 

10. 限制傳輸速度

        修改配置文件中,例如讓匿名用戶(hù)和vsftd上的用戶(hù)(即虛擬用戶(hù))都以80KB=1024*80=81920的速度下載 

            anon_max_rate=81920 

            local_max_rate=81920 

11. 將用戶(hù)(一般指虛擬用戶(hù))限制在自家目錄

        修改配置文件中,這樣用戶(hù)就只能訪(fǎng)問(wèn)自己家的目錄了: 

            chroot_local_user=yes 

        如果只想某些用戶(hù)僅能訪(fǎng)問(wèn)自己的目錄,其它用戶(hù)不做這個(gè)限制,那么就需要在chroot_list文件(此文件一般是在/etc/vsftpd/中)中添加此用戶(hù). 

        編輯此文件,比如將test用戶(hù)添加到此文件中,那么將其寫(xiě)入即可.一般的話(huà),一個(gè)用戶(hù)占一行. 

[root@localhost vsftpd]# cat chroot_list

                    test 

12. 綁定某個(gè)IP到vsFTPd

        有時(shí)候要限制某些IP訪(fǎng)問(wèn)服務(wù)器,只允許某些IP訪(fǎng)問(wèn),例如只允許192.168.0.33訪(fǎng)問(wèn)這個(gè)FTP,同樣修改配置文件: 

            listen_address=192.168.0.33 

配置 vsftpd.conf

anonymous_enable=NO #禁止匿名

local_enable=YES #允許本地登錄

write_enable=YES #允許寫(xiě),如需上傳,則必須

local_umask=027 #將上傳文件的權(quán)限設(shè)置為:777-local_umask

anon_upload_enable=YES #允許虛擬用戶(hù)和匿名用戶(hù)上傳

anon_other_write_enable=YES #允許虛擬用戶(hù)和匿名用戶(hù)修改文件名和刪除文件

dirmessage_enable=YES

xferlog_enable=YES #打開(kāi)日志記錄

connect_from_port_20=YES

xferlog_file=/var/log/vsftpd.log #日志存放位置

xferlog_std_format=YES #標(biāo)準(zhǔn)日志格式

idle_session_timeout=600 #空閑連接超時(shí)

data_connection_timeout=120

ftpd_banner=Welcome to ChinaRise FTP service #歡迎信息

guest_enable=yes #允許虛擬用戶(hù)

guest_username=vsftpdguest #虛擬用戶(hù)使用的系統(tǒng)賬號(hào)

virtual_use_local_privs=YES #虛擬用戶(hù)擁有本地系統(tǒng)權(quán)限

chroot_local_user=NO

chroot_list_enable=YES

        #以上兩行將虛擬用戶(hù)限制在其目錄下,不能訪(fǎng)問(wèn)其他目錄,或者直接用 

chroot_local_user=YES

listen=yes #監(jiān)聽(tīng)/被動(dòng)模式

listen_port=21 #監(jiān)聽(tīng)端口

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #虛擬用戶(hù)名單保存在文件/etc/vsftpd/vsftpd.chroot_list 中

user_config_dir=/etc/vsftpd/vsftpd_user_conf #每個(gè)虛擬用戶(hù)名的更加詳細(xì)的培植保存在/etc/vsftpd/vsftpd_user_conf 中

                                                                                        虛擬用戶(hù)其他設(shè)置 

在/etc/vsftpd/vsftpd.chroot_list 文件中寫(xiě)入允許登陸的虛擬用戶(hù)名稱(chēng),每行一個(gè)

在/etc/vsftpd/vsftpd_user_conf 文件夾中創(chuàng)建一個(gè)以虛擬用戶(hù)用戶(hù)名命名的文件,

寫(xiě)入:local_root = /var/FTP/子目錄名

然后在/var/FTP下創(chuàng)建一個(gè)對(duì)應(yīng)的目錄即可

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ftp 文件傳輸協(xié)議 跨平臺(tái) 上傳下載文件 vsftpd 工具:非常安全的文件傳輸協(xié)議;默認(rèn)的命令端口21號(hào),數(shù)據(jù)...
    柒夏錦閱讀 4,226評(píng)論 1 9
  • 圖片更清晰,文字在最下面 FTP是TCP/IP的一種應(yīng)用,使用TCP而不是UDP,所以是可靠的,面向連接的。 FT...
    停下浮躁的心閱讀 1,812評(píng)論 0 4
  • FTP服務(wù)概述 簡(jiǎn)單FTP構(gòu)建及訪(fǎng)問(wèn) VSFTP服務(wù)基礎(chǔ) 用戶(hù)禁錮、黑白名單 FTP并發(fā)及帶寬限制 一、FTP服務(wù)...
    紫_軒閱讀 8,029評(píng)論 3 25
  • 1.Vsftpd文件共享 1.1簡(jiǎn)介 Vsftpd是“very secure FTP daemon”的縮寫(xiě),是一款...
    SkTj閱讀 1,977評(píng)論 0 3
  • 1 概述 工作中,需要搭建ftp服務(wù)器來(lái)實(shí)現(xiàn)資源的共享。本文將通過(guò)腳本實(shí)現(xiàn)自動(dòng)化安裝ftp服務(wù)器,并進(jìn)行相關(guān)配置,...
    ghbsunny閱讀 3,275評(píng)論 0 2

友情鏈接更多精彩內(nèi)容