在Centos 上安装 配置 vsftpd 2.3.2 

早就像换掉proftpd 了,虽然它类似apache httpd 的配置文件格式很友好,不过体积太大最终还是让我抛弃了它。

还是 vsftpd 吧,下载最新版本2.3.2,解压,进入目录

众所周知,vsftpd 提供现成的Makefile,源码安装极其简单。直接make && make install.

我现在所要做的就是让vsftpd 支持虚拟用户登录,而且用户表是从mysql 里的vsftpd 库中的users里面读出来的.

首先确保本地有pam_mysql.so 库文件,没有的话,去 pam-mysql.sf.net 下载源码自编译一个.这里不赘述.

复制 vsftpd 源码包下的 vsftpd.conf 到 /etc 下.
复制 RedHat 目录下的 vsftpd.pam 到 /etc/pam.d 目录下,并改名为 ftp.

ftp 内容为:

[root@PowerPC ~]# cat /etc/pam.d/ftp
#%PAM-1.0
auth required /lib/security/pam_mysql.so user=ftp passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib/security/pam_mysql.so user=ftp passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2


同时确保mysql 里面有vsftpd数据库,里面有一张users的表.
字段见描述:

mysql> describe vsftpd.users;
+----------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | char(50) | NO | | NULL | |
| password | char(50) | NO | | NULL | |
+----------+----------+------+-----+---------+----------------+
3 rows in set (0.00 sec)


可以插入几条测试数据.

之后,再编辑下/etc/vsftpd.conf 文件,关键的一部分如下:

guest_enable=YES
guest_username=ftp
ftp_username=ftp
user_sub_token=$USER
local_root=/home/ftp/$USER
user_config_dir=/etc/sysconfig/vsftpd #用于重载一些特殊用户的配置
virtual_use_local_privs=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
nopriv_user=ftp
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/sysconfig/vsftpd/ftpusers
#该文件里包含所有需要被chroot() 用户的列表。一个一行.


这样一来的话就差不多了。
killall vsftpd 杀掉 vsftpd 进程.
重启ftp. vsftpd &.

试试看 ftp 127.0.0.1,应该可以登录了.

至此,vsftpd + pam_mysql 虚拟用户配置完成.

注:关于vsftpd 的更多选项,
参见:http://vsftpd.beasts.org/vsftpd_conf.html
或者 man vsftpd.conf .

评论