VsftpdVsftpd中Vs的意思是“Verysecure”。從名稱可以看出,軟件的編寫者非常注重其安全性。據官方網站的數據,一臺Vsftpd服務器最多可以支持1500個并發用戶。24小時可以保存2.6TB數據。Vsftpd服務器的文件結構如表1所示。
表1Vsftpd服務器的文件結構
配置文件名稱功能說明/usr/sbin/vsftpdVsftpd的主程序 /etc/rc.d/init.d/vsftpd啟動腳本/etc/vsftpd/vsftpd.conf主配置文件 /etc/pam.d/vsftpdPAM認證文件 /etc/vsftpd.ftpusers禁止使用Vsftpd的用戶列表文件 /etc/vsftpd.user_list禁止或允許使用Vsftpd的用戶列表文件 /var/ftp匿名用戶主目錄 /var/ftp/pub 匿名用戶的下載目錄/etc/logrotate.d/vsftpd.logVsftpd的日志文件
此外,還有一些說明文檔和手冊文件。
1了解日志文件
了解日志文件對于故障排除非常重要,這里介紹詳細設置方法。vsftpd與log有關的選項:
vsftpd_log_file
xferlog_enable
xferlog_std_format
xferlog_file
dual_log_enable
syslog_enable
log_ftp_protocol
no_log_lock
在介紹之前,我們來看看vsftp中關于日志記錄的參數。
xferlog_enable=yes/no//是否啟用xferlog日志格式
xferlog_std_format=yes/no//是否采用標準格式記錄日志
xferlog_file=/path/to/logfile//xferlog日志文件所在位置,默認為/var/log/xferlog
上面的參數設置記錄xferlog日志的格式。這是早期Wu-ftpd服務的日志格式,它會記錄上傳和下載的動作。vsftpd也有專有的日志格式,用下列參數設置:
dual_log_enable=yes/no//是否采用Vsftpd自己的日志記錄方式
log_ftp_protocol=yes/no//是否記錄所有的ftp命令日志vsftpd_log_file=/path/to/logfile//指定vsftpd日志文件位置,默認為/var/log/vsftpd.log,xferlog_enable的默認值為no(vsftpd提供的配置文件模版將其值改為了yes),dual_log_enable的默認值也為no,就是說默認情況下vsftpd是不記錄日志的。我們也可以將日志信息寫入系統日志/var/log/messages中,使用如下參數:
syslog_enable=yes/no
下面是一個xferlog日志文件的內容:
ThuMar408:12:3020081202.114.40.24237/incoming/index.htmla_oaguest@my.netftp0*c
第一行各個數據參數如下表
記錄數據參數說明ThuMar408:12:302008當前服務器本地時間,格式:"DDDMMMddhh:mm:ssYYYY"1傳輸文件時間,單位秒202.114.40.242遠程主機IP地址/incoming/index.html傳輸文件名稱,包括路徑a傳輸類型包括:a:ascii碼傳輸,b:二進制文件傳輸_特殊處理標志:-:沒有處理C:文件壓縮U:文件不壓縮T:文件tar格式o文件傳輸方向o:從服務器到客戶端i:從客戶端到服務器a訪問模式:a:匿名的用戶g:來賓用戶r:本地用戶即系統用戶guest@my.net用戶名稱ftp服務類型0認證方式包括:1rfc931認證0:沒有進行認證*認證用戶的idc完成狀態:c完全的傳輸轉移。i:沒有完成傳輸
2vsftp常見故障排除
1日志文件文件出現錯誤信息“500OOPS:vsftpd:notfound:directorygivenin'secure_chroot_dir':/usr/share/empty”。
解決方法:vsftpd.conf添加一行:
secure_chroot_dir=/opt/usr/share/empty
建立一個目錄
mkdir/opt/usr/share/empty
然后關閉匿名登錄把vsftpd.conf
中的anonymous_enable=YES
修改為
anonymous_enable=NO
2怎么配置vsftpd來chroot虛擬用戶?
解決方法:
當嘗試在vsftpd下chroot虛擬用戶的時候,需要這樣做:在vsftpd.conf里
guest_enable=yes
#virtualusersaremappedtouserftpwhichownsalldirs
guest_username=ftp
#chrootsthevirtualusertohisdirectory(userjoehasdirectoryjoe)
chroot_local_user=YES
user_sub_token=$USER
關鍵的事情是確保在/etc/passwd的ftp用戶的主目錄實際上包含在/var/ftp/$USER里的字符串$USER守護進程會做一個簡單的字符串匹配比較,來決定到哪里替換用戶的名字。
3vsftp中怎樣限制用戶只能在自己的home目錄下?
解決方法:
有些時候你不想讓FTP用戶可以訪問他自己home目錄之外的其他文件。vsftp守護進程可以通過chroot配置這個策略。編輯/etc/vsftpd/vsftpd.conf文件,添加一行:
chroot_local_user=YES
保存之后記得重啟vsftpd服務:
servicevsftpdrestart
重啟服務之后,FTP所有用戶都將受限制,只能訪問他們home目錄的文件了。
4如何修改vsftpd的默認根目錄/var/ftp/pub到另一個目錄?
解決方法:修改ftp的根目錄只要修改/etc/vsftpd/vsftpd.conf文件即可:
加入如下兩行:
local_root=/var/www/html
chroot_local_user=YES
重新啟動服務:
servicevsftpdrestart
任何一個用戶ftp登錄到這個服務器上都會chroot到/var/www/html目錄下。
參考文獻:
http://bsdftpd-ssl.sc.ru/doc/unix/xferlog.5.txt
http://vsftpd.beasts.org/vsftpd_conf.html
1日志文件文件出現錯誤信息“500OOPS:vsftpd:notfound:directorygivenin'secure_chroot_dir':/usr/share/empty”。解決方法:vsftpd.conf添加一行:secure_chroot_dir=/opt/usr/share/empty建立一個目錄mkdir/opt/usr/share/empty然后關閉匿名登錄把vsftpd.conf中的anonymous_enable=YES修改為anonymous_enable=NO2怎么配置vsftpd來chroot虛擬用戶?解決方法:當嘗試在vsftpd下chroot虛擬用戶的時候,需要這樣做:在vsftpd.conf里guest_enable=yes#virtualusersaremappedtouserftpwhichownsalldirsguest_username=ftp#chrootsthevirtualusertohisdirectory(userjoehasdirectoryjoe)chroot_local_user=YESuser_sub_token=$USER關鍵的事情是確保在/etc/passwd的ftp用戶的主目錄實際上包含在/var/ftp/$USER里的字符串$USER守護進程會做一個簡單的字符串匹配比較,來決定到哪里替換用戶的名字。3vsftp中怎樣限制用戶只能在自己的home目錄下?解決方法:有些時候你不想讓FTP用戶可以訪問他自己home目錄之外的其他文件。vsftp守護進程可以通過chroot配置這個策略。編輯/etc/vsftpd/vsftpd.conf文件,添加一行:chroot_local_user=YES保存之后記得重啟vsftpd服務:servicevsftpdrestart重啟服務之后,FTP所有用戶都將受限制,只能訪問他們home目錄的文件了。4如何修改vsftpd的默認根目錄/var/ftp/pub到另一個目錄?解決方法:修改ftp的根目錄只要修改/etc/vsftpd/vsftpd.conf文件即可:加入如下兩行:local_root=/var/www/htmlchroot_local_user=YES重新啟動服務:servicevsftpdrestart任何一個用戶ftp登錄到這個服務器上都會chroot到/var/www/html目錄下。
本文出自:億恩科技【www.endtimedelusion.com】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]
|