當前位置:首頁 » 文件傳輸 » linuxftp開發
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

linuxftp開發

發布時間: 2022-04-15 05:03:36

1. Linux裡面FTP主被動模式區別是什麼

題主你好,

首先要說的是FTP的通信是由兩部分組成的: 發送命令 + 傳輸數據.

換種說法就是: 發送命令 與 傳輸數據 是走的兩條道(不同的tcp連接).

發送命令 這條道方向是固定的, 總是由客戶端向服務端發起請求把這條道鋪起來.

傳輸數據 這條道方向就不是固定的了, 可能與 發送命令 一樣, 也是由客戶端向服務端發起請求, 還可能是反向的,即由服務端向客戶端發起請求來鋪起傳輸數據的這條道.

而題主的問題里所說的FTP主動被模式其實指的就是 傳輸數據 這條道的鋪設到底是 誰向誰發起請求? 這里的主被動是根據 服務端 來說的, 即 服務端主動向客戶端發起的就是所謂的主動模式, 反之, 客戶端向服務端發起的(服務端連接),即是被動模式

最後再說下區別: 一開始的ftp只有主動模式,即服務端主動向客戶端發請求建立連接,然後利用建立的這個連接進行數據傳輸. 但後來客戶端這邊的防火牆很多時候為了安全考慮只相信自己向外發送的請求, 不相信外面連進來的請求,會把從外向內的請求給截斷,說白了就是數據傳輸這條道沒建成, 數據肯定就傳輸不了的. 所以後來又開發了被動模式,讓客戶端主動向服務端發請求建立連接, 這樣防火牆一看是從自己家主動發出去的,就不會攔截,這樣路鋪好了, 數據自然能成功傳輸了.

寫在最後: 希望可以幫到題主, 歡迎追問.

2. 如何在linux系統下的搭建 FTP伺服器

FTP伺服器配置VSFTP主配置文件路徑:/etc/vsftpd/vsftpd.conf,重要參數:
anonymous_enable=yes/no 是否允許匿名用戶訪問
anon_upload_enable=yes/no 是否允許匿名用戶上傳文件
anon_mkdir_write_enable=yes/no 是否允許匿名用戶創建目錄
anon_other_write_enable=yes/no 匿名用戶和虛擬用戶是否擁有刪除許可權
local_enable=yes/no 是否允許本地用戶登陸
write_enable=yes/no 設置全局是否可寫
anon_root=/var 指定匿名用戶目錄
chroot_local_user=yes 鎖定所有用戶到用戶主目錄
chroot_list_enable=yes/no 鎖定列表中的用戶到主目錄,需要配合下一參數使用
chroot_list_file=/etc/vsftpd/chroot_list 指定存儲被鎖定用戶的列表文件位置
chown_uploads=yes/no 匿名用戶上傳所有者指定功能,需要與下一參數配合使用
chown_username=用戶名 指定匿名用戶上傳文件的所有者
max_clients=300 最大客戶端連接數為300
anon_max_rate=30000 匿名用戶和虛擬用戶限速為30K/S
local_max_rate=30000 本地用戶限速為30K/S
max_per_ip=10 每個IP最大連接數
listen_port=22 更改監聽埠

實現如下要求:允許匿名用戶登陸,匿名用戶限速為60K/S,只允許下載。監聽埠為22,最大連接數為10。新建用戶ftp1,限速為200K/S,允許上傳下載刪除新建文件夾。進入目錄/etc/vsftpd,用vi編輯器打開vsftpd.conf主配置文件:

直接添加以下選項: [root@LidadeFedora vsftpd]# service vsftpd restart

添加用戶ftp1,設置登錄腳本為 /sbin/nologin:

vsftp默認目錄為:/var/ftp,為方便測試,在/var/ftp下新建一個文件"testLocal",在"/var/ftp/pub"新建一個文件"testAnon"。

由於使用root用戶新建文件,文件的所有者為root,所以需要把文件的許可權設置為644其他用戶才能讀取該文件

3. 如何搭建FTP伺服器在linux 中《一》

代碼:

# cd /home/xuchen
# tar xzvf vsftpd-2.0.3.tar.gz //解壓縮程序
# cd vsftpd-2.0.3

三種方式的實現
1、匿名用戶形式實現
# vi builddefs.h \\編輯builddefs.h 文件,文件內容如下:

#ifndef VSF_BUILDDEFS_H

#define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL

#endif /* VSF_BUILDDEFS_H */
將以上undef的都改為define,支持tcp_wrappers,支持PAM認證方式,支持SSL

# make //直接在vsftpd-2.0.3里用make編譯
# ls -l vsftpd
-rwxr-xr-x 1 root root 86088 Jun 6 12:29 vsftpd //可執行程序已被編譯成功

