免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 949 | 回复: 0
打印 上一主题 下一主题

vsftpd-2.0.7源代码安装 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-10 11:19 |只看该作者 |倒序浏览
操作系统: centos 5.2
1、编辑解压出来的builddefs.h文件:
[root@cacti vsftpd-2.0.7]# vi builddefs.h
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H

#undef VSF_BUILD_TCPWRAPPERS  //修改undef为define,支持tcp-wrappers
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL   //修改undef为define,支持ssl

#endif /* VSF_BUILDDEFS_H */

2、安装前准备:创建必要的帐号和目录
useradd nobody
mkdir /usr/share/empty
mkdir /var/ftp
useradd -d /var/ftp ftp
chown root.root /var/ftp
chmod og-w /var/ftp

3、编译安装:
make && make install
cp vsftpd.conf /etc
cp RedHat/vsftpd.pam /etc/pam.d/ftp

4、验证结果                                                                     
    1)查看一下二进制文件安装到了那个目录。                           
    # which vsftpd                                          
    /usr/local/sbin/vsftpd                                             
                                                                        
    2)查看一下vsftpd的依赖库(如果您发现vsftpd所依赖的库有libpam的行,这说明您所编译的还是通过pam验证登录。)   
    # ldd /usr/local/sbin/vsftpd                                 
            libwrap.so.0 => /usr/lib/libwrap.so.0 (0x03db6000)         
            libnsl.so.1 => /lib/libnsl.so.1 (0x00175000)               
            libpam.so.0 => /lib/libpam.so.0 (0x00b4b000)   ----通过PAM进行验证
            libdl.so.2 => /lib/libdl.so.2 (0x0088f000)                  
            libresolv.so.2 => /lib/libresolv.so.2 (0x009dd000)         
            libutil.so.1 => /lib/libutil.so.1 (0x003b9000)              
            libcap.so.1 => /lib/libcap.so.1 (0x00111000)               
            libc.so.6 => /lib/tls/libc.so.6 (0x00763000)               
            libaudit.so.0 => /lib/libaudit.so.0 (0x00b6c000)            
            /lib/ld-linux.so.2 (0x0074a000)   
5、测试
[root@cacti ~]# ftp localhost                                          
    Connected to cacti.mnu.cn.                    
    220 Welcome to blah FTP service.              
    530 Please login with USER and PASS.         
    530 Please login with USER and PASS.         
    KERBEROS_V4 rejected as an authentication type
    Name (localhost:root): anonymous              
    230 Login successful.                        
    Remote system type is UNIX.                  
    Using binary mode to transfer files.
    ftp> ls
    227 Entering Passive Mode (127,0,0,1,118,208)
    150 Here comes the directory listing.
    -rw-r--r--    1 0        0           25093 Nov 05 11:45 INSTALL
    226 Directory send OK.
    ftp> bye                                      
    221 Goodbye.                                 
   
6、进阶设置:
匿名用户只允许下载,锁定在目录/var/ftp
每个虚拟用户一个目录,目录为/var/ftp/uploads/$USER,锁定在自身目录内,可下载、上传、删除、改名、创建目录等。
/var/ftp/uploads目录对匿名用户不可见,以.开头的隐藏文件对所有用户不可见。
匿名用户传输速率1MB/s,虚拟用户2MB/s,同时在线150人,每个IP最多3个连接数。

6.1) vsftpd.conf配置文件:
  [root@cacti ~]# grep -v '^#' /etc/vsftpd.conf
     
  listen=YES
  listen_port=21
  connect_from_port_20=YES
  pam_service_name=ftp #此处pam认证文件名ftp必须跟/etc/pam.d/ftp一致
  
  guest_enable=YES
  guest_username=vsftpd #此处为虚拟用户对应的系统帐号
  user_sub_token=$USER
  
  user_config_dir=/etc/vsftpd/vsftpd_user_conf #虚拟用户个人配置文件目录
  
  max_clients=150
  max_per_ip=3
  local_max_rate=2000000  # 2MB/s
  
  anonymous_enable=YES
  anon_max_rate=1000000  # 1MB/s
  anon_umask=077  #default 077
  anon_root=/var/ftp   #匿名用户主目录
  no_anon_password=YES  #匿名用户略过密码检查
  anon_upload_enable=NO
  anon_mkdir_write_enable=NO
  anon_other_write_enable=NO
  
  local_enable=YES
  write_enable=NO
  local_umask=022
  
  ftpd_banner=Welcome to blah FTP service.
  dirmessage_enable=YES
  use_localtime=YES
  hide_file={.*,uploads} #隐藏的文件和目录
  
  chroot_local_user=YES
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #不锁定主目录的虚拟用户写入此文件
  
  pasv_enable=YES
  pasv_min_port=30000
  pasv_max_port=30999

6.2)  修改/etc/pam.d/ftp文件:
    [root@cacti ~]#  vi /etc/pam.d/ftp      
        #%PAM-1.0   
        #auth       required    /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
        #auth       required    /lib/security/pam_unix.so shadow nullok         
        #auth       required    /lib/security/pam_shells.so                     
        #account    required    /lib/security/pam_unix.so     
        #session    required    /lib/security/pam_unix.so              
        auth    required        /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login  
        account required        /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login  

6.3) 创建虚拟用户:
    [root@cacti ~]# vi user.txt                          
        user                     
        123456                    
        test                        
        123456  
        
      [root@cacti ~]# db_load -T -t hash -f user.txt  /etc/vsftpd/vsftpd_login.db
      [root@cacti ~]# chmod 600 /etc/vsftpd/vsftpd_login.db   
6.4) 为虚拟用户创建映射帐号和主目录
  mkdir -p /var/ftp/uploads/user
  mkdir -p /var/ftp/uploads/test
  
  useradd -d /var/ftp/uploads -s /sbin/nologin vsftpd
  
  chown -R vsftpd.vsftpd /var/ftp/uploads
  chmod -R 750 /var/ftp/uploads
  
  
6.5) 为每个虚拟用户创建一个配置文件

  先创建一个虚拟用户配置模板:
  [root@cacti ~]# vi /etc/vsftpd/vsftpd_user_conf/vsftpd
  local_root=/var/ftp/uploads/$USER
  write_enable=YES
  anon_world_readable_only=NO
  anon_upload_enable=YES
  anon_mkdir_write_enable=YES
  anon_other_write_enable=YES
  
  然后为每个虚拟用户拷贝一份配置(user,test):
  cd /etc/vsftpd/vsftpd_user_conf/
  cp vsftp user
  cp vsftp test
  
7、再测试:
分别以匿名帐号anonymous和虚拟帐号user、test进行登录测试。
不锁定主目录的虚拟用户可以写入/etc/vsftpd/vsftpd.chroot_list 文件中。
例如user用户:
  echo "user" >>/etc/vsftpd/vsftpd.chroot_list
当用user登录的时候,用pwd查看目录,可以看到家目录为“/var/ftp/uploads/user”,而不是锁定主目录虚拟用户的“/”
            


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/38490/showart_1404014.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP