您查看的文章来源于http://www.oklinux.cn
三、 配置虚拟用户
VSFTPD的本地用户本身是系统的用户,除了可以登录FTP服务器外,还可以登录系统使用其他系统资源,而VSFTPD的虚拟用户则是FTP服务的专用用户,虚拟用户只能访问FTP服务器资源。对于只需要通过FTP对系统有读写权限,而不需要其他系统资源的用户或情况来说,采用虚拟用户方式是很适合的。 VSFTPD的虚拟用户采用单独的用户名/口令保存方式,与系统账号(passwd/shadow)分离,这大大增强了系统的安全性。VSFTPD可以采用数据库文件来保存用户/口令,如hash;也可以将用户/口令保存在数据库服务器中,如MySQL等。VSFTPD验证虚拟用户,则采用PAM方式。由于虚拟用户的用户名/口令被单独保存,因此在验证时,VSFTPD需要用一个系统用户的身份来读取数据库文件或数据库服务器以完成验证,这就是guest用户,这正如同匿名用户也需要有一个系统用户ftp一样。当然,guest用户也可以被认为是用于映射虚拟用户。
配置虚拟用户分为几部分:guest用户的创建、用户/口令的保存、PAM认证配置、vsftpd.conf文件设置等。
1、 guest用户的创建
useradd -d /home/ftpsite virtual
2、 用户/口令的保存
1)mysql 该命令在 /usr/local/mysql/bin中。
2)create database vsftpd; 创建一个数据库,注意SQL语句以分号结尾。
3)use vsftpd; 打开刚建的数据库。
4)create table users (id int AUTO_INCREMENT NOT NULL,name char(16) binary NOT NULL,passwd char(48) binary NOT NULL,primary key(id)); 建一张表,两个字段。
5)create table logs (msg varchar(255), user char(16), pid int, host char(32), rhost char(32), logtime timestamp ); 建一张表,两个字段。
6)quit
7)mysql
8)grant select on vsftpd.users to virtual@localhost identified by 'adm0509';
grant insert on vsftpd.logs to virtual@localhost identified by 'adm0509';
第一行意思为,允许virtual用户在本地对vsftpd.users表可以执行select命令。并设置密码。
第二行意思为,允许virtual用户在本地对vsftpd.logs表可以执行insert命令。并设置密码。
注意此处的密码要与以下配置的PAM认证中的密码保持一致。
9)use vsftpd
10)insert into users (name,passwd) values('lyjjr1','abc');
insert into users (name,passwd) values('lyjjr2','bcd');
向表内加入两个帐号及密码。
11)select * from users;
如果能看到表内容就表示正常了。
3、 PAM认证配置
1)把源包考到 /usr/src/pam_mysql-0.7RC1.tar.gz
2)tar zxvf pam_mysql-0.7RC1.tar.gz
3)cd pam_mysql-0.7RC1
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
4)./configure --with-openssl
5)make
6)make install