創建必要的帳號,目錄:
# useradd nobody //可能你的系統已經存在此帳號,那就不用建立
# mkdir /usr/share/empty //可能你的系統已經存在此目錄,那就不用建立
# mkdir /var/ftp //可能你的系統已經存在此目錄,那就不用建立
# useradd -d /var/ftp ftp //可能你的系統已經存在此帳號,那就不用建立
# chown root:root /var/ftp
# chmod og-w /var/ftp
請記住,如果你不想讓用戶在本地登陸,那麼你需要把他的登陸SHELL設置成/sbin/nologin,比如以上的nobody和ftp我就設置成/sbin/nologin

安裝vsftp配置文件,可執行程序,man等:
# install -m 755 vsftpd /usr/local/sbin/vsftpd-ano
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd-ano.conf
這樣就安裝完成了,那麼我們開始進行簡單的配置

# vi /etc/vsftpd-ano.conf ,將如下三行加入文件
listen=YES
listen_port=21
tcp_wrappers=YES
anon_root=/var/ftp //設置匿名用戶本地目錄,和ftp用戶目錄必須相同
listen=YES的意思是使用standalone啟動vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推薦使用standalone方式)
# /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf & //以後台方式啟動vsftpd
注意:每行的值都不要有空格,否則啟動時會出現錯誤,舉個例子,假如我在listen=YES後多了個空格,那我啟動時就出現如下錯誤:
500 OOPS: bad bool value in config file for: listen

測試搭建好的匿名用戶方式
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> quit
221 Goodbye.
#
OK,已經完成了,very nice.

高級配置
細心的朋友可能已經看出來我們只在默認配置文件增加了四行,就實現了FTP連接(也證明了vsftpd的易用性),那麼讓我們傳個文件吧,呀!!傳輸失敗了(見圖1)
為什麼呢?因為 vsftpd 是為了安全需要,/var/ftp目錄不能把所有的許可權打開,所以我們這時要建一個目錄pub,當然也還是需要繼續修改配置文件的。
# mkdir /var/ftp/pub
# chmod -R 777 /var/ftp/pub

為了測試方便,我們先建立一個名為kill-ano的腳本,是為了殺掉FTP程序的
#!/bin/bash
$1}'`   a=`/bin/ps -A | grep vsftpd-ano | awk '{print
$a   kill -9

那麼現在大家看看我的匿名伺服器配置文件吧
anonymous_enable=YES //允許匿名訪問,這是匿名伺服器必須的
write_enable=YES //全局配置可寫
no_anon_password=YES //匿名用戶login時不詢問口令
anon_umask=077 //匿名用戶上傳的文件許可權是-rw----
anon_upload_enable=YES //允許匿名用戶上傳文件
anon_mkdir_write_enable=YES //允許匿名用戶建立目錄
anon_other_write_enable=YES //允許匿名用戶具有建立目錄,上傳之外的許可權,如重命名,刪除
dirmessage_enable=YES //當使用者轉換目錄,則會顯示該目錄下的.message信息
xferlog_enable=YES //記錄使用者所有上傳下載信息
xferlog_file=/var/log/vsftpd.log //將上傳下載信息記錄到/var/log/vsftpd.log中
xferlog_std_format=YES //日誌使用標准xferlog格式
idle_session_timeout=600 //客戶端超過600S沒有動作就自動被伺服器踢出
data_connection_timeout=120 //數據傳輸時超過120S沒有動作被伺服器踢出
chown_uploads=YES
chown_username=daemon //上傳文件的屬主
ftpd_banner=Welcome to d-1701.com FTP service. //FTP歡迎信息
anon_max_rate=80000 //這是匿名用戶的下載速度為80KBytes/s
check_shell=NO //不檢測SHELL

現在再測試,先kill掉再啟動FTP程序
# ./kill-ano
# /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf &
上傳一個文件測試一下,怎麼樣?OK了吧,下載剛上傳的那個文件,恩?不行,提示
550 Failed to open file.
傳輸已失敗!
傳輸隊列已完成
1 個文件傳輸失敗

沒有關系,你記得咱們設置了anon_umask=077了嗎?所以你下載不了,如果你到伺服器上touch 一個文件(644),測試一下,是可以被下載下來的,好了,匿名伺服器就說到這里了。

2、本地用戶形式實現
# cd /home/xuchen/vsftpd-2.0.3 //進入vsftpd-2.0.3的源代碼目錄
# make clean //清除編譯環境
# vi builddefs.h \\繼續編輯builddefs.h 文件,文件內容如下:
#ifndef VSF_BUILDDEFS_H

#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL

#endif /* VSF_BUILDDEFS_H */
將以上define VSF_BUILD_PAM行的define改為undef,支持tcp_wrappers,不支持PAM認證方式,支持SSL,記住啊,如果支持了PAM認證方式,你本地用戶是不能登陸的。

# make //直接在vsftpd-2.0.3里用make編譯
# ls -l vsftpd
-rwxr-xr-x 1 root root 84712 Jun 6 18:56 vsftpd //可執行程序已被編譯成功

創建必要的帳號,目錄:
# useradd nobody //可能你的系統已經存在此帳號,那就不用建立
# mkdir /usr/share/empty //可能你的系統已經存在此目錄,那就不用建立
# mkdir /var/ftp //可能你的系統已經存在此目錄,那就不用建立
# useradd -d /var/ftp ftp //可能你的系統已經存在此帳號,那就不用建立
# chown root:root /var/ftp
# chmod og-w /var/ftp
請記住,如果你不想讓用戶在本地登陸,那麼你需要把他的登陸SHELL設置成/sbin/nologin,比如以上的nobody和ftp我就設置成/sbin/nologin

安裝vsftp配置文件,可執行程序,man等:
# install -m 755 vsftpd /usr/local/sbin/vsftpd-loc
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd-loc.conf
這樣就安裝完成了,那麼我們開始進行簡單的配置

# vi /etc/vsftpd-loc.conf ,將如下三行加入文件
listen=YES
listen_port=21
tcp_wrappers=YES //支持tcp_wrappers,限制訪問(/etc/hosts.allow,/etc/hosts.deny)
listen=YES的意思是使用standalone啟動vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推薦使用standalone方式),注意事項請參看匿名用戶的配置。
anonymous_enable=NO
local_enable=YES //這兩項配置說不允許匿名用戶登陸,允許本地用戶登陸
# /usr/local/sbin/vsftpd-loc /etc/vsftpd-loc.conf & //以後台方式啟動vsftpd

