ftp服务:基于c/s结构的文件传输协议
ftp会话属于复合tcp连接:
控制连接:tcp 21端口,发送ftp命令信息
数据连接:tcp 20端口,上传/下载数据
实验环境:
linux client
-----rhel5.9(vmnet1)----------(vmnet1)
win7 client
一、 实验要求:配置可匿名上传ftp服务
1、安装软件包
[root@server ~]# rpm -q vsftpd
package vsftpd is not installed
[root@server ~]# yum -y install vsftpd
2、修改主配置文件
[root@server ~]# vim /etc/vsftpd/vsftpd.conf
……
27 anon_upload_enable=yes //允许匿名上传
32 anon_mkdir_write_enable=yes //允许匿名创建目录
33 anon_other_write_enable=yes //允许匿名创建文件
…….
[root@server ~]# setfacl -m u:ftp:rwx /var/ftp/pub/ //修改本地权限
[root@server ~]# getfacl /var/ftp/pub/
geofact: removing leading ‘/‘ from absolute path names
# file: var/ftp/pub
# owner: root
# group: root
user::rwx
user:ftp:rwx
group::r-x
mask::rwx
other::r-x
3、启动服务
[root@server ~]# /etc/init.d/vsftpd restart
[root@server ~]# chkconfig vsftpd on
4、客户端测试(linux客户端)
[root@client ~]#
name (192.168.1.1:root): ftp
331 please specify the password.
password:
230 login successful.
ftp>
ftp> pwd //查看登录后所在的目录
257 "/"
ftp> cd pub //切换到默认的共享目录/var/ftp/pub下
250 directory successfully changed.
ftp> !ls //显示客户端当前目录下的文件
1. txt anaconda-ks.cfg desktop install.log install.log.syslog
ftp> put install.log //上传本地文件到服务器
local: install.log remote: install.log
227 entering passive mode (192,168,1,1,54,22)
150 ok to send data.
226 file receive ok.
33139 bytes sent in 0.024 seconds (1.4e+03 kbytes/s)
ftp> mkdir cheshi //在服务器上创建目录
257 "/pub/cheshi" created
ftp> ls
-rw------- 1 14 50 33139 may 03 04:15 install.log
drwx------ 2 14 50 4096 may 03 04:18 cheshi
到服务器端查看:
[root@server ~]# ls /var/ftp/pub/
1.txt af.txt cheshi install.log jwl mysql02.txt test test.txt
二、配置本地用户访问,禁止匿名登录;验证黑白名单;
1、安装软件包略:创建用户
[root@server ~]# useradd kaka //创建用户
[root@server ~]# useradd haha
[root@server ~]# useradd xixi
[root@server ~]# echo "123" | passwd --stdin kaka //设置密码,免交互
changing password for user kaka.
passwd: all authentication tokens updated successfully.
[root@server ~]# echo "123" | passwd --stdin haha
changing password for user haha.
[root@server ~]# echo "123" | passwd --stdin xixi
changing password for user xixi.
2、修改主配置文件
[root@server ~]# vim /etc/vsftpd/vsftpd.conf //修改主配置文件
12 anonymous_enable=no //拒绝匿名用户登录
119 userlist_enable=no //不启用user_list列表文件
[root@server ~]# vim /etc/vsftpd/ftpusers //修改黑名单文件
[root@server ~]# grep kaka /etc/vsftpd/ftpusers //将kaka加入到黑名单
kaka
3、启动服务
[root@server ~]# /etc/init.d/vsftpd restart
4、测试(windows客户端)
c:\>ftp 192.168.1.1
连接到 192.168.1.1。
220 (vsftpd 2.0.5)
用户(192.168.1.1:(none)): kaka //kaka登录
密码:
530 login incorrect.
登录失败。 //已加入黑名单,拒绝登录
ftp> quit
221 goodbye.
c:\>ftp 192.168.1.1
用户(192.168.1.1:(none)): haha //haha用户
230 login successful. //登录成功
ftp> pwd
257 "/home/haha" //登录到自己的家目录
c:\>ftp 192.168.1.1
用户(192.168.1.1:(none)): xixi //xixi用户
230 login successful. //登录成功
257 "/home/xixi" //登录到自己的家目录
…..
119 userlist_enable=yes
121 userlist_deny=no
[root@server ~]# vim /etc/vsftpd/user_list
[root@server ~]# grep haha /etc/vsftpd/user_list
haha
测试:(haha用户加入白名单,kaka加入到黑名单,xixi用户无操作)
c:\>ftp 192.168.1.1
用户(192.168.1.1:(none)): kaka
530 permission denied.
登录失败。
用户(192.168.1.1:(none)): xixi
用户(192.168.1.1:(none)): haha
230 login successful. //只有白名单里的用户可以登录
三、实验要求:将上面的实验环境还原
禁锢普通用户在自己的主目录里面
更改匿名用户的站点为/data/anon_pub
更改本地用户的站点为/data/local_pub
设置匿名用户下载速率50kb/s,本地用户100kb/s
最多20个并发,每个ip地址最多2个并发
1、 安装包略
2、 修改主配置文件
[root@server ~]# vim /etc/vsftpd/vsftpd.conf
……
122 chroot_local_user=yes //禁锢在主目录
123 anon_root=/data/anon_pub //更改匿名用户的ftp根目录
124 local_root=/data/local_pub //更改本地用户的ftp根目录
125 anon_max_rate=50000 //匿名用户的最大传输速率
126 local_max_rate=100000 //本地用户的最大传输速率
127 max_clients=20 //限制并发的客户端个数
128 max_per_ip=2 //限制每个客户机ip的并发连接数
[root@server ~]# mkdir -p /data/{anon_pub,local_pub} //创建2个目录
[root@server ~]# dd if=/dev/zero of=/data/anon_pub/anon_db bs=10m count=100 //创建大文件,用于客户端下载测试
[root@server ~]# dd if=/dev/zero of=/data/local_pub/local_db bs=10m count=100 //创建大文件,用于客户端下载测试
[root@server ~]# service vsftpd restart
3、客户端测试
[root@client ~]# wget //匿名用户下载
--2014-05-03 14:05:23-- ftp://192.168.1.1/anon_db
=> `anon_db‘
connecting to 192.168.1.1:21... 已连接。
正在以 anonymous 登录 ... 登录成功!
==> syst ... 完成。 ==> pwd ... 完成。
==> type i ... 完成。 ==> 不需要 cwd。
==> size anon_db ... 1048576000
==> pasv ... 完成。 ==> retr anon_db ... 完成。
长度:1048576000 (1000m)
0% [ ] 2,035,960 48.4k/s eta 5h 48m
[root@client ~]# wget //普通用户
--2014-05-03 14:06:56-- ftp://kaka:*password*@192.168.1.1/local_db
=> `local_db‘
正在以 kaka 登录 ... 登录成功!
==> size local_db ... 1048576000
==> pasv ... 完成。 ==> retr local_db ... 完成。
0% [ ] 6,426,872 97.7k/s eta 2h 53m
注:本文档仅为本人学习之笔记,大神请飘过,不足之处请谅解并真诚接受您的指正。谢谢。
本文出自 “” 博客,请务必保留此出处