1、从安装包或yum安装vsftp
2、配置/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
chroot_local_user=YES
listen=YES
pam_service_name=vftp
userlist_enable=NO
user_config_dir=/etc/vsftpd/user_config
userlist_enable=NO
userlist_file=/etc/vsftpd/user_list
userlist_deny=YES
guest_enable=YES
guest_username=virftp
tcp_wrappers=YES
3、安装MySQL-shared-compat-5.5.29-2.linux2.6.x86_64.rpm
rpm -ivh MySQL-shared-compat-5.5.29-2.linux2.6.x86_64.rpm
4、安装pam_mysql-0.7RC1-1.x86_64.rpm
rpm -ivh pam_mysql-0.7RC1-1.x86_64.rpm
5、创建数据库和访问数据库的virftp用户
1)、建立FTP用户和组
groupadd -g 1005 virftp
useradd -d /mnt/isdata -s /sbin/nologin -u 1005 -g virftp virftp
2)、建立service_ftp_user表,并插入数据(在dbName数据库中有service_ftp_user表,就不需要创建数据库和表了)
在表中加入用户和密码(密码用自带的password 加密)
mysql> create table service_ftp_user(ftpName,char(255) binary,ftpPasswd char(255) binary);
mysql> insert into service_ftp_user(ftpName,ftpPasswd) values ('test',password('1234'));
对virftp用户赋予select权限
mysql> grant select on dbName.service_ftp_user to virftp@localhost identified by 'virftp';
mysql> flush privileges;
3)配置vi /etc/pam.d/vftp (将以下内容加入)
注意:下面内容是共2行 auth为一行, account为第二行
auth required /lib64/security/pam_mysql.so user=virftp passwd=virftp host=localhost db=dbName
table=service_ftp_user usercolumn=ftpName passwdcolumn=ftpPasswd crypt=2
account required /lib64/security/pam_mysql.so user=virftp passwd=virftp host=localhost db=dbName
table=service_ftp_user usercolumn=ftpName passwdcolumn=ftpPasswd crypt=2
6、为各个用户分配不同的家目录和权限
在 user_config_dir=/etc/vsftpd/user_config设定的目录下,建立与isVsftp表中用户名相同名字的文件,如test。配置文件格式如下:(请确认/mnt/isdata/test这个目录存在,这是test账户的主目录)
local_root=/mnt/isdata/test/
anonymous_enable=NO
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
做完以上6个步骤就配置好了用户名为test,密码为1234的虚拟账户。
7、启动服务
service vsftpd restart
重启服务然后使用test账号登陆。
8、如果需要添加其它账户
(如:账户名test2,密码1234),可以重复第6步,然后在service_ftp_user表中添加一条记录 sql语句:insert into service_ftp_user(ftpName,ftpPasswd ) values ('test'2,password('1234')); 这样test2这个账号也可以登陆。
常见错误:
1、需要对guest账号virftp赋予service_ftp_user表的查询权限,不然会有“登陆错误”的提示,因为无法查询到service_ftp_user表的内容。
2、vsftpd 500 OOPS: cannot change directory: 这个错误的处理方法,查看 SELinux设置 输入:getsebool -a|grep ftp
出现ftpd_disable_trans --> off或者ftp_home_dir-->off
解决方法:使用setsebool命令开启
输入setsebool ftpd_disable_trans 或者setsebool ftp_home_dir 1
//再次查看当前状态是否是on的状态
输入 getsebool -a|grep ftp
出现 ftpd_disable_trans --> on
或者
ftp_home_dir-->on
3、登陆时拒绝访问,查看/cat /etc/hosts.allow里面的内容
4、按照步骤操作不成功,查看/var/log/vsftpd.log /var/log/secure日志
vsftpd[20176]: pam_mysql - MySQL error (Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2))
出错处理方式
530Login incorrect
登录失败
Service iptables stop; Setenforce 0 关闭各种防火墙
查看/var/log/sesure日志 /var/log/vsftpd.log日志
本文由Jessie原创或编辑,互联分享,尊重版权,转载请以链接形式标明本文地址