測試搭建好的匿名用戶方式,先測試root用戶吧 :)
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/root"
ftp> quit
221 Goodbye.
我們看到root用戶可以登陸到ftp,他的登陸目錄就是自己的主目錄。
再測試一個系統用戶,那我們先建立一個用戶名叫xuchen的
# useradd xuchen
# passwd xuchen
Changing password for user xuchen.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
建立好了,讓我們開始測試吧!!
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): xuchen
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/xuchen"
ftp> quit
221 Goodbye.
我們看到xuchen用戶可以登陸到ftp,他的登陸目錄也是自己的主目錄。哈哈,又完成了!
高級配置
細心的朋友可能已經看出來如果我們不支持PAM認證方式,那麼本地用戶就可以登陸,而默認編譯的vsftpd支持PAM認證方式,所以是不支持本地用戶登陸的。恩,從這點說,這也是vsftp安全的一個表現----禁止本地用戶登陸。
我們登陸後進行測試,傳一個文件上去,得,失敗了,那下載個文件下來吧,恩,這是成功的(見圖2),而且我們發現我們可以進入到系統根目錄(見圖3),這樣很危險。

那麼改配置文件吧,為了測試方便,我們先建立一個名為kill-loc的腳本,也是為了殺掉FTP程序的
#!/bin/bash
$1}'`   a=`/bin/ps -A | grep vsftpd-loc | awk '{print
$a   kill -9

現在提供我的本地用戶驗證伺服器配置文件吧(在匿名里寫過的注釋我就不在這里寫了)
listen=YES
listen_port=21
tcp_wrappers=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022 //本地用戶文件上傳後的許可權是-rw-r-r
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
connect_from_port_20=YES
chroot_local_user=YES //限制用戶在自己的主目錄
#local_root=/ftp //你可以指定所有本地用戶登陸後的目錄,如果不設置此項,用戶都會登陸於自己的主目錄,就跟咱們前面測試的結果是一樣的
local_max_rate=500000 //本地用戶的下載速度為500KBytes/s
idle_session_timeout=600
data_connection_timeout=120
nopriv_user= nobody //設定服務執行者為nobody,vsftpd推薦使用一個許可權很低的用戶,最好是沒有家目錄(/dev/null),沒有登陸shell(/sbin/nologin),系統會更安全
ftpd_banner=Welcome to d-1701.com FTP service.
check_shell=NO

userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.denyuser
以上三條設定不允許登陸的用戶,用戶列表存放在/etc/vsftpd.denyuser中,一行一個帳號如果我把xuchen這個用戶加到vsftpd.denyuser里,那麼登陸時會出現如下錯誤:
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 Welcome to d-1701.com FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): xuchen
530 Permission denied.
Login failed.
呵呵,有意思吧,自己測試吧,本地用戶登陸方式就介紹到這里吧!

3、虛擬用戶形式實現(db及mysql形式)
# cd /home/xuchen/vsftpd-2.0.3 //進入vsftpd-2.0.3的源代碼目錄
# make clean //清除編譯環境
# vi builddefs.h \\繼續編輯builddefs.h 文件,文件內容如下:
#ifndef VSF_BUILDDEFS_H

#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#undef VSF_BUILD_PAM
#define VSF_BUILD_SSL

#endif /* VSF_BUILDDEFS_H */
將以上define VSF_BUILD_PAM行的undef改為define,支持tcp_wrappers,支持PAM認證方式,支持SSL,和匿名用戶形式是一樣的。

# make //直接在vsftpd-2.0.3里用make編譯
# ls -l vsftpd
-rwxr-xr-x 1 root root 86088 Jun 6 22:26 vsftpd //可執行程序已被編譯成功

