用Mysql库存储用户名及密码的方式搭建虚拟用户的vsftpd
(1)建立一个库并设置相应权限
mysql –p
mysql>create database ftpd;
mysql>use ftpd;
mysql>create table user(name char(20) binary,passwd char(20) binary);
mysql>insert into user (name,passwd) values ('test1','12345');
mysql>insert into user (name,passwd) values ('test2','54321');
mysql>grant select on ftpd.user to
ftpd@localhost identified by '123456';
//授权ftpd用户可以读ftpd数据库的users表
mysql>flush privileges;
mysql>quit
(2)下载libpam-mysql进行安装编译
下载地址如下:
http://nchc.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz # tar xzvf pam_mysql-0.5.tar.gz
# cd pam_mysql
# make
# cp pam_mysql.so /lib/security
(3)建立PAM认证信息
# vi /etc/pam.d/vsftpd ,添加如下内容(把以前的注销掉)
auth required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
account required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
//crypt表示口令字段中口令的加密方式:crypt=0,口令以明文方式(不加密)保存在数据库中;crypt=1,口令使用UNIX系统的DES加密方式加密后保存在数据库中;crypt=2,口令经过MySQL的password()函数加密后保存。
(4)建立本地虚拟用户
# useradd -d /home/ftpd -s /sbin/nologin ftpd
(5)下面就差修改vsftpd.conf文件了(尽量把匿名相关的关掉)
# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_world_readable_only=NO
chroot_local_user=YES
guest_enable=YES
guest_username=ftpd
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
virtual_use_local_privs=YES (注意这个参数)
----------------------------------------------------
virtual_use_local_privs参数:
1.当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。只需设置write_enable=YES,虚拟用户就可以就拥有写权限。
2.当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。
给不同的虚拟用户不同的权限
#mkdir /etc/vsftpd/vsftpd_user_conf
#vi /etc/vsftpd/vsftpd.conf
确保以上的配置后,再作如下修改
virtual_use_local_privs=NO //以便后面为不同的虚拟用户规定不同的权限
user_config_dir=/etc/vsftpd/vsftpd_user_conf //在该目录中创建各个虚拟用户的配置文件,test1,test2等;
+++++++++++++++++++++++++++++++++++++
test1用户
具有浏览目录,下载上传权限
vi /etc/vsftpd/vsftpd_user_conf/test1
内容如下
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
+++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++
test2用户
具有浏览目录,下载、上传、文件改名、删除权限
vi /etc/vsftpd/vsftpd_user_conf/test2 内容如下
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES(加上这句就会具有创建目录的权限了)
+++++++++++++++++++++++++++++++++++++++
就这样,一个虚拟用户的ftp服务器就建成了。欢呼一下。