ftp软件源码包vsftpd-2.0.5.tar.gz
实现目标:
1) Upload目录可以上传,其他目录用户不能上传,仅能下载
2) 限定只有ftpuser可以登录FTP
3) 限定ftpuser登录后只能在安装时指定的目录,而不能进入其他目录
4) 限定用户ftpuser不能更改目录的文件的权限
5) 限定最大并发访问数为50,每个IP最多5个线程
6) 用户的下载速度为500KBytes/s
7) 超过600S没有动作就自动断线
8) 数据传输时超过120S没有动作自动断线
安装过程:
1.ftp软件源码包vsftpd-2.0.5.tar.gz上传到/usr/local/src下
2.在终端下,新建一个上传目录
mkdir /ftp/upload
3.改变目录的权限
chmod -R 755 /ftp/upload
4.添加一个新用户并使这个用户有root权限
useradd -d /ftp -s /sbin/nologin ftpuser
passwd ftpuser
chown ftpuser:root /ftp
5.跳转到/tmp目录下
cd /tmp
6.解压缩同时解归档
tar -xvzf vsftpd-2.0.5.tar.gz
7.跳转到vsftpd-2.0.5
cd vsftpd-2.0.5
8.编译及安装
make
make install
9.复制RedHat/vsftpd.pam到/etc/pam.d/ftp
cp RedHat/vsftpd.pam /etc/pam.d/ftp
10.新建/etc/vsftpd.conf配置文件
vi /etc/vsftpd.conf
在配置文件加入:
#绑定IP为192.168.0.188,其它IP不能访问
listen_address=192.168.0.188
#使用standalone启动vsftpd
listen=YES
#绑定到21端口
listen_port=21
#允许本地用户登陆
local_enable=YES
#全局配置可写
write_enable=YES
#用户上传的文件权限
local_umask=022
#使用20端口号来做数据传输
connect_from_port_20=YES
#锁定用户登录目录
chroot_local_user=YES
#所有用户登录目录
local_root=/ftp
#本地用户的下载速度为500KBytes/s
local_max_rate=500000
#客户端超过600S没有动作就自动断线
idle_session_timeout=600
#数据传输时超过120S没有动作自动断线
data_connection_timeout=120
#FTP欢迎信息
ftpd_banner=Welcome to FTP
#不检测SHELL
check_shell=NO
#可访问的最大client数目
max_clients=50
#每个ip的最大client数目
max_per_ip=5
#启用用户控制,vsftpd将在userlist_file里读取用户列表
userlist_enable=YES
#若userlist_deny为YES,则userlist_file中的用户将不能登录,
#为NO则只有userlist_file的用户可以登录
userlist_deny=NO
userlist_file=/etc/vsftpd.userlist
11.保存退出 :wq
12.编辑/etc下文件vsftpd.userlist
vi /etc/vsftpd.userlist
ftpuser
13.保存退出 :wq
14.服务启动
vsftpd &
15.查看服务状态
ps -A | grep vsftpd
16.测试:
--在windows打开IE输入:ftp://192.168.0.88,出现如下图1所示界面

图1
--在windows中可以拷贝文件到ftp中,整个vsftp安装过程完成.
补充:
ftp监听在21端口,启用了20端口,启用了被动模式,被动模式开启65400~65410端口
防火墙设置
# iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 65400:65410 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 65400:65410 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
# iptables -I RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
# vi /etc/sysconfig/iptables
在commit前加入:-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 65400:65410 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
# /etc/init.d/iptables restart
注意iptables要允许OUTPUT