现在的位置: 首页FreeBSD>正文
FreeBSD下源码安装Vsftpd配置虚拟用户 [原创]
2011年05月03日 FreeBSD 评论数 1 ⁄ 被围观 10,964 次+

一、下载源码包

  1. fetch ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.3.4.tar.gz   
  2. 貌似最近官方都下不了,在补一个本站的下载地址:      
  3. fetch http://www.92csz.com/downloads/vsftpd-2.3.4.tar.gz  

二、安装前准备(创建所需目录)

  1. mkdir -p /data/soft/vsftpd/conf
  2. mkdir -p /data/soft/vsftpd/bin
  3. mkdir -p /data/soft/vsftpd/lib
  4. mkdir -p /data/soft/vsftpd/user_conf
  5. mkdir -p /data/soft/vsftpd/empty
  6. mkdir -p /data/soft/vsftpd/logs
  7. mkdir -p /data/www
  8. chown -R wwwftp:wwwftp /data/www
  9. chmod -R 700 /data/soft/vsftpd/empty/
  10. chown -R wwwftp:wwwftp /data/soft/vsftpd/empty/

创建虚拟用户

  1. pw useradd wwwftp -d /data/www -s /usr/sbin/nologin

三、解压安装vsftpd

  1. tar zxvf vsftpd-2.3.4.tar.gz
  2. cd vsftpd-2.3.4

源码安装默认不支持tcp_wrappers和ssl

需要修改builddefs.h

  1. /*默认值如下:*/
  2. #undef VSF_BUILD_TCPWRAPPERS /*是否支持TCP WRAPPERS*/
  3. #define VSF_BUILD_PAM /*是否支持自定义虚拟用户登录*/
  4. #undef VSF_BUILD_SSL /*是否支持SSL传输*/
  5. /*支持则将对应项设为define,否则设为undef*/

编译vsftpd

  1. make

查看编译的vsftpd二进制文件是否加载了pam

  1. ldd vsftpd

如下:

  1. root@monitor[/home/admin/vsftpd-2.3.4]#ldd vsftpd   
  2. vsftpd:   
  3.         libwrap.so.5 => /usr/lib/libwrap.so.5 (0x28099000)   
  4.         libpam.so.4 => /usr/lib/libpam.so.4 (0x280a0000)   
  5.         libutil.so.7 => /lib/libutil.so.7 (0x280a7000)   
  6.         libssl.so.5 => /usr/lib/libssl.so.5 (0x280b5000)   
  7.         libcrypto.so.5 => /lib/libcrypto.so.5 (0x280fd000)   
  8.         libc.so.7 => /lib/libc.so.7 (0x28256000)  

四、配置vsftpd

1、创建配置文件:

  1. ee /data/soft/vsftpd/conf/vsftpd.conf

编辑如下:

  1. local_enable=YES
  2. write_enable=NO
  3. anonymous_enable=NO
  4. anon_upload_enable=NO
  5. anon_other_write_enable=NO
  6. anon_mkdir_write_enable=NO
  7. ftpd_banner=Welcome to FTP service.
  8. listen=YES
  9. listen_port=21
  10. connect_from_port_20=YES
  11. nopriv_user=nobody
  12. #tcp_wrappers=YES
  13. chroot_local_user=NO
  14. chroot_list_enable=YES
  15. chroot_list_file=/data/soft/vsftpd/chroot_list
  16. userlist_enable=yes
  17. userlist_deny=no
  18. userlist_file=/data/soft/vsftpd/allow
  19. dual_log_enable=YES
  20. vsftpd_log_file=/data/soft/vsftpd/logs/vsftpd.log
  21. xferlog_enable=YES
  22. xferlog_file=/data/soft/vsftpd/logs/xferlog
  23. pasv_enable=YES
  24. pasv_min_port=50000
  25. pasv_max_port=60000
  26. guest_enable=YES
  27. guest_username=wwwftp
  28. pam_service_name=vsftpd
  29. virtual_use_local_privs=YES
  30. use_localtime=YES
  31. user_config_dir=/data/soft/vsftpd/user_conf
  32. secure_chroot_dir=/data/soft/vsftpd/empty

2、创建允许登录ftp的用户文件:

  1. ee /data/soft/vsftpd/allow

编辑如下:

  1. test

3、安装vsftpd密码认证模块:

  1. fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7-stable/All/pam_pwdfile-0.99_1.tbz
  2. pkg_add pam_pwdfile-0.99_1.tbz //用于生成/usr/local/lib/pam_pwdfile.so文件
  3. cp /usr/local/lib/pam_pwdfile.so /data/soft/vsftpd/lib/

编辑/etc/pam.d/vsftpd如下:

  1. auth          sufficient   /data/soft/vsftpd/lib/pam_pwdfile.so  pwdfile=/data/soft/vsftpd/login
  2. account       sufficient   pam_permit.so

4、创建用于生成用户名密码的perl脚本文件:(需要安装perl-5.12.3.tbz)

  1. fetch ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7-stable/All/perl-5.10.1_3.tbz
  2. pkg_add perl-5.10.1_3.tbz

创建用于生成用户名密码的perl脚本文件

  1. ee /data/soft/vsftpd/bin/add_ftp_user.pl

如下:

  1. #! /usr/bin/perl -w   
  2. #filename: add_ftp_user.pl   
  3. use strict;   
  4. #   
  5. print "#example: user:passwd\n";   
  6. while (<STDIN>) {   
  7.     exit if ($_ =~/^\n/);   
  8.     chomp;   
  9.     (my $usermy $pass) = split /:/, $_, 2;   
  10.     my $crypt = crypt $pass, '$1$' . gensalt(8);   
  11.     print "$user:$crypt\n";   
  12. }   
  13. sub gensalt {   
  14.     my $count = shift;   
  15.     my @salt = ('.', '/', 0 .. 9, 'A' .. 'Z', 'a' .. 'z');   
  16.     my $s;   
  17.     $s .= $salt[rand @saltfor (1 .. $count);   
  18.     return $s;   
  19. }  

保存退出,给予可执行权限

  1. chmod +x /data/soft/vsftpd/bin/add_ftp_user.pl

5、创建测试用户名及密码:

  1. /data/soft/vsftpd/bin/add_ftp_user.pl
  2. 输入用户密码: user:password如下:
  3. test:123

复制用户名及加密的密码到/data/soft/vsftpd/login

6、创建用于锁定用户主目录的文件:

  1. ee /data/soft/vsftpd/chroot_list

编辑如下:

  1. test

7、创建用户配置文件:

  1. ee /data/soft/vsftpd/user_conf/test

编辑如下:

  1. local_root=/data/www/
  2. write_enable=yes
  3. anon_umask=022

五、启动服务

  1. /data/soft/vsftpd/bin/vsftpd /data/soft/vsftpd/conf/vsftpd.conf &

六、测试
ftp

ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-7-stable/All/perl-5.10.1_3.tbz
本文地址:http://www.92csz.com/56/522.html
如非注明则为本站原创文章,欢迎转载。转载请注明转载自:moon's blog
 

目前有 1 条留言 其中:访客:0 条, 博主:0 条 引用: 1