快速搭建FTP服务器 by:http://cyr520.blog.51cto.com

   

     原文出处(建议大家看原文):http://cyr520.blog.51cto.com/714067/1111110


FTP服务器是一种常见的用于文件交换的服务,目前大小公司都有在用。最近公司有需求需要搭建FTP服务,就研究了一下。

  本次主要是基于vsftpd的搭建和配置。

一、vsftpd简介:

vsftpd是一个UNIX类操作系统上运行的FTP服务器,它可以运行在Linux、BSD、Solaris、HP-UNIX等多种操作系统上面,是一个完全免费的、开发源代码的ftp服务器软件。目前主流的Linux发行版中都可以找到vsftpd的身影。

它有如下特点:

  1. 程序小巧轻快,安装方便。 

  2. 安全性和稳定性较早期FTP有很大进步。 

  3. 配置简单。 


二、学习安装和配置vsftpd:

实验环境:Centos 5.8 x86_64 

测试环境关掉防火墙和selinux。

  1. service iptables stop 

  2. setenforce 0 


1、安装vsftpd

  1. yum -y install vsftpd 


2、vsftpd相关的目录及配置文件

  1. /usr/sbin/vsftpd  vsftpd主程序。 

  2. /etc/init.d/vsftpd  vsftpd服务控制脚本。 

  3. /etc/pam.d/vsftpd  这个是vsftpd使用PAM模块时的相关配置文件,主要用来验证登陆FTP用户账号的身份。 

  4. /etc/vsftpd/  配置文件目录。 

  5. /etc/vsftpd/vsftpd.conf  vsftpd服务主配置文件,使用方法:参数=设定值。 

  6. /etc/vsftpd/ftpusers  与PAM模块的配置文件配合使用,主要填写FTP用户账号,一行一个。 

  7. /etc/vsftpd/user_list  vsftpd服务自己的用户账户控制文件,与vsftpd.conf配置文件中的userlist_enable、userlist_deny两个参数有关。 

  8. /var/ftp/  默认匿名用户根目录。 


