首先说明
帐号的认证通过pam认证方式,采用pam的mysql插件.安装libpam-mysql和vsftpd
apt-get install libpam-mysqlapt-get install vsftpd
mysql的库,表,字段,假设如下:
库名 DBV表名 TB
字段 USER和 PASSWORD
数据库的帐号密码 DBUSER DBPASSWROD
/etc/pam.d/vsftpd的内容如下
auth required pam_mysql.so user= DBUSER passwd= DBPASSWROD host= localhost db= DBVtable= TB usercolumn= USER passwdcolumn= PASSWORDcrypt= 2account required pam_mysql.so user=DBUSER passwd=DBPASSWROD host=localhost db=DBV table=TB usercolumn=USER passwdcolumn=PASSWORD crypt=2
上面的crypt表示口令字段的加密方式:crypt=0,明文;crypt=1,UNIX系统的DES加密方式;crypt=2,MySQL的password()。
/etc/vsftpd.conf 是vsftpd的配置文件,内容:
listen=YESanonymous_enable=NO
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
virtual_use_local_privs=YES
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=www-data
user_sub_token=$USER
user_config_dir=/etc/vsftpd_user_conf/
pam_service_name=vsftpd
local_enable=YES
write_enable=YES
上面 guest_username= www-data, 指定系统帐号 www-data为vsftpd虚拟帐号对应的真实系统帐号,当然也可以用其他的系统帐号(实际上我配置vsftpd是为了apache虚拟主机用的).
user_config_dir= /etc/vsftpd_user_conf/ 虚拟用户私有配置文件所在的目录.
下面添加一个虚拟帐号
帐号名 gogogo
密码 555555
私有目录 /var/vsftpd/gogogo
步骤如下:
1,在mysql中添加信息:
INSERT INTO TB(USER,PASSWORD)values("gogogo", password("555555"));
2,在/etc/vsftpd_user_conf/ 目录下建立文件 gogogo,它指定了每个帐号自己的私有目录,其内容如下
local_root=/var/vsftpd/gogogo
OK,需要注意的是
1, /var/vsftpd/gogogo要属于www-data,否则无读写权.
2, /etc/vsftpd_user_conf/gogogo 必须属于 root