前面描述了一個vsftpd在linux下的快速部署方法,儘管它能完成一般的上傳下載任務,但離實際的應用還是有差距,舉例來說:比如ftp用戶可以用cd命令到根目錄等,爲了更進一步滿足實際要求,特對前文做進一步的增補。
1、下載源碼到服務器,其下載地址是ftp://vsftpd.beasts.org/users/cevans/,當前的版本是vsftpd-2.0.6.tar.gz 。強烈建議使用源碼安裝,即可擺脫類似rpm包依賴的困惑,又可以實現在不同unix/linux下自如的工作。
2、解壓安裝:tar zxvf vsftpd-2.0.5.tar.gz ; make; make install
3、添加ftp的用戶,如果用戶數目不多,簡單些,用系統用戶吧。Useradd –d /home/sery sery ;passwd ******.
4、拷貝配置文件,這裏有2個。Cp vsftpd.conf /etc/vsftpd.conf ;cp Redhat/vsftpd.pam /etc/pam.d/ftp .不拷貝vsftpd.pam這個文件,將導致ftp用戶不能登陸的問題。這個文件在debian下也是可以的。
5、修改配置文件/etc/vsftpd.conf。這個配置文件是vsftpd的關鍵所在,修改下列值,以實現不同的功能:
(1)修改的部分:把 local_enable=yes write_enable=yes和local_umask=022前面的註釋取消。
(2)增加部分:listen=YES(ftp作爲獨立的守護進程)
chroot_local_user=yes(用戶被定位在自己的主目錄裏,用cd / 並不能切換到根目錄)
cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,
PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SITE,SIZE,STOR,TYPE,USER,
ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST(只許上傳文件和目錄,但不許刪除。注意:這些必須一行寫完)
6、啓動ftp服務。Vsftpd&
我安裝完成後,卻無法運行:
報錯如下:
500 00PS: could not bind listening IPv4 socket
端口有衝突。查看下:
#netstat -utl |grep 21 是不是被佔用
還真有耶。因爲是redhat9所以想到了xinetd
因爲xinetd已經啓動了vsftpd,而vsftpd設置成了stardalone模式,所以,先停止xinetd服務, service xinetd stop ,然後:/usr/local/sbin/vsftpd &
OK啓動正常。
改端口:
在vsftpd.conf最後加:
listen_port=2121
取消anonymous 登入
anonymous_enable=NO
老大原文提到,讓用戶不能切換到別的目錄,需要添加一個文件:
vim /etc/vsftpd/chroot_list 加入你所要限制的用戶
vsftpd.conf也去掉相應的註釋:chroot_list_file=/etc/vsftpd/chroot_list