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

1、安装所需软件html

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

二、vsFTPd 
 cd /usr/ports/ftp/vsftpd
 make install cleanlinux

三、pam_mysql
 cd /usr/ports/security/pam-mysql
 make install clean算法

2、配置sql

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

 # pw useradd vsftpd -s /sbin/nologinapp

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

二、创建数据库vsftp和表users,logside

 #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) ;

 三、为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';


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


五、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代替也能够,我的喜爱)

六、创建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密码验证不成功。

七、修改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

  以上配置请自行探索。

八、限制用户目录和权限
 # 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

相关文章
相关标签/搜索