vsftpd+mysql的虚拟用户配置记录

1.安装vsftpd yum install vsftpd就ok

2.需要pam_mysql组件,在这里

3.编译参数看下INSTALL 我这里用了一个参数就 withmysql=/usr/local/amp/mysql5

4.建立mysql数据库、表 db=vsftpd table=users(username,userpass,homedir),建立对应mysql帐户 vsftpd vsftpd(当然也可以用root或者现有帐户)

5.修改/etc/pam.d/vsftpd 新增两行:

  1. account required /usr/lib/security/pam_mysql.so user=vsftpd passwd=vsftpd host=localhost db=vsftpd table=users usercolumn=username passwdcolumn=userpass

6.建立用来存放虚拟用户配置文件的文件夹,我的在/etc/vsftpd/virtual,里面放了一个配置文件模板叫_tpl write_enable=YES

  1. anon_mkdir_write_enable=YES
  2. anon_upload_enable=YES
  3. anon_other_write_enable=YES

代码意思是,就差一个homedir了

7.打开/etc/vsftpd/vsftpd.conf,设置修改为 #一定要有

  1. listen=YES
  2. #listen_port=10021
  3. connect_from_port_20=YES
  4. #服务器提示
  5. ftpd_banner=Welcome to My FTP server.
  6. #关闭匿名访问
  7. anonymous_enable=NO
  8. local_enable=YES
  9. write_enable=NO
  10. anon_upload_enable=NO
  11. anon_mkdir_write_enable=NO
  12. anon_other_write_enable=NO
  13. chroot_local_user=YES
  14. guest_enable=YES
  15. #虚拟用户所使用的帐号,如果这里是root,那你传上去的文件所有者也是root,
  16. #一般安全情况下,请设立单独的vsftpd的用户,就像mysql的独立访问用户一样
  17. guest_username=root
  18. pasv_min_port=30000
  19. pasv_max_port=30999
  20. #这里对应着/etc/pam.d/下的那个vsftpd 见第6条
  21. pam_service_name=vsftpd
  22. #虚拟用户配置文件目录
  23. user_config_dir=/etc/vsftpd/virtual
  24. xferlog_enable=YES
  25. #xferlog_file=/var/log/vsftpd.log
  26. xferlog_file=/data1/logs/vsftpd/vsftpd.log
  27. anon_world_readable_only=NO
  28. anon_umask=022
  29. file_open_mode=0777
  30. local_umask=022
  31. #20080811 last modify
  32. data_connection_timeout=120

要注意这里,local_umask和anon_umask的值,你的文件上传之后的权限值 = 777 local_umask,也就是,上例中的022,你上传之后,文件权限会是755

8./etc/vsftpd/vsftpd restart

9.我这里还有两个shell,但是我的bash很笨,if判断会有错误,增加ftp用户:

  1. #!/bin/bash
  2. clear
  3. echo "******************************"
  4. echo "* Add vsftpd User Script *"
  5. echo "* AnVy 2008.0516 *"
  6. echo "******************************"
  7. echo "Enter user account:[Enter Key]"
  8. read username
  9. echo "Username is $username, Now Enter the password:[Enter Key]"
  10. read userpass
  11. echo "Asign the user's ftp home directory:[Enter Key]"
  12. read home
  13. echo "create this dir?[y/n]:"
  14. read $cd
  15. if [ $cd="y" ]
  16. then
  17. mkdir $home
  18. fi
  19. #chown R www:www $home
  20. /usr/local/amp/mysql5/bin/mysql uvsftpd pvsftpd<<EOF
  21. use vsftpd;
  22. replace into users (username,userpass,homedir) values ('$username','$userpass','$home');
  23. \q
  24. EOF
  25. cp /etc/vsftpd/virtual/_tpl /etc/vsftpd/virtual/$username
  26. #在用户配置文件追加家目录配置参数
  27. echo "local_root=$home" >> /etc/vsftpd/virtual/$username
  28. echo "$username with homedir= $home was added."

ftp帐户列表以及删除用户

  1. #!/bin/bash
  2. clear
  3. echo "******************************"
  4. echo "* Add vsftpd User Script *"
  5. echo "* AnVy 2008.0516 *"
  6. echo "******************************"
  7. echo "UserList:"
  8. /usr/local/amp/mysql5/bin/mysql uvsftpd pvsftpd<<EOF
  9. use vsftpd;
  10. select * from users;
  11. \q
  12. EOF
  13. echo "Delete user account:[Enter Key]"
  14. read username
  15. /usr/local/amp/mysql5/bin/mysql uvsftpd pvsftpd<<EOF
  16. use vsftpd;
  17. delete from users where username='$username';
  18. \q
  19. EOF
  20. unlink /etc/vsftpd/virtual/$username
  21. echo "$username without homedir was removed."

以上代码设置,可以简单实现我的虚拟用户分配,我也不太懂什么高深的设置,这样就可以实现我输入用户名,密码,家目录,就能开vsftpd帐户了,而且文件上传之后权限是755, 完全可用。