3、主配置文件vsftpd.conf详解

  1. 与服务器环境较相关的设定值 

  2.  

  3. connect_from_port_20=YES (NO

  4.  

  5. 主动式连接时使用FTP服务器的端口号,就是FTP-date的端口号。 

  6.  

  7. listen_port=21 

  8.  

  9. vsftpd控制端口。 

  10.  

  11. dirmessage_enable=YES (NO

  12.  

  13. 当用户进入某个目录时,是否显示该目录需要注意的内容,显示信息的文件默认是 .message 。 

  14.  

  15. message_file=.message 

  16.  

  17. 当 dirmessage_enable=YES 时,可以修改默认显示信息文件的文件名。 

  18.  

  19. listen=YES (NO

  20.  

  21. 设置为YES表示以stand alone方式启动服务器,设置为NO则表示以super deamon的方式启动服务器。 

  22.  

  23. pasv_enable=YES (NO

  24.  

  25. 启动被动模式(passive mode),一定要设置为YES。 

  26.  

  27. use_localtime=YES (NO

  28.  

  29. 启用本地时间,一般需要设置为YES。因为vsFTPd默认使用GMT格林威治时间,这比东八区的时间早了8个小时,会使得服务器上的文件时间属性出现混乱。 

  30.  

  31. write_enable=YES (NO

  32.  

  33. 是否允许用户上传数据。 

  34.  

  35. connect_timeout=60 

  36.  

  37. 在数据连接主动模式下,发出的连接信号在60秒内没有得到客户端的响应,则强制断线。 

  38.  

  39. accept_timeout=60 

  40.  

  41. 在用户以PASV被动模式进行数据传输时,如果主机启动passive port并等待客户端超过60秒无回应,就强制断线。 

  42.  

  43. data_connection_timeout=300 

  44.  

  45. 在客户端和服务器的数据连接已经建立的情况下,如果在300秒内还是无法顺利完成数据传输,则客户端的连线会被vsFTPd强制断开。 

  46.  

  47. idle_session_timeout=300 

  48.  

  49. 如果用户在300秒内没有命令操作,则断线。 

  50.  

  51. max_clients=0 

  52.  

  53. 当vsFTPd以stand alone模式运行时,这个参数决定同一个IP、同一时间内被服务器允许的连接数。 

  54.  

  55. max_per_ip=0 

  56.  

  57. 与上面 max_clients 类似,这里是同一个 IP 同一时间可允许多少联机? 

  58.  

  59. pasv_min_port=0, pasv_max_port=0 

  60.  

  61. 这两个参数指定pasv模式使用的端口号的范围,0表示不限制。 

  62.  

  63. ftpd_banner=一些文字说明 

  64.  

  65. 用登入FTP时,显示的欢迎信息,可设定显示的信息内容较少。 

  66.  

  67. banner_file=/path/file 

  68.  

  69. 这个参数可以弥补FTPd_banner参数的不足,特别是当需要在服务器端展示较多的文字信息时(如站点说明,欢迎文字等等)。 

  70.  

  71. 与实体用户较相关的设定值 

  72.  

  73. guest_enable=YES (NO

  74.  

  75. 开启访客用户,如果开启则所有的非匿名用户的均会被假设成访客身份。访客默认情况下使用FTP这个账户相关的权限设置,但是可以通过参数guest_username来修改。 

  76.  

  77. guest_username=ftp 

  78.  

  79. 在开启了guest_enable=YES之后才会生效,用来指定访客的身份。 

  80.  

  81. local_enable=YES (NO

  82.  

  83. 是否允许/etc/passwd中存在的实体用户帐号登陆vsFTPd服务器。 

  84.  

  85. local_max_rate=0 

  86.  

  87. 实体用户的传输速度限制,单位为bytes/second,0表示不限制。 

  88.  

  89. chroot_local_user=YES (NO

  90.  

  91. 将实体用户限制在自己的家目录之内,默认值为NO。 

  92.  

  93. chroot_list_enable=YES (NO)、chroot_list_file=/etc/vsftpd.chroot_list 

  94.  

  95. 这两个参数需要配合使用,用以将chroot_list文件中列出的用户限制在自己的默认目录中。 

  96.  

  97. userlist_enable=YES (NO)、userlist_deny=YES (NO)、userlist_file=/etc/vsftpd/user_list 

  98.  

  99. 参数userlist_enable=YES表示借助vsFTPd的阻止机制来处理user_list文件中列出的某些不受欢迎的帐号;当userlist_deny=YES时user_list文件中的帐号将被拒绝,当userlist_deny=NO时则表示允许user_list中的帐号登陆服务器; 

  100.  

  101. 匿名者登入的设定值 

  102.  

  103. anonymous_enable=YES (NO

  104.  

  105. 是否允许匿名账户anonymous登录,以下参数均在允许情况下生效。 

  106.  

  107. anon_world_readable_only=YES (NO

  108.  

  109. 是否允许匿名用户具有只读权限。 

  110.  

  111. anon_other_write_enable=YES (NO

  112.  

  113. 是否允许匿名账户具有可写权限。 

  114.  

  115. anon_mkdir_write_enable=YES (NO

  116.  

  117. 是否允许匿名用户具有创建目录的权限。 

  118.  

  119. anon_upload_enable=YES (NO

  120.  

  121. 是否允许匿名用户具有上传文件的权限。 

  122.  

  123. deny_email_enable=YES (NO

  124.  

  125. 若是启动这项功能,则必须提供一个档案/etc/vsftpd/banner_emails,内容为email address。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。默认值为NO。 

  126.  

  127. banned_email_file=/etc/vsftpd/banned_emails 

  128.  

  129. 如果 deny_email_enable=YES 时,可以利用这个设定项目来规定哪个 email address 不可登入我们的 vsftpd 喔!在上面设定的档案内,一行输入一个 email address 即可! 

  130.  

  131. no_anon_password=YES (NO

  132.  

  133. 此文件用来输入email address,只有在deny_email_enable=YES时,才会使用到此档案。若是使用匿名登入,则会要求输入email address,若输入的email address 在此档案内,则不允许进入。 

  134.  

  135. anon_max_rate=0 

  136.  

  137. 设置匿名登入者使用的最大传输速度,单位为B/s,0 表示不限制速度。默认值为0。 

  138.  

  139. anon_umask=077 

  140.  

  141. 设置匿名登入者新增或上传档案时的umask 值。默认值为077,则新建档案的对应权限为700。 

  142.  

  143. 关于系统安全方面的一些设定值 

  144.  

  145. ascii_download_enable=YES (NO

  146.  

  147. 设置是否启用ASCII 模式下载数据。默认值为NO。 

  148.  

  149. ascii_upload_enable=YES (NO

  150.  

  151. 设置是否启用ASCII 模式上传数据。默认值为NO 

  152.  

  153. one_process_model=YES (NO

  154.  

  155. 是否使用单进程模式 

  156.  

  157. tcp_wrappers=YES (NO

  158.  

  159. 设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制。默认值为YES。如果启用,则vsftpd服务器会检查/etc/hosts.allow 和/etc/hosts.deny 中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。 

  160.  

  161. xferlog_enable=YES (NO

  162.  

  163. 是否启用上传/下载日志记录。如果启用,则上传与下载的信息将被完整纪录在xferlog_file 所定义的档案中。预设为开启。 

  164.  

  165. xferlog_file=/var/log/xferlog 

  166.  

  167. 设置日志文件名和路径,默认值为/var/log/vsftpd.log。 

  168.  

  169. xferlog_std_format=YES (NO

  170.  

  171. 如果启用,则日志文件将会写成xferlog的标准格式,如同wu-ftpd 一般。默认值为关闭。 

  172.  

  173. dual_log_enable=YES, vsftpd_log_file=/var/log/vsftpd.log 

  174.  

  175. 如果启用该选项,将生成两个相似的日志文件,默认在 /var/log/xferlog 和 /var/log/vsftpd.log 目录下。前者是 wu-ftpd 类型的传输日志,可以利用标准日志工具对其进行分析;后者是Vsftpd类型的日志。 

  176.  

  177. nopriv_user=nobody 

  178.  

  179. 预设vsftpd服务的运行账户。 

  180.  

  181. pam_service_name=vsftpd 

  182.  

  183. 设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。 


4、配置实例

基于匿名用户的配置:

  1. cd /etc/vsftpd/ 

  2. vim vsftpd.conf 


  1. write_enable=YES 

  2. anonymous_enable=YES 

  3. no_anon_password=YES 

  4. anon_upload_enable=YES 

  5. anon_mkdir_write_enable=YES 

  6. anon_other_write_enable=YES 

  7. anon_root=/data/vsftpd 

  8. anon_world_readable_only=NO 

  9. syslog_enable=YES 

  10. connect_from_port_20=YES 

  11. pam_service_name=vsftpd 

  12. listen=YES 


  1. mkdir -p /data/vsftpd/upload 

  2. chmod 777 /data/vsftpd/upload 


基于本地用户的配置:

  1. cd /etc/vsftpd/ 

  2. vim vsftpd.conf 


  1. anonymous_enable=NO 

  2. local_enable=YES 

  3. write_enable=YES 

  4. local_umask=022 

  5. dirmessage_enable=YES 

  6. xferlog_enable=YES 

  7. connect_from_port_20=YES 

  8. xferlog_std_format=YES 

  9. pam_service_name=vsftpd 

  10. userlist_enable=YES 

  11. listen=YES 

  12. tcp_wrappers=YES 

  13. userlist_deny=NO 


  1. useradd test 

  2. echo test | passwd --stdin test 

  3. echo "test" >> user_list 


基于虚拟用户的配置:

  1. yum -y install db4-utils 

  2. cd /etc/vsftpd/ 

  3. vim virtual_userlist.txt 


  1. test1 

  2. 123456 

  3. test2 

  4. 123456 


  1. db_load -T -t hash -f /etc/vsftpd/virtual_userlist.txt /etc/vsftpd/virtual_userlist.db 

  2. chmod 600 /etc/vsftpd/virtual_userlist.db 

  3. vim /etc/pam.d/vsftpd.vu 


  1. auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_userlist 

  2. account required /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_userlist 


  1. useradd virtual_user -d /data/vsftpd 

  2. chmod 700 /home/ftpsite 

  3. chown virtual_user.virtual_user /data/vsftpd/ 

  4. vim /etc/vsftpd/vsftpd.conf 


  1. anonymous_enable=NO 

  2. local_enable=YES 

  3. xferlog_enable=YES 

  4. connect_from_port_20=YES 

  5. xferlog_std_format=YES 

  6. listen=YES 

  7. listen_port=21 

  8. userlist_enable=YES 

  9. guest_enable=YES 

  10. guest_username=virtual_user 

  11. pam_service_name=vsftpd.vu 

  12. virtual_use_local_privs=YES 

  13. ftpd_banner=Welcome to opendoc FTP service. 

  14. write_enable=YES 

  15. anonymous_enable=NO 

  16. anon_world_readable_only=NO 

  17. anon_upload_enable=YES 

  18. anon_mkdir_write_enable=YES 

  19. anon_other_write_enable=YES 

  20. local_umask=022 

  21. download_enable=Yes 

  22. local_root=/data/vsftpd 


关于服务器控制:

  1. service vsftpd {start|stop|restart|condrestart|status} 


客户端操作:


转载于:https://my.oschina.net/samzong/blog/885629

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值