[root@POPTOP ~]# yum install vsftpd

 

[root@ftp sbin]# service vsftpd status
vsftpd is stopped
[root@ftp sbin]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@ftp sbin]#

1.设置每次开机时自动运行及手工启动它:
chkconfig vsftpd on
service vsftpd start
netstat -tl 
可以查看ftp端口是否在侦听了!
相关配置文件:/etc/vsftpd/vsftpd.conf里面;

 

实验1、针对于匿名帐户的设置

要实现的目的:
1
、只有匿名帐户可以登陆
2
、在FTP目录下创建incoming目录  (手工)
3
、允许匿名访问,但不允许在ftp目录中创建,删除
4
、允许匿名用户在incoming目录中上传,创建,删除目录。
5
、匿名帐户上传的文件,自动变为alice所属
6
、用户空闲600秒自动中断
7
、匿名帐户最大传输速率50kbytes/sec

# vi /etc/vsftpd.conf
anonymous_enable=YES
   // 允许匿名用户登录 
local_enable=NO
   // 不允许本地用户登录
anon_upload_enable=YES
  // 允许匿名用户上传文件,本来有删除#注释 
anon_mkdir_write_enable=YES
  // 允许匿名用户创建文件夹,删除注释 
anon_other_write_enable=YES
  // 给予匿名用户写的权利   添加
idle_session_timeout=600
  设置空闲的用户对话中断时间,默认的时间为600秒  删除注释
anon_max_rate=50000
   // 匿名用户最大的上传下载速率50k



 

Vsftpd.conf文件配置完成了

linux系统上操作
# mkdir /var/ftp/incoming // 
建立incoming文件夹
# chmod go+w /var/ftp/incoming // 
给予incoming文件夹权限 g(group)o(other)其它人全有写权限
# service xinetd restart //
重启ftp服务

 

实验虚拟用户

虚拟用户:与系统无关联,不能登入系统,只能访问FTP服务器,只介绍用DB库存储用户名及密码的方式,检查安装db4相关rpm,完成正式开始

 [root@POPTOP ~]# yum install db4*

 

1:创建虚拟用户文本文件,添加虚拟用户和密码
[root@POPTOP vsftpd]# touch /etc/vsftpd/vuser.txt

[root@POPTOP vsftpd]# vi /etc/vsftpd/vuser.txt  //单行是用户名,双行是密码
     mike
     123456
     john
     123456


生成动态数据库(口令库(认证)文件)

