FreeBSD 安装vsftpd 并配置pam_mysql 实现虚拟用户登录

一、安装所需软件

1、MySQL 安装过程请见另一篇文章

2、vsFTPd 
 cd /usr/ports/ftp/vsftpd
 make install clean

3、pam_mysql
 cd /usr/ports/security/pam-mysql
 make install clean

二、配置

1、添加虚拟用户映射的系统用户vsftpd,密码为空,禁止终端登陆,并设置相应的ftp目录:

 # pw useradd vsftpd -s /sbin/nologin

 # chmod go+rx /home/vsftpd (使其目录有写的权限)

2、建立数据库vsftp和表users,logs

 #mysql> create database vsftpd;

 #mysql> use vsftpd;

 #mysql> create table users ( id int AUTO_INCREMENT NOT NULL,name char(63) binary NOT NULL, passwd char(63) binary NOT NULL,primary key(id));

 #mysql> Create table logs ( message Varchar(255),user Varchar(63),pid Int,host Varchar(63), rhost Varchar(63),logtime Datetime) ;

 3、为mysql添加用户vsftpd 密码123456 并设制访问权限:
 grant select on vsftpd.users to vsftpd@localhost identified by '123456';
 grant all privileges on vsftpd.logs to 
vsftpd@localhost identified by '123456';


4、添加测试的虚拟用户, 其密码采取加密存放的方式
 mysql> insert into users(name,passwd) values(’test1′,password(’123456′));
 mysql> insert into users(name,passwd) values(’test2′,password(’123456′));


5、ee /etc/pam.d/vsftpd 文件,删除里面的内容添加下面两行:

 auth            required        /usr/local/lib/pam_mysql.so     config_file=/etc/security/pam_mysql.conf
 account         required        /usr/local/lib/pam_mysql.so     config_file=/etc/security/pam_mysql.conf
 注意:上面两行没有回车符,空格用tab代替(不用tab代替也可以,个人喜好)

6、建立pam_mysql配置文件

 ee /etc/security/pam_mysql.conf 填入下面内容:

 users.host=localhost
 users.database=vsftpd   (数据库库名)
 users.db_user=vsftpd        (数据库用户名)
 users.db_passwd=123456  (数据库访问密码)
 users.table=users
 users.user_column=name
 users.password_column=passwd
 users.password_crypt=2
 verbose=1
 log.enabled=1
 log.table=logs
 log.message_column=message
 log.pid_column=pid
 log.user_column=user
 log.host_column=host
 log.rhost_column=rhost
 log.time_column=logtime

 说明:用户信息表密码列crypt加密方式支持下列加密方式:
 crypt=0,口令以明文方式(不加密)。
 crypt=1,口令使用系统的DES加密方式加密。
 crypt=2,口令经过MySQL的password()函数加密。
 crypt=3,口令经过MySQL的md5()函数加密。

 注:如果要使用3方式进行加密,务必把/etc/my.cnf里面的old_passwords=1改成old_passwords=0,否则mysql会使用老的加密算法,导致和pam_mysql.so密码验证不成功。

7、修改vsftpd.conf使其从mysql认证

 # ee /usr/local/etc/vsftpd.conf

 内容以如下
 
listen=YES

background=YES

chroot_local_user=YES

guest_enable=YES

guest_username=vsftpd

pam_service_name=vsftpd

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

 ftpd_banner=Welcome to this ftp server!

secure_chroot_dir=/usr/local/share/vsftpd/empty

user_config_dir=/etc/vsftpd_users

  以上配置请自行探索。

8、限制用户目录和权限
 # ee /usr/local/etc/vsftpd.conf 在vsftpd.conf中添加一行:
 user_config_dir=/etc/vsftpd_users 
 mkdir /etc/vsftpd_users (在/etc目录中建立vsftpd_users目录)
 cd /etc/vsftpd_users (进入vsftpd_users目录新建用户配置文件)
 # ee test1 (文件名必需同用户名一至)输入配置信息:
 local_root=/ftp/test1 (限制用户目录为/ftp/test1)
 anon_upload_enable=YES (开放用户上传权限)
 anon_mkdir_write_enable=YES (可新建文件夹)
 anon_other_write_enable=YES (可删除文件)

 保存退出

 mkdir /ftp/test1 为FTP用户创建根目录
 chmod -R vsftpd /ftp/test1 分配权限

启动vsftpd:/usr/local/libexec/vsftpd &

 现在便可以用test1密码123456登录并上传文件了.

reference:

http://www.diybl.com/course/6_system/linux/Linuxjs/20090311/160564.html

http://www.xxlinux.com/linux/article/development/database/20051229/793.html

http://fanqiang.chinaunix.net/app/ftp/2005-09-15/3668.shtml

你可能感兴趣的:(FreeBSD 安装vsftpd 并配置pam_mysql 实现虚拟用户登录)