一 下载、安装
1. http://vsftpd.beasts.org/
2.
#tar zxvf vsftpd-2.2.2.tar.gz
#cd vsftpd-2.2.2
#make
#mkdir /usr/local/man/man5/
#make install
3.
#cp vsftpd.conf /etc
#cp RedHat/vsftpd.pam /etc/pam.d/ftp
二 做成服务
1. 通过which命令可以查找执行位置
#which vsftpd
/usr/local/sbin/vsftpd
2. 写一个VSFTPD启动教本:
# vim /etc/init.d/vsftpd
===========+=============+===========
#!/bin/sh
# Copyright (c) 2004 by null
# All rights reserved.
#
# chkconfig: - 110 30
# description: Starts and stops the Vsftpd Service
# config: /etc/vsftpd.conf
#
case "$1" in
start)
/usr/local/sbin/vsftpd &
;;
stop)
killall -9 vsftpd
;;
restart)
killall -1 vsftpd
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
===========+=============+===========
# chmod 755 /etc/init.d/vsftpd
三 匿名用户测试
1. 匿名用户目录需要手动建立
#finger ftp
#mkdir /var/ftp
#chown root.root /var/ftp
#chmod og-w /var/ftp
2. 匿名用户上传需要在/var/ftp 下创建一个子目录
#mkdir /var/ftp/incoming
#chgrp ftp /var/ftp/incoming
#chmod g+w /var/ftp/incoming
3. 必须打开的配置
#vim /etc/vsftpd.conf
listen=YES #监听模式,独立模式
anonymous_enable=YES #允许匿名登陆
write_enable=YES #允许客户端写命令
anon_umask=077 #匿名用户新增文件的umask 数值。默认值为077。
anon_upload_enable=YES #允许匿名用户上传文件
anon_mkdir_write_enable=YES #允许匿名用户创建目录
anon_other_write_enable=YES #匿名用户可删除目录和文件
anon_world_readable_only=NO #允许匿名用户下载,默认是禁止的
四 端口、带宽、线程设置
listen_port=3000 #设置ftp端口为3000
pasv_enable=YES #开启被动模式
pasv_min_port=2000 #限制数据端口范围
pasv_max_port=2099 #
anon_max_rate=100000 #限制虚拟帐号下载速率
local_max_rate=100000 #限制本地帐号下载速率100KB
max_per_ip=5 #同时只能有5线程在下载
五 虚拟账号设置
1 创建FTP虚拟账号
# useradd -d /ew/ftpsite -s /sbin/nologin virtual
2 在mysql中,建库、建表、设置权限
CREATE DATABASE `vsftpd` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `vsftpd`;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL auto_increment,
`name` char(16) NOT NULL,
`passwd` char(48) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `logs` (
`msg` varchar(255) default NULL,
`user` char(16) default NULL,
`pid` int(11) default NULL,
`host` char(32) default NULL,
`rhost` char(32) default NULL,
`logtime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
insert into users (name,passwd) values('tom','foo');
insert into users (name,passwd) values('jerry','bar');
grant select on vsftpd.users to vftp@localhost identified by '123456';
grant insert on vsftpd.logs to vftp@localhost identified by '123456';
3 安装PAM包
下载地址:
http://sourceforge.net/projects/pam-mysql/
安装:
# tar zxvf pam_mysql-0.7RC1.tar.gz
# cd pam_mysql-0.7RC1
# ./configure --with-openssl
# make
# make install
4 配置
先找到pam_mysql.so的路径
#find / -name "pam_mysql.so"
/usr/lib/security/pam_mysql.so
开始配置
# vim /etc/pam.d/ftp
内容如下(注意一下实际pam_mysql.so的路径)
auth required /usr/lib/security/pam_mysql.so user=vftp passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1
account required /usr/lib/security/pam_mysql.so user=vftp passwd=123456 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1
5 vsftpd.conf配置
# vim /etc/vsftpd.conf
local_enable=YES #允许本地用户登录FTP
write_enable=YES #启用本地用户写权限
local_umask=022 #本地用户新增档案时的umask 数值。默认值为077。
chroot_local_user=YES #本地所有帐户都只能在自家目录
guest_enable=YES
guest_username=virtual
virtual_use_local_privs=YES #无此项时默认NO,YES:虚拟用户与本地用户相同的权限。NO:虚拟用户与匿名用户相同的权限
注:只有与本地用户相同权限时,write_enable、local_umask才生效
否则以anon*开头的才生效
pam_service_name=ftp #验证方式,默认值为ftp,值和/etc/pam.d/ftp 名称相同
其它设置:
file_open_mode=0666 #如希望上传的文件可以执行,值为0777.默认为0666。
6 虚拟用户个人目录设置
6.1 建立用户配置自定义目录
# mkdir /etc/vsftpd/userconf -p
6.2 指定配置目录
# vim /etc/vsftpd.conf
user_config_dir=/etc/vsftpd/userconf/
6.3 虚拟用户tom个人配置,目录指向
# vim /etc/vsftpd/userconf/tom
local_root=/ew/ftpsite/tom
6.4 创建个人目录
# mkdir /ew/ftpsite/tom
# chown virtual.virtual /ew/ftpsite/tom/
# chmod 700 /ew/ftpsite/tom
6.5 *为了防止未指向个人目录的虚拟用户访问/ew/ftpsite,看到其它用户文件
可自行新建公共目录
# mkdir /ew/ftpsite/pub
并在配置文件中指向
# vim /etc/vsftpd.conf
local_root=/ew/ftpsite/pub