創建必要的帳號,目錄:
# useradd nobody //可能你的系統已經存在此帳號,那就不用建立
# mkdir /usr/share/empty //可能你的系統已經存在此目錄,那就不用建立
# mkdir /var/ftp //可能你的系統已經存在此目錄,那就不用建立
# useradd -d /var/ftp ftp //可能你的系統已經存在此帳號,那就不用建立
# chown root:root /var/ftp
# chmod og-w /var/ftp
請記住,如果你不想讓用戶在本地登陸,那麼你需要把他的登陸SHELL設置成/sbin/nologin,比如以上的nobody和ftp我就設置成/sbin/nologin

4. 如何在linux下開啟FTP服務

Linux下ftp服務可以通過搭建vsftpd服務來實現,以CentOS為例,首先查看系統中是否安裝了vsftpd,可以通過執行命令rpm -qa |grepvsftpd來查看是否安裝相應的包,如果沒有安裝那麼可以執行yum-yinstallvsftpd來安裝,安裝之後首先創建ftp用戶,比如ftp_test,命令如下:

useradd-s/sbin/nologin-d/home/ftp_testftp_test

目錄盡量不要選擇根目錄下,這里是/home/ftp_test,並且ftp_test這個目錄不要手動創建,否則許可權會有問題,執行命令的時候會自動創建,

現在可以看到上面的路徑是一個/,對於ftp用戶來說也就是根目錄了,只能在這個目錄下操作,而無法跳出這個目錄

以上就是vsftpd服務的基本搭建過程,實際使用時可以分配多個用戶

5. 怎麼用linux搭建ftp服務

一般來講,人們將電腦聯網的首要需求就是獲取資料,而文件傳輸是其中非常重要的方式之一,21世紀的互聯網是由幾千萬台個人電腦、工作站、小型機、大型機等等不同型號、架構的物理設備共同組成的,即便是個人電腦上也可能會裝有諸如Linux、Windows、UNIX、DOS等等不同的操作系統,所以為了能夠在如此復雜多樣的操作設備之間解決文件傳輸問題,於是便有了統一的FTP文件傳輸協議(File Transfer Protocol),這是一種能夠讓使用者在互聯網中上傳、下載文件的傳輸協議。很多同學在大學期間只知道FTP協議使用了21埠號,但實際上FTP文件傳輸協議默認佔用了20、21兩個埠號,20埠號用於進行數據傳輸,21埠號用於接受客戶端執行的相關FTP命令與參數,FTP服務端普遍更多的應用於內網中,具有易於搭建、方便管理的特點,並且可以藉助FTP客戶端工具還可以輕松實現文件的多點下載和斷點續傳技術

FTP伺服器就是支持FTP傳輸協議的主機,與大多數服務程序一樣,要想完成文件傳輸則需要FTP服務端和客戶端的配合才行,用戶可以通過客戶端向FTP服務端發送指令參數,FTP服務端從而會依據接受到的命令作出相應動作,比如顯示執行結果或把文件傳輸到客戶端主機上,FTP協議的傳輸有兩種不同的模式,主動模式是讓FTP服務端主動向客戶端發起鏈接請求,而被動模式則是讓FTP服務端等待客戶端的鏈接請求,默認情況下被動模式,因為咱們在第八章的防火牆課程中學習過,防火牆一般更多的是過濾從外網到內網的流量數據,因此有些時候必須改成主動模式才可以傳輸。

Vsftpd是一款運行在Linux操作系統上面的FTP服務端程序,Very SecureFTPDaemon顧名思義就是非常安全的FTP傳輸程序,vsftpd服務程序不僅完全開源且免費,而且具有很高的安全性、傳輸速率、支持虛擬用戶驗證功能等等其他FTP服務端程序所不具備的特點。配置妥當yum軟體倉庫後就可以來安裝vsftpd服務程序了:

#www.linuxprobe.com
[root@linuxprobe~]#yuminstallvsftpd-y
Loadedplugins:langpacks,proct-id,subscription-manager
………………省略部分輸出信息………………
================================================================================

================================================================================
Installing:
vsftpdx86_643.0.2-9.el7rhel166k
TransactionSummary
================================================================================
Install1Package
Totaldownloadsize:166k
Installedsize:343k
Isthisok[y/d/N]:y
Downloadingpackages:
Runningtransactioncheck
Runningtransactiontest
Transactiontestsucceeded
Runningtransaction
Installing:vsftpd-3.0.2-9.el7.x86_641/1
Verifying:vsftpd-3.0.2-9.el7.x86_641/1
Installed:
vsftpd.x86_640:3.0.2-9.el7
Complete!

iptables防火牆管理工具中默認禁止了ftp傳輸協議的埠號,因此咱們在正式配置vsftpd服務程序前還需要清空一下iptables防火牆的默認策略,並將當前已經被清理的防火牆策略狀態保存下來:

