1,需要的软件包
1),vsftpd
very secure FTP daemon
2),mysql-server,mysql-client
前者是MySQL数据库服务器,用于存储虚拟用户信息,后者提供一个命令行的MySQL Client. 由于我之前配置postfix时,已经安装过了MySQL,所以我不必安装这个包了^_^
3),libpam-mysql
vsftpd是通过PAM验证用户信息的,这个包可以让PAM去读取MySQL完成验证.
2,安装
以root登录Debian,输入以下命令,搞定~
代码:#apt-get install vsftpd,libpam-mysql
3,创建一个必要的本地用户
虽说是虚拟用户,不过,由于虚拟用户的信息存储在MySQL数据库中,所以还是需要一个能够读取MySQL数据库的本地用户.
1),创建本地用户的家目录,此目录也是FTP的家目录
代码:#mkdir /home/ftp
2),创建名为ftpguest的本地用户
代码:#useradd ftpguest -d /home/ftp
3),修改FTP家目录的所有者和组
代码:#chown ftpguest.nogroup /home/ftp
4,配置MySQL数据库
1),创建用于存储虚拟用户信息的数据库ftpvuser
代码:#mysqladmin -u root -p create ftpvuser
2),连接数据库
代码:#mysql -u root -p
3)创建用于存储虚拟用户信息的表users
代码:mysql>use ftpvuser;
mysql>CREATE TABLE users (username varchar(20) NOT NULL,password varchar(40) NOT NULL,PRIMARY KEY (username)) TYPE=MyISAM;
4)让本地用户ftpguest能读取ftpvuser数据库的users表的内容
注:YourPassword用于设定ftpguest访问数据库的密码.
代码:mysql>grant select on ftpvuser.users to ftpguest@localhost identified by ‘YourPassword’;
mysql>flush privileges;
5),建立虚拟用户
代码:mysql>insert into users (username,password) values (‘normal’,’555555′);
mysql>insert into users (username,password) values (‘admin’,’666666′);
mysql>insert into users (username,password) values (‘webmaster’,’777777′);
6),完成MySQL的配置
代码:mysql>quit;
5,配置vsftpd的PAM验证
1),打开PAM配置文件
代码:#nano /etc/pam.d/vsftpd
2),将以前的内容注释掉,然后添加下面2行内容
注:YourPassword就是刚才在前面设定的ftpguest访问数据库的密码.
代码:auth required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0
account required pam_mysql.so user=ftpguest passwd=YourPassword host=localhost db=ftpvuser table=users usercolumn=username passwdcolumn=password crypt=0
6,配置vsftpd
1),打开vsftpd的配置文件
代码:#nano /etc/vsftpd.conf注意:一旦修改了/etc/vsftpd.conf文件的内容,必须重启vsftpd才能使新的设置生效,方法是:
代码:#/etc/init.d/vsftpd stop
#/etc/init.d/vsftpd start直接#/etc/init.d/vsftpd restart,好像不起作用?
2),修改vsftpd.conf文件如下
listen=YES
# 关闭匿名FTP登录
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
# 禁止用户跳出自己的目录
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
# My config to add virtual users support.
guest_enable=YES
guest_username=vuser
local_root=/home/vuser/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd_user_conf
建立新用户
1. 在accounts表中加入用户。运行SQL
INSERT INTO `accounts` (`username`, `pass`) VALUES (‘testuser’, ‘testpw’);
2. sudo mkdir –p /home/vuser/testuser
3. sudo chown vuser:vuser /home/vuser/testuser