Linux · 2011-07-13

debian/ubuntu安装 vsftpd+mysql虚拟用户

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