Chinaunix首页 | 论坛 | 博客
  • 博客访问: 160011
  • 博文数量: 7
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 590
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-01 11:15
文章分类
文章存档

2010年(3)

2009年(2)

2008年(2)

我的朋友

分类: LINUX

2008-11-10 11:19:21

操作系统: 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”,而不是锁定主目录虚拟用户的“/”
           
阅读(2441) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:samba-3.2.4安装日志

给主人留下些什么吧!~~