debian搭建vsftpd

Posted on Posted in ftp
Tips: 本文创建于2013年12月14日,已超过 2 年,内容或图片可能已经失效!

目录


一、系统环境

  1. Linux debian 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1+deb7u1 x86_64 GNU/Linux  
  2. No LSB modules are available.  
  3. Distributor ID: Debian  
  4. Description:    Debian GNU/Linux 7.0 (wheezy)  
  5. Release:    7.0  
  6. Codename:   wheezy  
  7. 32 位  

二、安装

如果是自己编译安装的,配置文件在你自己指定的位置
其他安装方式,配置文件神马的,不同的系统位置不一样,自行寻找
如果是redhat系列,自行yum

  1. root@debian:~# apt-get install vsftpd  
  2. root@debian:~# service vsftpd restart  
  3. Stopping FTP server: vsftpd.  
  4. Starting FTP server: vsftpd.  

三、匿名登录

1、安装后就可以简单登录了,在/srv/ftp下新建一个文件

  1. root@debian:/srv/ftp# touch 1.txt  

2、在windows上登录测试

ftp-login

四、增加一个ftp用户

1、首先备份vsftpd.conf,并进行精简。我的debian系统,vsftpd配置文件在/etc/vsftpd.conf

  1. root@debian:/srv/ftp# cd /etc/  
  2. root@debian:/etc# cp vsftpd.conf{,.bak}  
  3. root@debian:/etc# grep -v ^# vsftpd.conf | grep -v ^$ > vsftpd.conf.tmp && rm -rf vsftpd.conf && mv vsftpd.conf.tmp vsftpd.conf  
  4. root@debian:/etc# cat vsftpd.conf  
  5. listen=YES  
  6. anonymous_enable=YES  
  7. dirmessage_enable=YES  
  8. use_localtime=YES  
  9. xferlog_enable=YES  
  10. connect_from_port_20=YES  
  11. secure_chroot_dir=/var/run/vsftpd/empty  
  12. pam_service_name=vsftpd  
  13. rsa_cert_file=/etc/ssl/private/vsftpd.pem  

2、修改配置文件,使其可以上传下载

  1. root@debian:~# vim /etc/vsftpd.conf  
  2. anonymous_enable=NO # 禁止匿名用户登录  
  3. write_enable=YES    # 全局设置,允许上传(无论是匿名用户还是本地用户,如要上传文件,就要开启)  
  4. local_enable=YES    # 允许本地用户访问  

3、增加shell类型(不必要)

  1. root@debian:~# echo "/bin/false" >> /etc/shells  

4、增加一个用户

  1. root@debian:~# useradd -d /home/ruofish -s /bin/false ruofish  
  2. root@debian:~# passwd ruofish  
  3. 输入新的 UNIX 密码:  
  4. 重新输入新的 UNIX 密码:  
  5. passwd:已成功更新密码  
  6. root@debian:~# cd /home/  
  7. root@debian:/home# mkdir ruofish  
  8. root@debian:/home# chown -R ruofish.ruofish ruofish/  
  9. root@debian:/home# cd ruofish/  
  10. root@debian:/home/ruofish# echo "ruofish----linux" > ftp1.txt  
  11. root@debian:/home/ruofish# cat ftp1.txt  
  12. ruofish----linux  

5、重启vsftpd

  1. root@debian:/srv/ftp# service vsftpd restart  
  2. Stopping FTP server: vsftpd.  
  3. Starting FTP server: vsftpd.  

6、在window下登录,并下载ftp1.txt

downloadftp1txt

7、这样就下载了ftp1.txt,查看其内容---->刚刚在linux下写的:我是ftp1----linux

ftp1txt

8、在window下新建一个txt,名称为ftp2.txt,并上传,内容----> ruofish----windows

uploadftp2txt
9、在linux下查看

linuxftp2txt

五、增加多用户(虚拟用户)

1、建立虚拟用户名单

  1. root@debian:~# mkdir /etc/vsftpd  
  2. root@debian:~# vim /etc/vsftpd/virtusers.txt # 第一行用户名,第二行密码  
  3. ruofish01  
  4. 123456  
  5. ruofish02  
  6. 123456  
  7. ruofish03  
  8. 123456  

2、安装db数据库,如果系统中有db5.1_load命令,就不用安装了

  1. root@debian:~# apt-get install db5.1-util  

3、生成db数据库

  1. root@debian:~# db5.1_load -T -t hash -f /etc/vsftpd/virtusers.txt /etc/vsftpd/virtusers.db  

4、设定pam验证文件

  1. root@debian:~# chmod 600 /etc/vsftpd/virtusers.db  

5、修改pam配置文件

  1. root@debian:~# vim /etc/pam.d/vsftpd #删除原有的内容  
  2. auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/virtusers # so文件路径不同系统可能不一样  
  3. account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/virtusers  

6、修改vsftpd配置文件

  1. root@debian:~# vim /etc/vsftpd.conf # 增加或者修改以下内容    
  2. guest_enable=YES # 开启虚拟用户功能    
  3. guest_username=ruofish #指定虚拟用户的宿主用户(上面建立的)    
  4. user_config_dir=/etc/vsftpd/vconf #设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同    
  5. virtual_use_local_privs=YES #当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限,当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。默认情况下此参数是关闭的(NO)。    
  6. pasv_enable=YES  
  7. pasv_min_port=9000 #设置被动模式的端口范围    
  8. pasv_max_port=9045 #设置被动模式的端口范围    
  9. accept_timeout=5 #保持5秒    
  10. connect_timeout=1 #1秒后重新连接    