[root@linuxprobe~]#iptables-F
[root@linuxprobe~]#serviceiptablessave
iptables:Savingfirewallrulesto/etc/sysconfig/iptables:[OK]

vsftpd服務程序的主配置文件(/etc/vsftpd/vsftpd.conf)中參數總共有123行左右,但大多數都是以#(井號)開頭的注釋信息,咱們可以用grep命令的-v參數來過濾並反選出沒有包含#(井號)的參數行,也就是把所有的注釋信息都過濾掉,這樣再通過輸出重定向符寫會到原始的主配置文件名稱中即可:

[root@linuxprobe~]#mv/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.conf_bak
[root@linuxprobe~]#grep-v"#"/etc/vsftpd/vsftpd.conf_bak>/etc/vsftpd/vsftpd.conf
[root@linuxprobe~]#cat/etc/vsftpd/vsftpd.conf
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

劉遄老師給同學們整理出了vsftpd服務程序的主配置文件中常用的參數及作用介紹,您現在只要簡單的瀏覽一下,接下來的實驗中如果不明白再過來查閱就可以。

6. 如何在linux下搭建ftp服務

在LINXU平台上使用的FTP軟體有Wu-ftpd、Proftpd和vsftpd等。Wu-ftpd的歷史悠久,是最流行的FTP伺服器程序,穩定、出色,但發布較早,安全不及Proftpd及vsftpd。Proftpd在Wu-ftpd之後開發,安全性及穩定性有所提高。而vsftpd則是在Proftpd之後開發的,意為Very Sucure,吸取了Wu-ftpd和Proftpd的優點,安全性、速度、穩定性都有很大提高。

RHEL4(AS)中vsftpd的RPM軟體包在第1張光碟中,名為vsftpd-2.0.1-5.i386.rpm。默認情況下沒有安裝。Vsftpd的主配置文件是/etc/vsftpd.conf。未修改的主配置文件去掉注釋後如下(「;」後為解釋):
anonymous_enable=YES ;是否允許匿名訪問
local_enable=YES ;是否允許本地用戶登錄
write_enable=YES ;是否允許本地用戶寫入
local_umask=022 ;生向掩碼(文件生成掩碼),跟許可權有關,我記不住了,有興趣的朋友可以去查查,知道的朋友也請告訴我一下
dirmessage_enable=YES ;切換到FTP中的某目錄時,是否顯示該目錄下的隱含文件「.message」
xferlog_enable=YES ;是否啟用啟用上傳和下載日誌
connect_from_port_20=YES ;是否啟用FTP數據埠的連接請求
xferlog_std_format=YES ;是否讓FTP使用ftpd xferlog日誌格式
pam_service_name=vsftpd ;設置PAM認證服務的配置文件,位於/etc/pam.d目錄下
userlist_enable=YES ;需與userlist_file配合使用,稍後介紹
listen=YES ;是否處於獨立啟動模式
tcp_wrappers=YES ;為YES時,以tcp_wrappers作為主機訪問控制方式
(去掉後,vsftpd的配置文件就這么一點^_^。)

/etc/vsftpd.ftpusers保存著不允許進行FTP登錄的用戶帳戶,通常是許可權很高的用戶,以提高FTP的安全。
至於/etc/vsftpd.user_list文件,裡面有說明:
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
…………(後略)
前面說的userlist_enalbe就跟這有關(重點是第二、三行)

另外,/vsr/ftp是匿名用戶的宿主目錄.

配置vsftpd的虛擬用戶:
1. 建立虛擬用戶口令庫文件(奇數行為用戶名,偶數行為密碼):
[[email protected]]cat vsftpd
abc
abc12321cba
efg
vsftpd.conf

2. 生成認證文件(db_load生成認證文件,「-f」用於指明虛擬用戶的口令庫文件,即:vsftpd.操作中,口令庫文件名可隨便取.「-t hash」指加密方式)

