vsftpd配置參數詳細整理
-|白王斧三又幹一html
vsftpd配置參數詳細整理 -|白王斧三又幹一 發表於 2005-10-23 20:30:00
一、vsftpd配置參數詳細整理
#接受匿名用戶
anonymous_enable=YES
#匿名用戶login時不詢問口令
no_anon_password=YES
#匿名用戶主目錄
anon_root=(none)
#接受本地用戶
local_enable=YES
#本地用戶主目錄
local_root=(none)
#若是匿名用戶須要密碼,那麼使用banned_email_file裏面的電子郵件地址的用戶不能登陸
deny_email_enable=YES
#僅在沒有pam驗證版本時有用,是否檢查用戶有一個有效的shell來登陸
check_shell=YES
#若啓用此選項,userlist_deny選項才被啓動
userlist_enable=YES
#若爲YES,則userlist_file中的用戶將不能登陸,爲NO則只有userlist_file的用戶能夠登陸
userlist_deny=NO
#若是和chroot_local_user一塊兒開啓,那麼用戶鎖定的目錄來自/etc/passwd每一個用戶指定的目錄(這個不是很清楚,很哪位熟悉的指點一下)
passwd_chroot_enable=NO
#定義匿名登入的使用者名稱。默認值爲ftp。
ftp_username=FTPweb
#################用戶權限控制###############
#能夠上傳(全局控制).
write_enable=YES
#本地用戶上傳文件的umask
local_umask=022
#上傳文件的權限配合umask使用
#file_open_mode=0666
#匿名用戶能夠上傳
anon_upload_enable=NO
#匿名用戶能夠建目錄
anon_mkdir_write_enable=NO
匿名用戶其它的寫權利(更改權限?)
anon_other_write_enable=NO
若是設爲YES,匿名登入者會被容許下載可閱讀的檔案。默認值爲YES。
anon_world_readable_only=YES
#若是開啓,那麼全部非匿名登錄的用戶名都會被切換成guest_username指定的用戶名
#guest_enable=NO
全部匿名上傳的文件的所屬用戶將會被更改爲chown_username
chown_uploads=YES
匿名上傳文件所屬用戶名
chown_username=lightwiter
#若是啓動這項功能,則全部列在chroot_list_file之中的使用者不能更改根目錄
chroot_list_enable=YES
#容許使用"async ABOR"命令,通常不用,容易出問題
async_abor_enable=YES
管控是否可用ASCII 模式上傳。默認值爲NO。
ascii_upload_enable=YES
#管控是否可用ASCII 模式下載。默認值爲NO。
ascii_download_enable=YES
#這個選項必須指定一個空的數據夾且任何登入者都不能有寫入的權限,當vsftpd 不須要file system 的權限時,就會將使用者限制在此數據夾中。默認值爲/usr/share/empty
secure_chroot_dir=/usr/share/emptyshell
###################超時設置##################
#空閒鏈接超時
idle_session_timeout=600
#數據傳輸超時
data_connection_timeout=120
#P***S請求超時
ACCEPT_TIMEOUT=60
#PROT模式鏈接超時
connect_timeout=60數據庫
################服務器功能選項###############
#開啓日記功能
xferlog_enable=YES
#使用標準格式
xferlog_std_format=YES
#當xferlog_std_format關閉且本選項開啓時,記錄全部ftp請求和回覆,當調試比較有用.
#log_ftp_protocol=NO
#容許使用pasv模式
pasv_enable=YES
#關閉安全檢查,當心呀.
#pasv_promiscuous+NO
#容許使用port模式
#port_enable=YES
#關閉安全檢查
#prot_promiscuous
#開啓tcp_wrappers支持
tcp_wrappers=YES
#定義PAM 所使用的名稱,預設爲vsftpd。
pam_service_name=vsftpd
#當服務器運行於最底層時使用的用戶名
nopriv_user=nobody
#使vsftpd在pasv命令回覆時跳轉到指定的IP地址.(服務器聯接跳轉?)
pasv_address=(none)安全
#################服務器性能選項##############
#是否能使用ls -R命令以防止浪費大量的服務器資源
#ls_recurse_enable=YES
#是否使用單進程模式
#one_process_model
#綁定到listen_port指定的端口,既然都綁定了也就是每時都開着的,就是那個什麼standalone模式
listen=YES
#當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。如果但願出現擁有者的名稱,則將此功能開啓。
text_userdb_names=NO
#顯示目錄清單時是用本地時間仍是GMT時間,能夠經過mdtm命令來達到同樣的效果
use_localtime=NO
#測試平臺優化
#use_sendfile=YES服務器
################信息類設置################
#login時顯示歡迎信息.若是設置了banner_file則此設置無效
ftpd_banner=歡迎來到湖南三辰Fake-Ta FTP 網站.
#容許爲目錄配置顯示信息,顯示每一個目錄下面的message_file文件的內容
dirmessage_enable=YES
#顯示會話狀態信息,關!
#setproctitle_enable=YESsession
############## 文件定義 ##################
#定義不能更改用戶主目錄的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
#定義限制/容許用戶登陸的文件
userlist_file=/etc/vsftpd/vsftpd.user_list
#定義登陸信息文件的位置
banner_file=/etc/vsftpd/banner
#禁止使用的匿名用戶登錄時做爲密碼的電子郵件地址
banned_email_file=/etc/vsftpd.banned_emails
#日誌文件位置
xferlog_file=/var/log/vsftpd.log
#目錄信息文件
message_file=.messageapp
############## 目錄定義 #################
#定義用戶配置文件的目錄
user_config_dir=/etc/vsftpd/userconf
#定義本地用戶登錄的根目錄,注意定義根目錄能夠是相對路徑也能夠是絕對路徑.相對路徑是針對用戶家目錄來講的.
local_root=webdisk #此項設置每一個用戶登錄後其根目錄爲/home/username/webdisk
#匿名用戶登錄後的根目錄
anon_root=/var/ftpasync
#############用戶鏈接選項#################
#可接受的最大client數目
max_clients=100
#每一個ip的最大client數目
max_per_ip=5
#使用標準的20端口來鏈接ftp
connect_from_port_20=YES
#綁定到某個IP,其它IP不能訪問
listen_address=192.168.0.2
#綁定到某個端口
#listen_port=2121
#數據傳輸端口
#ftp_data_port=2020
#pasv鏈接模式時可使用port 範圍的上界,0 表示任意。默認值爲0。
pasv_max_port=0
#pasv鏈接模式時可使用port 範圍的下界,0 表示任意。默認值爲0。
pasv_min_port=0tcp
##############數據傳輸選項#################
#匿名用戶的傳輸比率(b/s)
anon_max_rate=51200
#本地用戶的傳輸比率(b/s)
local_max_rate=5120000
########################################
別外,若是要對每一個用戶進行單獨的控制,只須要在user_config_dir中創建username文件,內容爲數據傳輸和用戶權利裏面設置我的的合適的選項,用戶自定義文件一樣適合用pam支持的虛擬用戶
附: FTP 數字代碼的意義
110 從新啓動標記應答。
120 服務在多久時間內ready。
125 數據鏈路埠開啓,準備傳送。
150 文件狀態正常,開啓數據鏈接端口。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態或是系統求助響應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的聯機服務ready。
221 服務的控制鏈接埠關閉,能夠註銷。
225 數據連結開啓,但無傳輸動做。
226 關閉數據鏈接端口,請求的文件操做成功。
227 進入passive mode。
230 使用者登入。
250 請求的文件操做完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,須要密碼。
332 登入時須要帳號信息。
350 請求的操做須要進一部的命令。
421 沒法提供服務,關閉控制連結。
425 沒法開啓數據鏈路。
426 關閉聯機,終止傳輸。
450 請求的操做未執行。
451 命令終止:有本地的錯誤。
452 未執行命令:磁盤空間不足。
500 格式錯誤,沒法識別命令。
501 參數語法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件須要帳戶登入。
550 未執行請求的操做。
551 請求的命令終止,類型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的命令,名稱不正確
文檔之vsftp配置大全
安裝篇
===============
這個文件詳細介紹瞭如何從VSFTPD的.tar.gz分發包開始,創建和安裝並運行VSFTPD。
1)創建VSFTPD
先進入解壓.tar.gz文件後產生的目錄內。以下:
cd vsftpd-2.0.1
編輯"builddefs.h"以操做compile-time設定。(tcp_wrappers build,等)
輸入make,回車(若是它不工做請發郵件通知我 .
這將產生一個二進制文件,你能夠驗證一下。以下:
[chris@localhost vsftpd]$ ls -l vsftpd
-rwxrwxr-x 1 chris chris 61748 Sep 27 00:26 vsftpd
2)知足VSFTPD安裝所需的一些條件
VSFTPD默認設置須要一個"nobody"用戶,若是這個用戶不存在,那麼添加它。以下:
[root@localhost root]# useradd nobody
useradd: user nobody exists
VSFTPD默認設置須要一個空目錄:/usr/share/empty.增長這個目錄,若是它還不存在的話。以下:
[root@localhost root]# mkdir /usr/share/empty/
mkdir: cannot create directory `/usr/share/empty': File exists
若是允許匿名用戶(anonymous),那麼你將須要一個"ftp"用戶和其home目錄(這個home目錄不屬於「ftp」用戶,並且「ftp"用戶也對其沒有寫權限)在你的系統中存在。
如下命令用來建立一個"ftp"用戶,若是它還不存在的話。
[root@localhost root]# mkdir /var/ftp/
[root@localhost root]# useradd -d /var/ftp ftp
(即便你的"ftp"用戶已經存在,完成如下這兩步也是頗有好處的:)
[root@localhost root]# chown root.root /var/ftp
[root@localhost root]# chmod og-w /var/ftp
3)安裝VSFTPD的配置、執行和幫助文件。
輸入"make install"後會將二進制文件和幫助文件拷貝到適當的目錄。
你也能夠手工拷貝這些文件:
cp vsftpd /usr/local/sbin/vsftpd
cp vsftpd.conf.5 /usr/local/man/man5
cp vsftpd.8 /usr/local/man/man8
"make install"不會拷貝默認的配置文件,因此建議你手工拷貝:
cp vsftpd.conf /etc
daidong注:根據你係統版本的不一樣,也多是 cp vsftpd.conf /etc/vsftpd
4)測試 (無inetd影響)
VSFTPD能運行在獨立模式(standalone)或者經過inetd(xinetd)來啓動。
你能經過inetd來運行vsftpd以更好地控制它。但咱們在首次運行時不這麼作,以便檢查系統是否如今配置正常。
編輯/etc/vsftpd.conf(daidong注:也多是/etc/vsftpd/vsftpd.conf),並在最下面加入如下這一行:
listen=YES
這將告訴VSFTPD不要從inetd啓動。
OK,如今試着啓動FTP。
以ROOT登陸。
肯定你沒有運行其餘FTP服務(不然VSFTPD不能佔用FTP所需的21端口)。
運行那個二進制文件,以下:
[root@localhost root]# /usr/local/sbin/vsftpd &
[1] 2104
若是一切正常,那麼你將連上FTP服務器,以下:
[chris@localhost chris]$ ftp localhost
Connected to localhost (127.0.0.1).
220 (vsFTPd 1.1.1)
Name (localhost:chris): ftp
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,229,133)
150 Here comes the directory listing.
d--x--x--x 2 0 0 4096 Jan 14 2002 bin
d--x--x--x 2 0 0 4096 Apr 21 20:52 etc
drwxr-xr-x 2 0 0 4096 Apr 21 20:52 lib
drwxr-sr-x 2 0 50 4096 Jul 26 22:58 pub
226 Directory send OK.
ftp>
5)從inetd或者相似方式啓動(官方推薦使用standalone方式)
你也許想經過inetd或者相似方式啓動VSFTPD,由於這能給你更多的感覺。例如xinetd就有不少的設置。
(注意:VSFTPD的內在機制屏蔽了xinetd的大多數的有用的設置)。
若是使用標準的"inetd",你須要編輯/etc/inetd.conf,在其中加入如下一行:
ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd
(肯定你刪除或者註釋掉一些已存在的FTP服務配置行。若是你沒有安裝tcp_wrappers,或者不想使用它們,那麼請去掉/usr/sbin/tcpd part).
inetd須要指定並從新載入它的配置文件:
kill -SIGHUP `pidof inetd`
若是你想使用"xinetd",請參閱咱們提供的範例 /EXAMPLE/INTERNET_SITE/README. 而其餘範例文件將告訴你如何調配出更強大的xinetd功能。
6)爲本地登陸配置PAM文件(可選)
若是你在一臺激活了PAM的設備上運行VSFTPD,你須要提供一個 /etc/pam.d/ftp 文件。不然非匿名用戶將沒法登陸服務器。
(注:若是你的PAM版本比較老,那麼這個文件也許是 /etc/pam.conf).
作爲一個標準設置,你能夠拷貝一個已提供的範例文件,以下:
cp RedHat/vsftpd.pam /etc/pam.d/ftp
7)自定義你的配置文件
完成以上的配置後,建議你安裝一個配置文件。默認的配置文件位置是/etc/vsftpd.conf. 在VSFTPD軟件分發包內有一個範例配置文件。
你能夠拷貝其爲/etc/vsftpd.conf以作進一步修改。
cp vsftpd.conf /etc
(daidong注:也多是 cp vsftpd.conf /etc/vsftpd ).
這個默認配置即不允許本地登陸也不允許匿名用戶上傳,也許你但願更改這個配置。
其它
===================
測試平臺 (已經過)
-流行的,功能完善的平臺都能測試經過。在如下平臺的較新版本,VSFTPD工做得很好。在其大部分較早的版本下,也運行正常。
- RedHat Linux
- RedHat Enterprise Linux
- Solaris / GNU tools (Solaris 8 or newer)
- SuSE Linux
- Debian Linux
- OpenBSD
- FreeBSD
- NetBSD
- HP-UX / GNU tools
- IRIX / GNU tools
- Mac OS X (note; older versions have setgroups() problem. 10.3.4 reported OK)
虛擬用戶1
=============
這個例子示範瞭如何爲虛擬用戶設置VSFTPD/PAM。
虛擬用戶是一個在系統中並不做爲一個登陸實體而存在的用戶。使用虛擬用戶比使用真實的用戶更安全,由於這個帳號只能用於FTP服務器。
虛擬用戶常常用來提供給不大可信任的用戶訪問某些資源,而這些資源一般是其餘普通用戶不能訪問的。
1)建立虛擬用戶數據庫
咱們將使用pam_userdb來認證虛擬用戶。這須要提供一個「db"格式(一種通用數據庫格式)的用戶名/密碼文件。
建立一個"db"格式的文件,首先要建立一個標準文本文件,並把用戶名,密碼以豎直排列方式輸入。如logins.txt:
tom
foo
fired
bar
這個例子中,tom用戶的密碼是foo.fired用戶的密碼是bar.
以ROOT登陸,建立一個數據庫文件,以下:
db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
(這要求berkeley db程序已經安裝)
(注:一些系統也許安裝了多個版本的"db",因此某些狀況下你可能使用"db3_load"纔是正確的。對於一些 Debian系統就是這樣。
關鍵在於要讓pam_userdb相信它的登陸數據庫是哪個db版本所產生(通常都是db3,儘管你的系統裏可能安裝的是db4).)
這將建立/etc/vsftpd_login.db文件。顯然,你但願設定這個文件的權限:
chmod 600 /etc/vsftpd_login.db
要了解更多關於維護你的登陸數據庫的信息,請在"berkeley DB"察看相關文檔:
http://www.sleepycat.com/docs/utility/index.html
2)用你的新數據庫建立一個PAM文件
請參考範例vsftpd.pam,它包含2行:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
這是告訴PAM用新的數據庫去驗證用戶。把這個PAM文件拷貝到PAM目錄,通常是/etc/pam.d
cp vsftpd.pam /etc/pam.d/ftp
3)爲虛擬用戶設置home目錄
useradd -d /home/ftpsite virtual
ls -ld /home/ftpsite
(which should give):
drwx------ 3 virtual virtual 4096 Jul 30 00:39 /home/ftpsite
咱們已經建立了一個名叫"virtual"的用戶,home目錄是"/home/ftpsite".
咱們拷貝一些東西到這個下載目錄:
cp /etc/hosts /home/ftpsite
chown virtual.virtual /home/ftpsite/hosts
4)建立你的vsftpd.conf配置文件
請參考這個目錄下的例子。讓咱們一行行地看一看這些配置:
anonymous_enable=NO
local_enable=YES
安全起見,屏蔽了匿名用戶,只啓用了非匿名用戶(即虛擬用戶使用的帳號)
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
爲了安全請確認這幾個配置,這將關閉寫的權限。
chroot_local_user=YES
這將把虛擬用戶鎖定在咱們在以上設置的/home/ftpsite目錄內。
guest_enable=YES
guest_username=virtual
guest_enable很是重要-它激活了虛擬用戶!而guest_username說明全部的虛擬用戶都對應咱們在上面設置的真實用戶:「virtual".
這同時肯定了虛擬用戶在文件系統中的位置,也就是說,虛擬用戶的home目錄即"virtual"用戶的home目錄:/home/ftpsite。
listen=YES
listen_port=10021
這讓VSFTPD以獨立模式(standalone)運行,而不是從inetd方式啓動。也就是說,你運行VSFTPD可執行文件就啓動了FTP服務。
同時也讓VSFTPD啓用非標準端口10021來監聽FTP請求(FTP通常使用21端口)。
pasv_min_port=30000
pasv_max_port=30999
這設定了被動模式的FTP請求端口。當你配置了一個防火牆的時候,這個配置就很好用。
拷貝範例配置文件到/etc
cp vsftpd.conf /etc/
(daidong注:也多是/etc/vsftpd)
5)啓動VSFTPD
到VSFTPD二進制文件所在的目錄,輸入:
./vsftpd
若是一切正常,這個命令將生效。不然,你將會看到一些錯誤信息的反饋。
6)測試
啓動另外一個會話。(或者ctrl-z,再輸入"bg",讓VSFTPD在後臺運行)。
這是一個FTP會話的例子:
ftp localhost 10021
Connected to localhost (127.0.0.1).
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
Name (localhost:chris): tom
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (127,0,0,1,117,135)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp> size hosts
213 147
ftp>
註釋:
密碼是"foo"
出現」failed to open directory「的話,別擔憂。這是由於/home/ftpsite目錄不允許被任意瀏覽。
(咱們能夠更改anon_world_readable_only=NO以消除告警,但爲了安全,仍是保留這個配置)。
咱們能經過size命令看到咱們已經訪問了被咱們拷貝到這裏的"hosts"文件。
vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
listen=YES
listen_port=10021
pasv_min_port=30000
pasv_max_port=30999
虛擬用戶2
===============
這個例子將演示如何擴展「VIRTUAL_USERS」那個範例,從而實現更復雜一點的配置。
讓咱們假定咱們須要2種不一樣的虛擬用戶:一種只能瀏覽並下載資源,另外一種能上傳文件並瀏覽站內資源。
要激活這個設置,咱們將使用VSFTPD的強大的「單個用戶配置」功能(是V1.1.0後出現的新功能)。
在前一個虛擬用戶範例中,咱們建立了2個用戶-tom和fred.
咱們將實現fred有寫權限以上傳新文件,同時tom只能下載文件。
1)激活單個用戶配置功能。
要激活這個功能,須要增長如下配置行到配置文件:
user_config_dir=/etc/vsftpd_user_conf
而且建立目錄:
mkdir /etc/vsftpd_user_conf
2)授予tom讀取全部文件和目錄的權限
在上一個例子的最後,咱們注意到虛擬用戶只能瀏覽全部的徹底可讀屬性的目錄和文件。咱們使/home/ftpsite徹底可讀,並且被上傳的文件也
賦予了徹底可讀的權限(daidong注:意思是說這樣虛擬用戶就能讀取全部的文件了)。但實現這個目的的另外一個方法是受權tom能下載那些非徹底可讀的文件。
對於tom,他的配置文件中須要修改一個設置:
anon_world_readable_only:
設爲"anon_world_readable_only=NO" > /etc/vsftpd_user_conf/tom
(daidong注:既把默認配置修改了anon_world_readable_only後,複製到/etc/vsftpd_user_conf下,名字爲tom)
驗證一下結果-以tom登陸,「ls」將返回一個目錄列表。若是以fred登陸將不會如此。
注意:重啓VSFTPD以啓用配置文件/etc/vsftpd.conf(高級用戶也能夠發送SIGHUP給VSFTPD的監聽進程).
3)授予freg讀取全部文件/目錄並建立新文件/目錄的權限,但讓他不能對已存在的文件/目錄進行操做.
echo "anon_world_readable_only=NO" > /etc/vsftpd_user_conf/fred
echo "write_enable=YES" >> /etc/vsftpd_user_conf/fred
echo "anon_upload_enable=YES" >> /etc/vsftpd_user_conf/fred
驗證一下-以tom登陸,將不能上傳,而fred就能夠.
試圖刪除一個文件--噢,大家倆都不行!
配置詳解
=============
VSFTPD.CONF.5
================
名字
vsftpd.conf :VSFTPD的配置文件
描述:
vsftpd.conf 用來控制VSFTPD的各項功能。默認狀態下,它的位置是/etc/vsftpd.conf。
(譯者注:也許老的LINUX版本下,配置文件是這個位置,但新的LINUX版本,例如FC2,配置文件是在/etc/vsftpd目錄下。
可是也極可能和安裝方式有關,RPM包安裝,配置文件是/etc/vsftpd.conf. 源碼包安裝:/etc/vsftpd/vsftpd.conf.我不肯定。
但之後我再也不特別指出了,真累!!)
然而,你也能夠經過修改配置行來指定到其它目錄。這一點頗有用,由於也許你想使用一些高級inetd功能,例如xinetd,在一個多虛擬主機的機器上調用不一樣的配置文件。
格式
VSFTPD.conf 的格式很是簡單,每行要麼是一個註釋,要麼是一個指令。註釋行以#開始並被忽略掉。指令行格式以下:
配置項=參數值
很重要的一點是,這個格式裏不存在任何空格。
默認的,每個配置項在配置文件裏都佔一編輯行,能夠被修改。
布爾選項
參數值的布爾選項能夠是:
YES或者NO
allow_anon_ssl
只有ss1_enable激活了才能夠啓用此項。若是設置爲YES,匿名用戶將允許使用安全的SSL鏈接服務器。
默認值:NO
anon_mkdir_write_enable
若是設爲YES,匿名用戶將允許在指定的環境下建立新目錄。若是此項要生效,那麼配置write_enable必須被激活,而且匿名用戶必須在其父目錄有寫權限。
默認值:NO
anon_other_write_enable
若是設置爲YES,匿名用戶將被授予較大的寫權限,例如刪除和更名。通常不建議這麼作,除非想徹底受權。
默認值:NO
anon_upload_enable
若是設爲YES,匿名用戶就允許在指定的環境下上傳文件。若是此項要生效,那麼配置write_enable必須激活。而且匿名用戶必須在相關目錄有寫權限。
默認值:NO
anon_world_readable_only
啓用的時候,匿名用戶只允許下載徹底可讀的文件,這也就允許了ftp用戶擁有對文件的全部權,尤爲是在上傳的狀況下。
默認值:YES
anonymous_enable
控制是否允許匿名用戶登陸。若是允許,那麼「ftp」和「anonymous」都將被視爲「anonymous"而允許登陸。
默認值:YES
ascii_download_enable
啓用時,用戶下載時將以ASCII模式傳送文件。
默認值:NO
ascii_upload_enable
啓用時,用戶上傳時將以ASCII模式傳送文件。
默認值:NO
async_abor_enable
啓用時,一個特殊的FTP命令"async ABOR」將允許使用。只有不正常的FTP客戶端要使用這一點。並且,這個功能又難於操做,因此,
默認是把它關閉了。可是,有些客戶端在取消一個傳送的時候會被掛死(daidong注:估計是客戶端無響應了),那你只有啓用這個功能才能避免這種狀況。
默認值:NO
background
啓用時,而且VSFTPD是「listen」模式啓動的(daidong注:就是standalone模式),VSFTPD將把監聽進程置於後臺。但訪問VSFTPD時,控制檯將當即被返回到SHELL。
默認值:NO
check_shell
注意:這個選項只對非PAM結構的VSFTPD纔有效。若是關閉,VSFTPD將不檢查/etc/shells以斷定本地登陸的用戶是否有一個可用的SHELL。
默認值:YES
chmod_enable
啓用時,將允許使用SITE CHMOD命令。注意,這隻能用於本地用戶。匿名用戶毫不能使用SITE CHMOD。
默認值:YES
chown_uploads
若是啓用,因此匿名用戶上傳的文件的全部者將變成在chown_username裏指定的用戶。這對管理FTP頗有用,也許也對安全有益。
默認值:NO
chroot_list_enable
若是激活,你要提供一個用戶列表,表內的用戶將在登陸後被放在其home目錄,鎖定在虛根下 (daidong注:進入FTP後,PWD一下,能夠看到當前目錄是"/",這就是虛根。是FTP的根目錄,並不是FTP服務器系統的根目錄)。若是 chroot_local_user設爲YES後,其含義會發生一點變化。
在這種狀況下,這個列表內的用戶將不被鎖定在虛根下。
默認狀況下,這個列表文件是/etc/vsftpd.chroot_list, 但你也能夠經過修改chroot_list_file來改變默認值。
默認值:NO
chroot_local_user
若是設爲YES,本地用戶登陸後將被(默認地)鎖定在虛根下,並被放在他的home目錄下。
警告:
這個配置項有安全的意味,特別是若是用戶有上傳權限或者可以使用SHELL的話。在你肯定的前提下,再啓用它。
注意,這種安全暗示並不是只存在於VSFTPD,實際上是普遍用於全部的但願把用戶鎖定在虛根下的FTP軟件。
默認值:NO
connect_from_port_20
這用來控制服務器是否使用20端口號來作數據傳輸。爲安全起見,有些客戶堅持啓用。相反,關閉這一項可讓VSFTPD更加大衆化。
默認值:NO (但在範例配置文件中,啓用了,即YES)
deny_email_enable
若是激活,你要提供一個關於匿名用戶的密碼E-MAIL表(daidong注:咱們都知道,匿名用戶是用郵件地址作密碼的)以阻止以這些密碼登陸的匿名用戶。
默認狀況下,這個列表文件是/etc/vsftpd.banner_emails,但你也能夠經過設置banned_email_file來改變默認值。
默認值:NO
dirlist_enable
若是設置爲NO,全部的列表命令(daidong注:如ls)都將被返回「permission denied」提示。
默認值:YES
dirmessage_enable
若是啓用,FTP服務器的用戶在首次進入一個新目錄的時候將顯示一段信息。默認狀況下,會在這個目錄中查找.message文件,但你也能夠
經過更改message_file來改變默認值。
默認值:NO (但在配置範例文件中啓用了它)
download_enable
若是設爲NO,下載請求將返回「permission denied」。
默認值:YES
dual_log_enable
若是啓用,兩個LOG文件會各自產生,默認的是/var/log/xferlog和/var/log/vsftpd.log。前一個是wu-ftpd格式的LOG,能被通用工具分析。
後一個是VSFTPD的專用LOG格式。
默認值: NO
force_dot_files
若是激活,即便客戶端沒有使用「a」標記,(FTP裏)以.開始的文件和目錄都會顯示在目錄資源列表裏。可是把"."和".."不會顯示。(daidong注:即LINUX下
的當前目錄和上級目錄不會以‘.’或‘..’方式顯示)。
默認值:NO
force_local_data_ssl
只有在ssl_enable激活後才能啓用。若是啓用,全部的非匿名用戶將被強迫使用安全的SSL登陸以在數據線路上收發數據。
默認值:YES
force_local_logins_ssl
只有在ssl_enable激活後才能啓用。若是啓用,全部的非匿名用戶將被強迫使用安全的SSL登陸以發送密碼。
默認值:YES
guest_enable
若是啓用,全部的非匿名用戶登陸時將被視爲」遊客「,其名字將被映射爲guest_username裏所指定的名字。
默認值:NO
hide_ids
若是啓用,目錄資源列表裏全部用戶和組的信息將顯示爲"ftp".
默認值:NO
listen
若是啓用,VSFTPD將以獨立模式(standalone)運行,也就是說能夠不依賴於inetd或者相似的東東啓動。直接運行VSFTPD
的可執行文件一次,而後VSFTPD就本身去監聽和處理鏈接請求了。
默認值:NO
listen_ipv6
相似於listen參數的功能,但有一點不一樣,啓用後VSFTPD會去監聽IPV6套接字而不是IPV4的。這個設置和listen的設置互相排斥。
默認值:NO
local_enable
用來控制是否允許本地用戶登陸。若是啓用,/etc/passwd裏面的正經常使用戶的帳號將被用來登陸。
默認值:NO
log_ftp_protocol
啓用後,若是xferlog_std_format沒有被激活,全部的FTP請求和反饋信息將被紀錄。這經常使用於調試(debugging)。
默認值:NO
ls_recurse_enable
若是啓用,"ls -R"將被允許使用。這是爲了不一點點安全風險。由於在一個大的站點內,在目錄頂層使用這個命令將消耗大量資源。
默認值:NO
no_anon_password
若是啓用,VSFTPD將不會向匿名用戶詢問密碼。匿名用戶將直接登陸。
默認值:NO
no_log_lock
啓用時,VSFTPD在寫入LOG文件時將不會把文件鎖住。這一項通常不啓用。它對一些工做區操做系統問題,如Solaris / Veritas文件系統共存時有用。
由於那在試圖鎖定LOG文件時,有時候看上去象被掛死(無響應)了。(daidong注:這我也不是很理解。因此翻譯未必近乎原意。原文以下:It exists to workaround
operating system bugs such as the Solaris / Veritas filesystem combination
which has been observed to sometimes exhibit hangs trying to lock log files.)
默認值:NO
one_process_model
若是你的LINUX核心是2.4的,那麼也許能使用一種不一樣的安全模式,即一個鏈接只用一個進程。只是一個小花招,但能提升FTP的性能。請肯定須要後再啓用它,並且也請肯定你的
站點是否會有大量的人同時訪問。
默認值:NO
passwd_chroot_enable (daidong注:這段本身看,無語...)
if enabled, along with
.BR chroot_local_user
, then a chroot() jail location may be specified on a per-user basis. Each
user's jail is derived from their home directory string in /etc/passwd. The
occurrence of /./ in the home directory string denotes that the jail is at that
particular location in the path.
默認值:NO
pasv_enable
若是你不想使用被動方式得到數據鏈接,請設爲NO。
默認值:YES
pasv_promiscuous
若是你想關閉被動模式安全檢查(這個安全檢查能確保數據鏈接源於同一個IP地址)的話,設爲YES。肯定後再啓用它(daidong注:原話是:只有你清楚你在作什麼時才啓用它!)
合理的用法是:在一些安全隧道配置環境下,或者更好地支持FXP時(才啓用它)。
默認值:NO
port_enable
若是你想關閉以端口方式得到數據鏈接時,請關閉它。
默認值:YES
port_promiscuous
若是你想關閉端口安全檢查(這個檢查能夠確保對外的(outgoing)數據線路只通向客戶端)時,請關閉它。確認後再作!
默認值:NO
run_as_launching_user
若是你想讓一個用戶能啓動VSFTPD的時候,能夠設爲YES。當ROOT用戶不能去啓動VSFTPD的時候會頗有用(daidong注:應該不是說ROOT用戶沒有權限啓動VSFTPD,
而是由於別的,例如安全限制,而不能以ROOT身份直接啓動VSFTPD)。強烈警告!!別啓用這一項,除非你徹底清楚你在作什麼(daidong:無語....)!!!隨意地啓動這一項會致使
很是嚴重的安全問題,特別是VSFTPD沒有或者不能使用虛根技術來限制文件訪問的時候(甚至VSFTPD是被ROOT啓動的)。有一個愚蠢的替代方案是啓用deny_file,將其設置爲{/*,*..*}等,
但其可靠性卻不能和虛根相比,也靠不住。
若是啓用這一項,其餘配置項的限制也會生效。例如,非匿名登陸請求,上傳文件的全部權的轉換,用於鏈接的20端口和低於1024的監聽端口將不會工做。其餘一些配置項也可能被影響。
默認值:NO
secure_email_list_enable
若是你想只接受以指定E-MAIL地址登陸的匿名用戶的話,啓用它。這通常用來在沒必要要用虛擬用戶的狀況下,以較低的安全限制去訪問較低安全級別的資源。若是啓用它,匿名用戶除非
用在email_password_file裏指定的E-MAIL作爲密碼,不然不能登陸。這個文件的格式是一個密碼一行,並且沒有額外的空格(daidong注:whitespace,譯爲空格,不知道是否正確)。
默認的文件名是:/etc/vsftpd.email_passwords.
默認值:NO
session_support
這將配置是否讓VSFTPD去嘗試管理登陸會話。若是VSFTPD管理會話,它會嘗試並更新utmp和wtmp。它也會打開一個pam會話(pam_session),直到LOGOUT纔會關閉它,若是使用PAM進行認證的話。
若是你不須要會話紀錄,或者想VSFTPD運行更少的進程,或者讓它更大衆化,你能夠關閉它。
注:utmp和wtmp只在有PAM的環境下才支持。
默認值:NO
setproctitle_enable
若是啓用,VSFTPD將在系統進程列表中顯示會話狀態信息。換句話說,進程名字將變成VSFTPD會話當前正在執行的動做(等待,下載等等)。爲了安全目的,你能夠關閉這一項。
默認值:NO
ssl_enable
若是啓用,vsftpd將啓用openSSL,經過SSL支持安全鏈接。這個設置用來控制鏈接(包括登陸)和數據線路。同時,你的客戶端也要支持SSL才行。
注意:當心啓用此項.VSFTPD不保證OpenSSL庫的安全性。啓用此項,你必須確信你安裝的OpenSSL庫是安全的。
默認值:NO
ssl_sslv2
要激活ssl_enable才能啓用它。若是啓用,將允許SSL V2協議的鏈接。TLS V1鏈接將是首選。
默認值:NO
ssl_sslv3
要激活ssl_enable才能啓用它。若是啓用,將允許SSL V3協議的鏈接。TLS V1鏈接將是首選。
默認值:NO
ssl_tlsv1
要激活ssl_enable才能啓用它。若是啓用,將允許TLS V1協議的鏈接。TLS V1鏈接將是首選。
默認值:YES
syslog_enable
若是啓用,系統log將取代vsftpd的log輸出到/var/log/vsftpd.log.FTPD的了log工具將不工做。
默認值:NO
tcp_wrappers
若是啓用,vsftpd將被tcp_wrappers所支持。進入的(incoming)鏈接將被tcp_wrappers訪問控制所反饋。若是tcp_wrappers設置了
VSFTPD_LOAD_CONF環境變量,那麼vsftpd將嘗試調用這個變量所指定的配置。
默認值:NO
text_userdb_names
默認狀況下,在文件列表中,數字ID將被顯示在用戶和組的區域。你能夠編輯這個參數以使其使用數字ID變成文字。爲了保證FTP性能,默認
狀況下,此項被關閉。
默認值:NO
tilde_user_enable
若是啓用,vsftpd將試圖解析相似於~chris/pics的路徑名(一個"~"(tilde)後面跟着個用戶名)。注意,vsftpd有時會一直解析路徑名"~"和"~/"(在這裏,~被解析成內部登陸目錄)。
~用戶路徑(~user paths)只有在當前虛根下找到/etc/passwd文件時才被解析。
默認值:NO
use_localtime
若是啓用,vsftpd在顯示目錄資源列表的時候,在顯示你的本地時間。而默認的是顯示GMT(格林尼治時間)。經過MDTM FTP命令來顯示時間的話也會被這個設置所影響。
默認值:NO
use_sendfile
一個內部設定,用來測試在你的平臺上使用sendfile()系統呼叫的相關好處(benefit).
默認:YES
userlist_deny
這個設置在userlist_enable被激活後能被驗證。若是你設置爲NO,那麼只有在userlist_file裏明確列出的用戶才能登陸。
若是是被拒絕登陸,那麼在被詢問密碼前,用戶就將被系統拒絕。
默認值:YES
userlist_enable
若是啓用,vsftpd將在userlist_file裏讀取用戶列表。若是用戶試圖以文件裏的用戶名登陸,那麼在被詢問用戶密碼前,他們就將被系統拒絕。
這將防止明文密碼被傳送。參見userlist_deny。
默認值:NO
virtual_use_local_privs
若是啓用,虛擬用戶將擁有和本地用戶同樣的權限。默認狀況下,虛擬用戶就擁有和匿名用戶同樣的權限,然後者每每有更多的限制(特別是寫權限)。
默認值:NO
write_enable
這決定是否允許一些FTP命令去更改文件系統。這些命令是STOR, DELE, RNFR, RNTO, MKD, RMD, APPE 和 SITE。
默認值:NO
xferlog_enable
若是啓用,一個log文件將詳細紀錄上傳和下載的信息。默認狀況下,這個文件是/var/log/vsftpd.log,但你也能夠經過更改vsftpd_log_file來指定其默認位置。
默認值:NO (但在範例配置文件中,啓用了這一項)
xferlog_std_format
若是啓用,log文件將以標準的xferlog格式寫入(wu-ftpd使用的格式),以便於你用現有的統計分析工具進行分析。但默認的格式具備更好的可讀性。默認狀況下,log文件是在/var/log/xferlog。
可是,你能夠經過修改xferlog_file來指定新路徑。
默認值:NO
======
數字選項
如下是數字配置項。這些項必須設置爲非負的整數。爲了方便umask設置,允許輸入八進制數,那樣的話,數字必須以0開始。
accept_timeout
超時,以秒爲單位,設定遠程用戶以被動方式創建鏈接時最大嘗試創建鏈接的時間。
默認值:60
anon_max_rate
對於匿名用戶,設定允許的最大傳送速率,單位:字節/秒。
默認值:0 (無限制)
anon_umask
爲匿名用戶建立的文件設定權限。注意:若是你想輸入8進制的值,那麼其中的0不一樣於10進制的0。
默認值:077
connect_timeout
超時。單位:秒。是設定遠程用戶必須迴應PORT類型數據鏈接的最大時間。
默認值:60
data_connection_timeout
超時,單位:秒。設定數據傳輸延遲的最大時間。時間一到,遠程用戶將被斷開鏈接。
默認值:300
file_open_mode
對於上傳的文件設定權限。若是你想被上傳的文件可被執行,umask要改爲0777。
默認值:0666
ftp_data_port
設定PORT模式下的鏈接端口(只要connect_from_port_20被激活)。
默認值:20
idle_session_timeout
超時。單位:秒。設置遠程客戶端在兩次輸入FTP命令間的最大時間。時間一到,遠程客戶將被斷開鏈接。
默認值:300
listen_port
若是vsftpd處於獨立運行模式,這個端口設置將監聽的FTP鏈接請求。
默認值:21
local_max_rate
爲本地認證用戶設定最大傳輸速度,單位:字節/秒。
默認值:0(無限制)
local_umask
設置本地用戶建立的文件的權限。注意:若是你想輸入8進制的值,那麼其中的0不一樣於10進制的0。
默認值:077
max_clients
若是vsftpd運行在獨立運行模式,這裏設置了允許鏈接的最大客戶端數。再後來的用戶端將獲得一個錯誤信息。
默認值:0(無限制)
max_per_ip
若是vsftpd運行在獨立運行模式,這裏設置了允許一個IP地址的最大接入客戶端。若是超過了最大限制,將獲得一個錯誤信息。
默認值:0(無限制)
pasv_max_port
指定爲被動模式數據鏈接分配的最大端口。可用來指定一個較小的範圍以配合防火牆。
默認值:0(使用任何端口)
pasv_min_port
指定爲被動模式數據鏈接分配的最小端口。可用來指定一個較小的範圍以配合防火牆。
默認值:0(使用任何端口)
trans_chunk_size
你通常不須要改這個設置。但也能夠嘗試改成如8192去減少帶寬限制的影響。
默認值:0(讓vsftpd自行選擇)
===========
STRING 配置項
如下是STRING 配置項
anon_root
設置一個目錄,在匿名用戶登陸後,vsftpd會嘗試進到這個目錄下。若是失敗則略過。
默認值:無
banned_email_file
deny_email_enable啓動後,匿名用戶若是使用這個文件裏指定的E-MAIL密碼登陸將被拒絕。
默認值:/etc/vsftpd.banned_emails
banner_file
設置一個文本,在用戶登陸後顯示文本內容。若是你設置了ftpd_banner,ftpd_banner將無效。
默認值:無
chown_username
改變匿名用戶上傳的文件的全部者。需設定chown_uploads。
默認值:ROOT
chroot_list_file
這個項提供了一個本地用戶列表,表內的用戶登陸後將被放在虛根下,並鎖定在home目錄。這須要chroot_list_enable項被啓用。
若是chroot_local_user項被啓用,這個列表就變成一個不將列表裏的用戶鎖定在虛根下的用戶列表了。
默認值:/etc/vsftpd.chroot_list
cmds_allowed
以逗號分隔的方式指定可用的FTP命令(post login. USER, PASS and QUIT 是始終可用的命令)。
其餘命令將被屏蔽。這是一個強有力的locking down一個FTP服務器的手段。例如:cmds_allowed=PASV,RETR,QUIT
默認值:無
deny_file
這能夠設置一個文件名或者目錄名式樣以阻止在任何狀況下訪問它們。並非隱藏它們,而是拒絕任何試圖對它們進行的操做(下載,改變目錄層,
和其餘有影響的操做)。這個設置很簡單,並且不會用於嚴格的訪問控制-文件系統權限將優先生效。然而,這個設置對肯定的虛擬用戶設置頗有用。
特別是若是一個文件能多個用戶名訪問的話(多是經過軟鏈接或者硬鏈接),那就要拒絕全部的訪問名。
建議你爲使用文件系統權限設置一些重要的安全策略以獲取更高的安全性。如deny_file={*.mp3,*.mov,.private}
默認值:無
dsa_cert_file
這個設置爲SSL加密鏈接指定了DSA證書的位置。
默認值:無(有一個RSA證書就夠了)
email_password_file
在設置了secure_email_list_enable後,這個設置能夠用來提供一個備用文件。
默認值:/etc/vsftpd.email_passwords
ftp_username
這是用來控制匿名FTP的用戶名。這個用戶的home目錄是匿名FTP區域的根。
默認值:ftp
ftpd_banner
當一個鏈接首次接入時將現實一個歡迎界面。
默認值:無(默認的界面會被顯示)
guest_username
參見相關設置guest_enable。這個設置設定了遊客進入後,其將會被映射的名字。
默認:ftp
hide_file
設置了一個文件名或者目錄名列表,這個列表內的資源會被隱藏,無論是否有隱藏屬性。但若是用戶知道了它的存在,
將可以對它進行徹底的訪問。hide_file裏的資源和符合hide_file指定的規則表達式的資源將被隱藏。vsftpd的
規則表達式很簡單,例如hide_file={*.mp3,.hidden,hide*,h?}
默認值:無
listen_address
若是vsftpd運行在獨立模式下,本地接口的默認監聽地址將被這個設置代替。
須要提供一個數字化的地址。
默認值:無
listen_address6
若是vsftpd運行在獨立模式下,要爲IPV6指定一個監聽地址(若是listen_ipv6被啓用的話)。
須要提供一個IPV6格式的地址。
默認值:無
local_root
設置一個本地(非匿名)用戶登陸後,vsftpd試圖讓他進入到的一個目錄。若是失敗,則略過。
默認值:無
message_file
當進入一個新目錄的時候,會查找這個文件並顯示文件裏的內容給遠程用戶。dirmessage_enable需啓用。
默認值:.message
nopriv_user
這是vsftpd作爲徹底無特權的用戶的名字。這是一個專門的用戶,比nobody更甚。用戶nobody每每用來在一些機器上作一些重要的事情。
默認值:nobody
pam_service_name
設定vsftpd將要用到的PAM服務的名字。
默認值:ftp
pasv_address
當使用PASV命令時,vsftpd會用這個地址進行反饋。須要提供一個數字化的IP地址。
默認值:無(地址將取自進來(incoming)的鏈接的套接字)
rsa_cert_file
這個設置指定了SSL加密鏈接須要的RSA證書的位置。
默認值:/usr/share/ssl/certs/vsftpd.pem
secure_chroot_dir
這個設置指定了一個空目錄,這個目錄不允許ftp user寫入。在vsftpd不但願文件系統被訪問時,目錄爲安全的虛根所使用。
默認值: /usr/share/empty
ssl_ciphers
這個設置將選擇vsftpd爲加密的SSL鏈接所用的SSL密碼。詳細信息參見ciphers。
默認值:DES-CBC3-SHA
user_config_dir
這個強大的設置允許覆蓋一些在手冊頁中指定的配置項(基於單個用戶的)。用法很簡單,最好結合範例。若是你把user_config_dir
改成/etc/vsftpd_user_conf,那麼以chris登陸,vsftpd將調用配置文件/etc/vsftpd_user_conf/chris。
默認值:無
user_sub_token
這個設置將依據一個模板爲每一個虛擬用戶建立home目錄。例如,若是真實用戶的home目錄經過guest_username爲/home/virtual/$USER 指定,
而且user_sub_token設置爲 $USER ,那麼虛擬用戶fred登陸後將鎖定在/home/virtual/fred下。
默認值:無
userlist_file
當userlist_enable被激活,系統將去這裏調用文件。
默認值:/etc/vsftpd.user_list
vsftpd_log_file
只有xferlog_enable被設置,而xferlog_std_format沒有被設置時,此項才生效。這是被生成的vsftpd格式的log文件的名字。
dual_log_enable和這個設置不能同時啓用。若是你啓用了syslog_enable,那麼這個文件不會生成,而只產生一個系統log.
默認值:/var/log/vsftpd.log
xferlog_file
這個設置是設定生成wu-ftpd格式的log的文件名。只有啓用了xferlog_enable和xferlog_std_format後才能生效。
但不能和dual_log_enable同時啓用。
默認值:/var/log/xferlog
三、未完成的實驗
his example should quickly show you the possibilites of per-IP configuration
with vsftpd's tcp_wrappers integration. This is new with v1.1.3.
To use this, you need vsftpd built with tcp_wrappers! This is accomplished
by editing "builddefs.h" and changing
#undef VSF_BUILD_TCPWRAPPERS
to
#define VSF_BUILD_TCPWRAPPERS
And then rebuild. If you are lucky your vendor will have shipped the vsftpd
binary with this already done for you.
Next, to enable tcp_wrappers integration, you need this in your vsftpd.conf:
tcp_wrappers=YES
And you'll need a tcp_wrappers config file. An example one is supplied in this
directory: hosts.allow. It lives at /etc/hosts.allow.
Let's have a look at the example:
vsftpd: 192.168.1.3: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap.conf
vsftpd: 192.168.1.4: DENY
The first line:
If a client connects from 192.168.1.3, then vsftpd will apply the vsftpd
config file /etc/vsftpd_tcp_wrap.conf to the session! These settings are
applied ON TOP of the default vsftpd.conf.
This is obviously very powerful. You might use this to apply different
access restrictions for some IPs (e.g. the ability to upload).
Or you could give certain classes of IPs the ability to skip connection
limits (max_clients=0).
Or you could increase / decrease the bandwidth limiter for certain classes
of IPs.
You get the point :-)
The second line:
Denies the ability of 192.168.1.4 to connect. Very useful to take care of
troublemakers. And now you don't need xinetd to do it - hurrah.
This example shows how you might set up virtual hosts. Virtual hosting is
where different clients access your machine on different IP addresses (virtual
IPs) and get redirected to different ftp sites.
For example, if your machine responds to two IPs - 127.0.0.1 and 127.0.0.2,
you could have the two different IPs represent two totally different FTP sites.
For this example, we are going to build on the "INTERNET_SITE" example.
Step 1) Set up a virtual IP address.
ifconfig eth0:1 192.168.1.10 up
(the standard IP address is 192.168.1.2)
(note - this isn't quite complete, the route for local connects hasn't been
added, but it will do for now)
Step 2) Create a user / location for the new virtual site.
useradd -d /var/ftp_site2 ftp_site2
chown root.root /var/ftp_site2
chmod a+rx /var/ftp_site2
umask 022
mkdir /var/ftp_site2/pub
echo "test" > /var/ftp_site2/pub/content
Step 3) Modify the existing site to respond to the primary IP.
Edit /etc/xinetd.d/vsftpd, and add the config line:
This example shows how you might set up virtual hosts. Virtual hosting is
where different clients access your machine on different IP addresses (virtual
IPs) and get redirected to different ftp sites.
For example, if your machine responds to two IPs - 127.0.0.1 and 127.0.0.2,
you could have the two different IPs represent two totally different FTP sites.
For this example, we are going to build on the "INTERNET_SITE" example.
Step 1) Set up a virtual IP address.
ifconfig eth0:1 192.168.1.10 up
(the standard IP address is 192.168.1.2)
(note - this isn't quite complete, the route for local connects hasn't been
added, but it will do for now)
Step 2) Create a user / location for the new virtual site.
useradd -d /var/ftp_site2 ftp_site2
chown root.root /var/ftp_site2
chmod a+rx /var/ftp_site2
umask 022
mkdir /var/ftp_site2/pub
echo "test" > /var/ftp_site2/pub/content
Step 3) Modify the existing site to respond to the primary IP.
Edit /etc/xinetd.d/vsftpd, and add the config line:
bind = 192.168.1.2
Step 4) Create the new site, responding on the virtual IP.
cp /etc/xinetd.d/vsftpd /etc/xinetd.d/vsftpd2
Edit vsftpd2, and change
- The bind line to refer to the IP address 192.168.1.10
- Add the line
server_args = /etc/vsftpd_site2.conf
This launches this FTP site with a different vsftpd configuration file.
cp /etc/vsftpd.conf /etc/vsftpd_site2.conf
Add two lines:
ftp_username=ftp_site2
ftpd_banner=This is the alternative FTP site.
Step 5) Restart xinetd and test!
/etc/rc.d/init.d/xinetd restart
[chris@localhost vsftpd]$ ftp 192.168.1.2
Connected to 192.168.1.2 (192.168.1.2).
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
Name (192.168.1.2:chris): [chris@localhost vsftpd]$
[chris@localhost vsftpd]$ ftp 192.168.1.2
Connected to 192.168.1.2 (192.168.1.2).
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
Name (192.168.1.2:chris):
530 This FTP server is anonymous only.
Login failed.
ftp> quit
221 Goodbye.
[chris@localhost vsftpd]$ ftp 192.168.1.10 Connected to 192.168.1.10 (192.168.1.10). 220 This is the alternative FTP site. Name (192.168.1.10:chris): 530 This FTP server is anonymous only. Login failed. ftp>