问题描述:

根据公司的业务发展要求,需要面向Internet 搭建一台FTP文件服务器,以提供公测软件、市场资料的下载,以及员工的一些资源上传分享。同时,需要对用户下载/上传流量进行控制。

1.开放匿名访问,任何人都可以下载服务器/var/ftp/目录下的资料,而且可以向服务器的/var/ftp/pub上传文件。

2.允许服务器的系统用户通过FTP方式访问宿主目录,但禁止访问其他目录。

3.最多允许100个并发用户连接,其中来自相同IP地址的并发连接不超过5个。

4.匿名访问此FTP服务时,最大传输速度限制为100KB/s;系统用户访问此FTP服务时,最大传输速度限制为200KB/s

解决方案:

 根据需求把一台ip192.168.10.1的主机作为ftp服务器,另外把一台ip192.168.10.2rhel5的主机和ip192.168.10.3win7主机作为测试机

搭建过程:

1,查看vsftpd软件是否安装

[root@localhost ~]# rpm -qi vsftpd

package vsftpd is not installed……软件没有安装

2,安装软件

[root@localhost ~]# yum install -y vsftpd

3,软件安装完毕默认开启匿名用户的下载功能,但是没有上传功能;而本地用户具有上传/下载功能;默认配置如下:

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

#anon_upload_enable=YES

配置匿名用户的上传功能:(去掉anon_upload_enable前的#

anon_upload_enable=YES

4, 其他配置

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

chroot_local_user=YES……允许服务器的系统用户通过FTP方式访问宿主目录,但禁止访问其他目                             录

max_clients=100……最多允许100个并发用户连接

max_per_ip=5……来自相同IP地址的并发连接不超过5

anon_max_rate=100000……匿名用户最大传输速度限制为100KB/s

local_max_rate=200000……系统用户最大传输速度限制为200KB/s

5, 配置完成启动服务

[root@localhost ~]# servicevsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]

[root@localhost ~]# chkconfigvsftpd on

[root@localhost ~]# chkconfig --list vsftpd

vsftpd         0:off   1:off   2:on   3:on    4:on    5:on   6:off

6,设置匿名用户对pub文件夹的acl

[root@localhost ~]# ls -ld /var/ftp/pub/

drwxr-xr-x 2 root root 4096 2012-09-25 /var/ftp/pub/

[root@localhost ~]# setfacl-m u:ftp:rwx /var/ftp/pub/

[root@localhost ~]# getfacl /var/ftp/pub/

getfacl: Removing leading '/' from absolute pathnames

# file: var/ftp/pub

# owner: root

# group: root

user::rwx

user:ftp:rwx

group::r-x

mask::rwx

other::r-x

7, /var/ftp/pub中新建一个20M的文件

[root@localhost ~]# dd if=/dev/zeroof=/var/ftp/pub/test.db bs=1M count=30

30+0 records in

30+0 records out

31457280 bytes (31 MB) copied, 0.040515 seconds, 776MB/s

[root@localhost ~]# ls /var/ftp/pub/test.db -lh

-rw-r--r-- 1 root root 30M Mar  2 16:26 /var/ftp/pub/test.db

8, linux客户机上验证

匿名用户登录

[root@localhost ~]# ftp 192.168.1.1

Connected to 192.168.1.1.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.1.1:root): ftp

331 Please specify the password.

Password:……无密码

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

下载文件

[root@localhost ~]# wget ftp://192.168.10.1/pub/test.db

--2014-03-02 19:45:41--  ftp://192.168.10.1/pub/test.db

         => `test.db'

Connecting to 192.168.10.1:21... connected.

Logging in as anonymous ... Logged in!

==> SYST ... done.    ==> PWD ... done.

==> TYPE I ... done.  ==> CWD /pub ... done.

==> SIZE test.db ... 52428800

==> PASV ... done.    ==> RETR test.db ... done.

Length: 52428800 (50M)

12% [=======>             ]12,189,625         98.7k/s          eta  10m     50s

用户登录

[root@localhost ~]# ftp 192.168.10.1

Connected to 192.168.10.1.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (192.168.10.1:root): lili

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

用户下载

[root@localhost Server]# dd if=/dev/zeroof=/home/bob/test.db bs=1M count=50

[root@localhost ~]# wget ftp://bob:123@192.168.10.1/test.db

--2014-03-02 19:54:56--  ftp://bob:*password*@192.168.10.1/test.db

         => `test.db'

Connecting to 192.168.10.1:21... connected.

Logging in as bob ... Logged in!

==> SYST ... done.    ==> PWD ... done.

==> TYPE I ... done.  ==> CWD not needed.

==> SIZE test.db ... 52428800

==> PASV ... done.    ==> RETR test.db ... done.

Length: 52428800 (50M)

3% [>                                      ]1,977,664    196K/s  eta 4m 11s

9,win7上测试

匿名用户登录,并上传文件

匿名用户下载测试

用户登录并下载文件

注意:1,两条下载命令的使用,后面跟的是ftp的根目录

匿名:# wgetftp://192.168.1.1/var/ftp/pub/test.db

用户:wget

     2,在win7浏览器用用户模式下载用户ftp根目录资料

       

     3win7UNC路径访问用户ftp根目录

       

     4,在Linux主机上可以用lftp ip地址访问ftp目录并用get/put下载或者上传文件