VSFTPD+MYSQL编译安装

一、编译安装MYSQL
1、 上传源包到/usr/local/mysql-5.0.24.tar.tar
2、 tar zxvf mysql-5.0.24.tar.tar
3、 cd /usr/local/mysql-5.0.24
4、 groupadd mysql
5、 useradd -g mysql mysql
6、 ./configure --prefix=/usr/local/mysql
7、 make
8、 make install
9、 cp support-files/my-medium.cnf /etc/my.cnf
10、cd /usr/local/mysql
11、bin/mysql_install_db --user=mysql
12、chown -R root  .
13、chown -R mysql var
14、chgrp -R mysql .
15、bin/mysqld_safe --user=mysql &

二、编译安装VSFTPD
1、上传源包到 /usr/local/vsftpd-2.0.4.tar.tar
2、tar zxvf vsftpd-2.0.4.tar.tar
3、cd /usr/local/vsftpd-2.0.4
4、vi builddefs.h内容如下
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM   (这行是关键)
#define VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
5、make
6、ls -l vsftpd
-rwxr-xr-x  1 root root 86088 Jun  6 22:26 vsftpd  //可执行程序已被编译成功
7、创建必要的帐号,目录:
# useradd nobody  //可能你的系统已经存在此帐号,那就不用建立
# mkdir /usr/share/empty  //可能你的系统已经存在此目录,那就不用建立
# mkdir /var/ftp  //可能你的系统已经存在此目录,那就不用建立
# useradd -d /var/ftp ftp  //可能你的系统已经存在此帐号,那就不用建立
# chown root:root /var/ftp
# chmod og-w /var/ftp
请记住,如果你不想让用户在本地登陆,那么你需要把他的登陆SHELL设置成/sbin/nologin,比如以上的nobody和ftp我就设置成/sbin/nologin   
8、安装vsftp配置文件,可执行程序,man等:
# install -m 755 vsftpd /usr/local/sbin/vsftpd
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd/vsftpd.conf
  如果该步出错(install: cannot create regular file `/etc/vsftpd/vsftpd.conf': No such file or directory
)是因为没有/etc/vsftpd目录,自己建一下就可以了。
mkdir /etc/vsftpd
9、编译/etc/vsftpd/vsftpd.conf在最后加入一行
   listen=YES
10、启动FTP服务
   /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &
此时已经可以匿名登录FTP了,这样就安装完成了。
(如果直接/usr/local/sbin/vsftpd 来启动的话,默认会调用/etc/vsftpd.conf配置文件的内容,请注意!)

三、建MYSQL的启动帐号
1 、useradd -d /home/ftpsite virtual
2、cp /etc/hosts /home/ftpsite
3、chown virtual.virtual /home/ftpsite/hosts  

四、建库文件
1、mysql
2、create database vsftpd;
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 '123456';
   grant insert on vsftpd.logs to virtual@localhost identified by '123456';
9、use vsftpd
10、insert into users (name,passwd) values('tom','foo');
   insert into users (name,passwd) values('jerry','bar');
11、select * from users;
    如果能看到表内容就表示正常了。

五、安装PAM包
1、把源包考到 /usr/local/pam_mysql-0.7RC1.tar.gz
2、tar zxvf pam_mysql-0.7RC1.tar.gz
3、cd pam_mysql-0.7RC1
4、./configure --with-openssl  --with-mysql=/usr/lib/mysql
5、make
6、make install
7、配置/pam.d/vsftpd
内容如下(注意一下实际pam_mysql.so的路径,进行相应更改.)
auth required /lib/security/pam_mysql.so user=virtual passwd=123456 host=/tmp/mysql.sock db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1
account required /lib/security/pam_mysql.so user=virtual passwd=123456 host=/tmp/mysql.sock db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0 sqllog=1 logtable=logs logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=logtime verbose=1

说明:如果MYSQL安装好以后,要修改MYSQL某个数据库的启动用户密码的话,只要做如下两步操作:
1)修改/etc/pam.d/vsftpd内容.把2处类似passwd=123456这样的密码改成你要设置的密码.
2)进入mysql后,运行
grant select on vsftpd.users to virtual@localhost identified by 'yourpasswd';
grant insert on vsftpd.logs to virtual@localhost identified by 'yourpasswd';
第1)步与第2)步的密码要一致.
3)重启MYSQL.

六、配置vsftpd
/etc/vsftpd/vsftpd.conf内容如下
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=virtual
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
anon_world_readable_only=NO
virtual_use_local_privs=YES
pam_service_name=vsftpd

七、高级配置VSFTPD
在/etc/vsftpd/vsftpd.conf 基础上加入
anon_max_rate=30000          '限制虚拟帐号下载速率
local_max_rate=30000         '限制本地帐号下载速率
max_per_ip=2                 '同时只能有2线程在下载
dirlist_enable=NO            '关闭帐号登录后的ls功能
修改
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO