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