db_load -T -t hash -f vsftpd /etc/vsftpd/vsftpd_login.db
3.設置許可權,以提高安全:
chmod 600 /etc/vsftpd/vsftpd_login.db
4. 建立虛擬用戶的PAM文件:
cat /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
5.建立虛擬用戶的目錄,並設置相應許可權:
useradd -d /home/vsftpd virtual
chmod 700 /home/vsftpd/
6. 編輯vsftpd的配置文件:
vi /etc/vsftpd/vsftpd.conf
guest_enable=yes
guest_username=virtual
pam_service_name=vsftpd.vu
7. 對虛擬用戶設置不同許可權:
vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd_user_conf ;設置主配置文件
(:wq #保存退出)
mkdri /etc/vsftpd_user_conf
vi /etc/vsftpd_user_conf/abc ;為虛擬用戶配置許可權
anon_world_readable_only=no ;用戶可以瀏覽目錄並下載文件
anon_upload_enable=yes ;用戶可以上傳文件
anon_mkdir_write_enable=yes ;用戶可以添加和刪除目錄
anon_other_write_enable=yes ;用戶可以進行其它操作,如改名、刪除文件等。
(:wq)
service vsftpd restart
如果只想讓用戶下載的話,則配置為:
anon_world_readable_only=no
好了,自個兒看效果吧!!!
常見問題:
1.無法匿名訪問?
可能是vsftpd.conf中的anonyoums_enable出的錯,或者是你根本就沒連接到伺服器,也有可能是伺服器的iptables出的問題(過濾掉了),這種情況下一般與selinux無關。還有就是服務未運行。
2.創建的虛擬用戶無法訪問vsftpd?
原因或許是在創建虛擬用戶的時候出的錯,如果無法使用虛擬用戶訪問vsftpd的時候,建議先檢查在創建虛擬用戶時,打錯什麼字沒有,如果還是沒有檢查出什麼問題來的話,建議你直接推倒重做。還是一點差點忘記說了,就是在創建虛擬用戶的時候,盡量將虛擬用戶的密碼設長一點、復雜一點,我在測試的時候,就是因為密碼太短而幾次沒有成功。
3.在cmd下用虛擬用戶登錄vsftpd時,出現「200 PORT command successful. Consider using PASV.」的字樣是怎麼回事啊?
你所訪問的電腦上的防火牆在做怪!!!我就上過這個當!!!
4.其它問題?
一般情況下,vsftpd出現問題大多數都是因為配置文件出錯的,如果想要測試的話,建議在命令行了進行測試,當vsftpd出現問題時,它會在訪問端的界面上顯示原因。另外不成功的原因是因為伺服器上的防火牆沒有配置好。

7. 如何搭建ftp伺服器 linux

Red Hat Linux下架設FTP伺服器

FTP,即File Transfer Protocol,文件傳輸協議。它是目前Internet上最流行的數據傳送方法之一。利用FTP協議,我們可以在FTP伺服器和FTP客戶端之間進行雙向數據傳輸,既可以把數據從FTP伺服器上下載到本地客戶端,又可以從客戶端上傳數據到遠程FTP伺服器。

1.安裝vsftpd伺服器

vsftpd是目前Linux最好的FTP伺服器工具之一,其中的vs就是「Very Secure」(很安全)的縮寫,可見它的最大優點就是安全,除此之外,它還具有體積小,可定製強,效率高的優點。

如果選擇完全安裝RedHat Linux 9.0,則系統會默認安裝vsftpd伺服器。我們可以在終端命令窗口輸入以下命令進行驗證:
[root@ahpeng root] rpm -qa | grep vsftpd

如果結果顯示為「vsftpd-1.1.3-8」,則說明系統已經安裝vsftpd伺服器。如果安裝RedHat Linux 9.0時沒有選擇vsftpd伺服器,則可以在圖形環境下單擊「主菜單→系統設置→添加刪除應用程序」菜單項,在出現的「軟體包管理」對話框里確保選中「FTP伺服器」選項,然後單擊「更新」按鈕,按照屏幕提示插入第3張安裝光碟即可開始安裝。

另外,你也可以直接插入第3張安裝光碟,定位到/RedHat/RPMS下的vsftpd-1.1.3-8.i386.rpm安裝包,然後在終端命令窗口運行以下命令即可開始安裝進程:
[root@ahpeng RPMS] rpm -ivh vsftpd-1.1.3-8.i386.rpm

2.啟動/重新啟動/停止vsftpd服務

從Red Hat Linux9.0開始,vsftpd默認只採用standalone方式啟動vsftpd服務,方法是在終端命令窗口運行以下命令:
[root@ahpeng root] /etc/rc.d/init.d/vsftpd start

重新啟動vsftpd服務:
[root@ahpeng root] /etc/rc.d/init.d/ vsftpd restart

關閉vsftpd服務:
[root@ahpeng root] /etc/rc.d/init.d/ vsftpd stop

確認vsftpd服務已經啟動後,我們可以在任意一台Windows主機的DOS命令窗口裡輸入「ftp FTPAddres」(用實際的FTP伺服器IP地址或者域名代替FTPAddres),注意用戶名、密碼都是ftp(ftp是匿名用戶的映射用戶賬號),如下所述:
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
F:\Peter>;ftp FTPAddress
Connected to FTPAddress
220 (vsFTPd 1.1.3) //vsftpd的響應請求
User (FTPAddress:(none)): ftp //輸入用戶賬號ftp
331 Please specify thepassword.
Password: //輸入密碼ftp
230 Login successful. Havefun.
ftp>;

3.vsftpd的配置

在Red HatLinux 9.0里的vsftpd共有3個配置文件,它們分別是:
vsftpd.ftpusers:位於/etc目錄下。它指定了哪些用戶賬戶不能訪問FTP伺服器,例如root等。
vsftpd.user_list:位於/etc目錄下。該文件里的用戶賬戶在默認情況下也不能訪問FTP伺服器,僅當vsftpd .conf配置文件里啟用userlist_enable=NO選項時才允許訪問。
vsftpd.conf:位於/etc/vsftpd目錄下。它是一個文本文件,我們可以用Kate、Vi等文本編輯工具對它進行修改,以此來自定義用戶登錄控制、用戶許可權控制、超時設置、伺服器功能選項、伺服器性能選項、伺服器響應消息等FTP伺服器的配置。

(1)用戶登錄控制
anonymous_enable=YES,允許匿名用戶登錄。
no_anon_password=YES,匿名用戶登錄時不需要輸入密碼。
local_enable=YES,允許本地用戶登錄。
deny_email_enable=YES,可以創建一個文件保存某些匿名電子郵件的黑名單,以防止這些人使用Dos攻擊。
banned_email_file=/etc/vsftpd.banned_emails,當啟用deny_email_enable功能時,所需的電子郵件黑名單保存路徑(默認為/etc/vsftpd.banned_emails)。

(2)用戶許可權控制
write_enable=YES,開啟全局上傳許可權。
local_umask=022,本地用戶的上傳文件的umask設為022(系統默認是077,一般都可以改為022)。
anon_upload_enable=YES,允許匿名用戶具有上傳許可權,很明顯,必須啟用write_enable=YES,才可以使用此項。同時我們還必須建立一個允許ftp用戶可以讀寫的目錄(前面說過,ftp是匿名用戶的映射用戶賬號)。
anon_mkdir_write_enable=YES,允許匿名用戶有創建目錄的權利。
chown_uploads=YES,啟用此項,匿名上傳文件的屬主用戶將改為別的用戶賬戶,注意,這里建議不要指定root賬號為匿名上傳文件的屬主用戶!
chown_username=whoever,當啟用chown_uploads=YES時,所指定的屬主用戶賬號,此處的whoever自然要用合適的用戶賬號來代替。
chroot_list_enable=YES,可以用一個列表限定哪些本地用戶只能在自己目錄下活動,如果chroot_local_user=YES,那麼這個列表裡指定的用戶是不受限制的。
chroot_list_file=/etc/vsftpd.chroot_list,如果chroot_local_user=YES,則指定該列表(chroot_local_user)的保存路徑(默認是/etc/vsftpd.chroot_list)。
nopriv_user=ftpsecure,指定一個安全用戶賬號,讓FTP伺服器用作完全隔離和沒有特權的獨立用戶。這是vsftpd系統推薦選項。
async_abor_enable=YES,強烈建議不要啟用該選項,否則將可能導致出錯!
ascii_upload_enable=YES;ascii_download_enable=YES,默認情況下伺服器會假裝接受ASCⅡ模式請求但實際上是忽略這樣的請求,啟用上述的兩個選項可以讓伺服器真正實現ASCⅡ模式的傳輸。
注意:啟用ascii_download_enable選項會讓惡意遠程用戶們在ASCⅡ模式下用「SIZE/big/file」這樣的指令大量消耗FTP伺服器的I/O資源。
這些ASCⅡ模式的設置選項分成上傳和下載兩個,這樣我們就可以允許ASCⅡ模式的上傳(可以防止上傳腳本等惡意文件而導致崩潰),而不會遭受拒絕服務攻擊的危險。

(3)用戶連接和超時選項
idle_session_timeout=600,可以設定默認的空閑超時時間,用戶超過這段時間不動作將被伺服器踢出。
data_connection_timeout=120,設定默認的數據連接超時時間。

(4)伺服器日誌和歡迎信息
dirmessage_enable=YES,允許為目錄配置顯示信息,顯示每個目錄下面的message_file文件的內容。
ftpd_banner=Welcome to blah FTP service,可以自定義FTP用戶登錄到伺服器所看到的歡迎信息。
xferlog_enable=YES,啟用記錄上傳/下載活動日誌功能。
xferlog_file=/var/log/vsftpd.log,可以自定義日誌文件的保存路徑和文件名,默認是/var/log/vsftpd.log。

8. linux 怎麼做ftp伺服器

1.運行以下命令安裝 vsftpd。
yum install -y vsftpd
2.運行以下命令打開及查看etc/vsftpd
cd /etc/vsftpd
ls
說明:
/etc/vsftpd/vsftpd.conf 是核心配置文件。
/etc/vsftpd/ftpusers 是黑名單文件,此文件里的用戶不允許訪問 FTP 伺服器。
/etc/vsftpd/user_list 是白名單文件,是允許訪問 FTP 伺服器的用戶列表。
/etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些變數和設置
備註:使用命令 rpm -ql vsftpd 可列出vsftpd中包含的文件
3.運行以下命令設置開機自啟動。
systemctl enable vsftpd
4.運行以下命令啟動 FTP 服務。
systemctl start vsftpd
5.運行以下命令查看 FTP 服務埠。
netstat -antup | grep ftp
6.配置本地用戶登錄
本地用戶登錄就是指用戶使用 Linux 操作系統中的用戶賬號和密碼登錄 FTP 伺服器。
vsftpd 安裝後默只支持匿名 FTP 登錄,用戶如果試圖使用 Linux 操作系統中的賬號登錄伺服器,將會被 vsftpd 拒絕,但可以在 vsftpd 里配置用戶賬號和密碼登錄。具體步驟如下:
a.運行以下命令創建 ftptest 用戶。
useradd ftptest
(刪除用戶命令:sudo userdel -r newuser)
b.運行以下命令修改 ftptest 用戶密碼。
passwd ftptest
7.修改/etc/vsftpd/vsftpd.conf
a.運行vim /etc/vsftpd/vsftpd.conf。
b.按鍵 「i」 進入編輯模式。
c.將是否允許匿名登錄 FTP 的參數修改為anonymous enable=NO。
d.將是否允許本地用戶登錄 FTP 的參數修改為local_enable=YES。
e.按鍵 「Esc」 退出編輯模式,然後按鍵「:wq」 保存並退出文件。
f.運行命令 cat /etc/vsftpd/vsftpd.conf 查看配置文件內容。 命令的使用方法可查詢「Linux命令大全」。

9. linux怎麼搭建ftp伺服器

vsftpd是一款在Linux發行版中最受推崇的FTP伺服器程序。特點是小巧輕快,安全易用。並且是一個完全免費開放源碼的ftp軟體方法/步驟1、用在線安裝 yum install vsftpd pam* db4*-y使用命令將vsftp配置為系統服務 chkconfig --level 35 vsftpd on2、配置vsftpd服務的宿主 useradd vsftpdadmin -s /sbin/nologin -M 這個vsftpdadmin只是用來替換root的,並不需要登錄3、建立ftp虛擬宿主帳戶 useradd vsftpuser -s /sbin/nologin -M 這ftpuser只個虛擬帳戶的宿主,本身是不用登錄的4、配置vsftpd.conf 配置之前要先備份一下原來的 vi /etc/vsftpd/vsftpd.conf anonymous_enable=YES -- anonymous_enable=NO //不允許匿名用戶訪問,默認是允許。chroot_list_enable=YES -- chroot_list_enable=YES //不允許FTP用戶離開自己主目錄 增加 #設定虛擬用戶個人Vsftp的配置文件存放路徑。也就是說,這個被指定的目錄里,將存放每個Vsftp虛擬用戶個性的配置文件,一個需要注意的地方就是這些配置文件名必須和虛擬用戶名相同。 user_config_dir=/etc/vsftpd/vconf/userlocal#這一步非常重要,要記住這一步。一會要根據這個配置新建文件夾 #修改埠號 ftp_data_port=4040 reverse_lookup_enable=NO pasv_enable=yes pasv_min_port=48790 pasv_max_port=48800 listen_port=48796 #埠可以根據你自己實際情況配置,也可以用默認埠。但是為了安全考慮根據自己實際情況配置5、建立虛擬用戶文件 mkdir /etc/vsftpd/vconf touch /etc/vsftpd/vonf/vir_user6、建立虛擬用戶 vi /etc/vsftpd/vonf/vir_user virtualuser //用戶名 12345678 //密碼7、生成資料庫 db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db8、設置資料庫文件訪問許可權 chmod 600 /etc/vsftpd/vconf/vir_user chmod 600 /etc/vsftpd/vconf/vir_user.db9、修改/etc/pam.d/vsftpd auth sufficient pam_userdb.so db=/etc/vsftpd/vconf/vir_user account sufficient pam_userdb.so db=/etc/vsftpd/vconf/vir_user (要想同時使用系統用戶和虛擬用戶,就需要把required改成sufficient)10根據第四步配置的user_config_dir=/etc/vsftpd/vconf/userlocal 新建userlocal文件夾 mkdir /etc/vsftpd/vconf/userlocal11、根據第六步建立的用戶名建立一個文件 例如第六步建立的帳號是virtualuser,則新建一個virtualuser文件 touch /etc/vsftpd/conf/userlocal/virtualuser12、編輯該用戶訪問的文件路徑 vi /etc/vsftpd/conf/userlocal/virtualuser 輸入如下 local_root= //需要指定的網站根目錄,例如www..com所在文件夾為/www/ anonymous_enable=NO #禁止匿名用戶訪問 write_enable=YES #開啟寫許可權 local_umask=022 #上傳後文件的許可權掩碼 anon_upload_enable=NO #關閉匿名下載 anon_mkdir_write_enable=NO #關閉匿名創建文件夾 idle_session_timeout=60 #會話自動關閉時間 60是因分鍾 data_connection_timeout=120 #數據延遲時間 max_clients=10 #最大連接數 max_per_ip=5 #同一個ip同時允許5個IP聯機 local_max_rate=1048576 #實體用戶傳輸速度限制,單位B/s。0代表不限制13、配置就此完成,重啟vsftpd服務:service vsftpd restart。查看系統埠狀態:netstas -tulnp。如果能看到48796埠正在被vsftpd調用說明啟動成功。如有不清楚的可以再繼續看看網路經驗。