[root@POPTOP vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db

[root@POPTOP vsftpd]#

3:配置PAM文件,目的是对客户端进行验证,虚拟用户所需的PAM配置文件
      编辑/etc/pam.d/vsftpd文件,批注所有内容,后添加:
      auth                   required     pam_userdb.so   db=/etc/vsftpd/vuser
      account            required     pam_userdb.so   db=/etc/vsftpd/vuser
修改虚拟数据库文件vuser.db的权限为 600,认证文件只对用户可读可写

[root@POPTOP vsftpd]# ls -l

total 60

-rw------- 1 root root   125 Mar 31 07:49 ftpusers

-rw------- 1 root root   361 Mar 31 07:49 user_list

-rw------- 1 root root  4625 Jul 27 15:31 vsftpd.conf

-rwxr--r-- 1 root root   338 Mar 31 07:49 vsftpd_conf_migrate.sh

-rw-r--r-- 1 root root 12288 Jul 27 16:30 vuser.db

-rw-r--r-- 1 root root    24 Jul 27 16:08 vuser.txt

[root@POPTOP vsftpd]# chmod 600 vuser.db

[root@POPTOP vsftpd]# ls -l

total 60

-rw------- 1 root root   125 Mar 31 07:49 ftpusers

-rw------- 1 root root   361 Mar 31 07:49 user_list

-rw------- 1 root root  4625 Jul 27 15:31 vsftpd.conf

-rwxr--r-- 1 root root   338 Mar 31 07:49 vsftpd_conf_migrate.sh

-rw------- 1 root root 12288 Jul 27 16:30 vuser.db

-rw-r--r-- 1 root root    24 Jul 27 16:08 vuser.txt

[root@POPTOP vsftpd]#

5:增加一个实体用户vuser ,使用它来对应所有虚拟用户,虚拟用户使用实体用户来访问ftp服务器。
 [root@POPTOP var]# useradd -d /var/ftp/vuser vuser   //增加一个实体用户

[root@POPTOP var]# mkdir /var/ftp/vuser

mkdir: cannot create directory `/var/ftp/vuser': File exists  //系统里已经有了

[root@POPTOP var]# cd ftp

[root@POPTOP ftp]# ls

incoming  pub  vuser

[root@POPTOP ftp]# ls -l

total 24

drwxrwxrwx 2 root  root  4096 Jul 27 15:34 incoming

drwxr-xr-x 2 root  root  4096 Mar 31 07:49 pub

drwx------ 4 vuser vuser 4096 Jul 27 16:44 vuser

[root@POPTOP ftp]# chown vuser.vuser /var/ftp/vuser  //未发生变化,也就是说这一步不用做

[root@POPTOP ftp]# ls -l

total 24

drwxrwxrwx 2 root  root  4096 Jul 27 15:34 incoming

drwxr-xr-x 2 root  root  4096 Mar 31 07:49 pub

drwx------ 4 vuser vuser 4096 Jul 27 16:44 vuser 

[root@POPTOP ftp]# 
 6:修改vsftpd.conf配置文件,使虚拟用户可以访问vsftpd服务器

这几行都是增加的:
      guest_enable=YES                ####激活虚拟账户
      guest_username=vuser           ####把虚拟账户绑定为实体账户vuser
      pam_service_name=vsftpd        ####使用PAM验证
控制虚拟用户的访问
   1):设置虚拟用户的主配置文件,编辑vsftpd.conf文件,激活:
      user_config_dir=/etc/vsftpd/vsftpd_user_conf   //添加
   2建立vsftpd_user_conf
     mkdir   /etc/vsftpd/vsftpd_user_conf
   3):设置虚拟用户配置文件,与虚拟账户同名
      touch  /etc/vsftpd/vsftpd_user_conf/mike 
   4):编辑虚拟账户mike的配置文件mike,是虚拟账户mike获得相应的权限    
      anon_world_readable_only=NO             ###浏览FTP目录和下载 /var/ftp/vuser

      anon_upload_enable=YES                  ###上传  
      anon_mkdir_write_enable=YES              ###建立和删除目录
     anon_other_write_enable=YES              ####改名和删除文件

没有的配置项默认按照vsftpd.conf的配置内容 

注意事项:

local_enable=YES   //PAM方式此处必须为YES,如果不是将出现如下错误: 

500 OOPS: vsftpd: both local and anonymous access disabled! 

 

 

 

经过检查目录是在vuser下:

[root@POPTOP vuser]# pwd

/var/ftp/vuser

[root@POPTOP vuser]# ls

aaa  Big Big World.mp3  ddd

[root@POPTOP vuser]#

 

5FTP服务器的资源限制
  max_clients=100      允许最大的客户端连接数
  max_per_ip=5        同一IP最大客户端的连接数
  local_max_rate=5000000       设置本地用户最大传输数率
  anon_max_rate=2000000       匿名用户最大的传输数率

 

速度限制测试:

[root@POPTOP vuser]# vi /etc/vsftpd/vsftpd_user_conf/mike

anon_world_readable_only=no

anon_upload_enable=yes

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

anon_max_rate=1000000  //大概速度控制在900k左右

 

修改mike的配置文件

anon_max_rate=100000  //速度是100kB/sec

anon_max_rate=500000  //速度500KB/sec

 

 

修改用户名 密码测试

用户名没有修改,只是修改密码

1.[root@POPTOP vsftpd]# vi /etc/vsftpd/vuser.txt  //单行是用户名,双行是密码
     mike
     123456mike
     john
     123456


重新生成动态数据库(口令库(认证)文件)

[root@POPTOP vsftpd]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db

重新启动vsftpd

[root@POPTOP vsftpd]#service vsftpd restart

Ok了。

 

VsFTP出现500 OOPS: cannot change directory的解决办法

 

2008-07-05 16:04

C:\Documents and Settings\Administrator.KANGDA>ftp 192.168.0.93
Connected to 192.168.0.93.
220 (vsFTPd 2.0.5)
User (192.168.0.93:(none)): user
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/var/ftp/share
Login failed.
ftp> quit

解决方法:

在终端输入命令:
setsebool ftpd_disable_trans 1 
service vsftpd restart
就OK了!