7、建立虚拟用户个人的配置文件

  1. root@debian:~# mkdir /etc/vsftpd/vconf  
  2. root@debian:~# vim /etc/vsftpd/vconf/ruofish01  
  3. local_root=/home/ruofish/ruofish01  
  4. write_enable=YES  
  5. anon_world_readable_only=NO  
  6. anon_upload_enable=YES  
  7. anon_mkdir_write_enable=YES  
  8. anon_other_write_enable=YES  
  9. root@debian:~# vim /etc/vsftpd/vconf/ruofish02  
  10. local_root=/home/ruofish/ruofish02  
  11. write_enable=YES  
  12. anon_world_readable_only=NO  
  13. anon_upload_enable=YES  
  14. anon_mkdir_write_enable=YES  
  15. anon_other_write_enable=YES  
  16. root@debian:~# vim /etc/vsftpd/vconf/ruofish03  
  17. local_root=/home/ruofish/ruofish03  
  18. write_enable=YES  
  19. anon_world_readable_only=NO  
  20. anon_upload_enable=YES  
  21. anon_mkdir_write_enable=YES  
  22. anon_other_write_enable=YES  

8、新建虚拟用户目录

  1. root@debian:/home/ruofish# mkdir ruofish01 ruofish02 ruofish03  
  2. root@debian:/home/ruofish# cd ruofish01  
  3. root@debian:/home/ruofish/ruofish01# touch ruofish01.txt  
  4. root@debian:/home/ruofish/ruofish01# cp ruofish01.txt ../ruofish02/ruofish02.txt  
  5. root@debian:/home/ruofish/ruofish01# cp ruofish01.txt ../ruofish03/ruofish03.txt  

9、重启vsftpd

  1. root@debian:/srv/ftp# service vsftpd restart  
  2. Stopping FTP server: vsftpd.  
  3. Starting FTP server: vsftpd.  

10、访问验证

ruofish02 ruofish01 ruofish03

六、关于vsftpd的配置文件

找了一些配置文件参数,备用

  1. use_localtime=YES#ftp时间和系统同步  
  2. listen_port=21 #默认无此行,ftp端口为21,添加listen_port=21把默认端口修改为21,注意:防火墙同时要开启21端口  
  3. anonymous_enable=NO #禁止匿名用户  
  4. local_enable=YES #设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问  
  5. write_enable=YES #全局设置,是否容许写入(无论是匿名用户还是本地用户,若要启用上传权限的话,就要开启)  
  6. local_umask=022 #设定上传后文件的权限掩码。  
  7. anon_upload_enable=NO #禁止匿名用户上传。  
  8. anon_mkdir_write_enable=NO #禁止匿名用户建立目录。  
  9. dirmessage_enable=YES #设定开启目录标语功能。  
  10. xferlog_enable=YES #设定开启日志记录功能。  
  11. connect_from_port_20=YES #设定端口20进行数据连接。  
  12. chown_uploads=NO #设定禁止上传文件更改宿主。  
  13. xferlog_file=/var/log/vsftpd.log #日志保存路径(先创建好文件)  
  14. xferlog_std_format=YES #使用标准格式  
  15. async_abor_enable=YES #设定支持异步传输功能。  
  16. ascii_upload_enable=YES #设定支持ASCII模式的上传功能。  
  17. ascii_download_enable=YES #设定支持ASCII模式的下载功能。  
  18. ftpd_banner=Welcome to osyunwei.com FTP servers #设定Vsftpd的登陆标语。  
  19. chroot_local_user=YES #禁止本地用户登出自己的FTP主目录。  
  20. pam_service_name=vsftpd #设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。  
  21. userlist_enable=NO #设为YES的时候,如果一个用户名是在userlist_file参数指定的文件中,那么在要求他们输入密码之前,会直接拒绝他们登陆,这里设置为NO  
  22. tcp_wrappers=YES #是否支持tcp_wrappers  
  23. idle_session_timeout=300 #超时设置  
  24. data_connection_timeout=1 #空闲1秒后服务器断开  

例子1:

  1. 匿名访问、上传,并支持下载和执行  
  2. anonymous_enable=YES 注:允许匿名访问  
  3. anon_upload_enable=YES 注:允许上传  
  4. anon_mkdir_write_enable=YES 注:允许建立相应的目录  
  5. anon_umask=022 把上传到FTP的文件或者目录改变权限  
  6. 比如:我在/var/ftp目录建一个upload目录,然后把它的权限设置成777,这样匿名用户就能写入了。  
  7. #mkdir /var/ftp/upload  
  8. #chmod 777 /var/ftp/upload  

例子2:

  1. 如何锁定用户在自己的主目录  
  2. 有两个方法,我分别说  
  3. 第一个方法:一刀切,把所有的用户都限制在自己的主目录  
  4. #chroot_local_user=YES把前面的注释去掉即可  
  5. 第二个方法:限制部分用户在自己的主目录  
  6. 首先  
  7. vi /etc/vsftpd.chroot_list把你要限制的用户一行一个的添加进去  
  8. 然后开启vsftpd.conf的  
  9. #chroot_list_enable=YES  
  10. #chroot_list_file=/etc/vsftpd.chroot_list把#号去掉即可  

例子3:

  1. 解决vsftp上传的文件与apache或者nginx的权限问题  
  2. 这个问题不少人问,但是回答的很少,这里我给一个的回答  
  3. vi /etc/vsftpd.conf找到#local_umask=022把前面的#去掉  

有关详细配置 请看 vsftpd配置文件讲解

» 转载请注明来源:呢喃 » debian搭建vsftpd

Leave a Reply

Your email address will not be published. Required fields are marked *

5 − 4 =