vsftpd是Linux系统中继Wu-ftpd之后又是款优秀的、普遍使用的FTp服务器。vsftpd是very secure FTP daemon的缩写,安全性是它的一个最大的特点。虚拟用户是指在FTP上拥有账号,并且该账号只能用于文件传输服务的用户,也称作Guest用户,该类用记可通过输入账号与口令来进行授权登录,进入系统后,其登录的目录为指定目录,一般情况下,该用户既可以上传也可以下载文件。
vsftpd的虚拟用户采用单独的用户名/口令保存方式,与系统账号分离,这大大增强了系统的安全性。vsftpd可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务中如Mysql。另外,vsftpd验证虚拟用户时采用PAM方式,由于虚拟用户的的用户名/口令被单独保存,因此在验证时,vsftpd需要一个系统用户的身份来读取数据库文件或者数据库服务器来完成验证,这就是guest用户,正如匿名用户也需要一个系统用户ftp一样,其中guest用户也可以被认为是用于映射虚拟用户。
下面在Debian系统下,利用vsftpd和Mysql数据库服务器实现虚拟用户。步骤如下:
1. 安装vsftpd: apt-get install vsftpd
2. 安装mysql及libpam-mysql : apt-get install mysql-server mysql-client libpam-mysql
3. 创建ftp目录:mkdir /home/ftp #如果存在就不用创建
4. 创建本地用户(系统用户),指定家目录,并不让其登录系统:useradd –d /home/ftp –s /usr/sbin/nologin ftpguest
5. 改变其用户组:chown ftpguest.nogroup /home/ftp
6. 创建用户的根目录:mkdir /home/zhangsan
mkdir /home/lisi
mkdir /home/wangwu
注:这里的创建了三个用户的根目录,这个根目录可以根据自己定义。
7.改变用户所在的组:chown ftpguest.nogroup /home/zhangsan
chown ftpguest.nogroup /home/lisi
chown ftpguest.nogroup /home/wangwu
// 以下需要在数据库上操作
8. 登录数据库: mysql -u root -p 输入用户的密码
9. 创建数据库: create database ftpvuser //数据库的名字是ftpvuser
10. 使用ftpvuser创建用户表users:
mysql> use ftpvuser;
mysql>CREATE TABLE users (username varchar(20) NOT NULL, password varchar (40) NOT NULL, PRIMARY KEY (username)) ENGINE=MyISAM;
注://