问题描述:
根据公司的业务发展要求,需要面向Internet 搭建一台FTP文件服务器,以提供公测软件、市场资料的下载,以及员工的一些资源上传分享。同时,需要对用户下载/上传流量进行控制。
1.开放匿名访问,任何人都可以下载服务器/var/ftp/目录下的资料,而且可以向服务器的/var/ftp/pub上传文件。
2.允许服务器的系统用户通过FTP方式访问宿主目录,但禁止访问其他目录。
3.最多允许100个并发用户连接,其中来自相同IP地址的并发连接不超过5个。
4.匿名访问此FTP服务时,最大传输速度限制为100KB/s;系统用户访问此FTP服务时,最大传输速度限制为200KB/s。
解决方案:
根据需求把一台ip为192.168.10.1的主机作为ftp服务器,另外把一台ip为192.168.10.2的rhel5的主机和ip为192.168.10.3的win7主机作为测试机
搭建过程:
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根目录资料
3,win7下UNC路径访问用户ftp根目录
4,在Linux主机上可以用lftp ip地址访问ftp目录并用get/put下载或者上传文件