vsftpd 配置


  本文标签:vsftpd,,配置

0、关于本文档
  本文档是个人的学习整理 。允许大家翻阅,摘抄,引用 。更欢迎指出其中不对之处 。文档的内容主要来自VSFTPD自身文档、个人学习心得以及网络资料,若有类同,实属正常,∶) 。
  本文档基于RedHat Linux 9和VSFTPD-1.1.3-8 。如果有不同版本,则有专门文字说明 。
1、VSFTPD简述
  如果试问哪种FTP服务器最安全?那么在UNIX和Linux中,首推的就是VSFTP(Very Secure FTP Daemon,非常安全的FTP服务器) 。顾名思义,VSFTPD设计的出发点就是安全性 。同时随着版本的不断升级,VSFTPD在性能和稳定性上也取得了极大的进展 。象RedHat、SUSE、Debian、GNU、GNOME、KDE等一些大型站点都采用VSFTPD作为它们的FTP服务器 。大家可以到http://vsftpd.beasts.org/了解它的最新情况 。
2、VSFTPD的安装
2.1、RHL9+vsftpd-.1.1.3-8.i386.rpm包的安装
  VSFTPD的安装很简单 。在RHL9中,在图形界面下依次执行“Main Menu”-“System Settings”-“Add/Remove Applications”-选择FTP服务器-“更新”,或者在字符界面中执行以下命令,就可以完成安装 。
  rpm -ivh vsftpd-1.1.3-8.i386.rpm
2.2、vsftpd-1.2.0.tar.gz的安装
  ⑴准备条件
  VSFTPD默认配置中需要“nobody”用户 。在系统中添加此用户,如果用户已经存在,useradd命令有相应提示 。
  [root@hpe45 root]# useradd nobody
  useradd: user nobody exists
  VSFTPD默认配置中需要“/usr/share/empty”目录 。在系统中此目录,如果目录已经存在,mkdir命令有相应提示 。
  [root@hpe45 root]# mkdir /usr/share/empty/
  mkdir: cannot create directory /usr/share/empty: File exists
  VSFTPD提供匿名FTP服务时,需要“ftp”用户和一个有效的匿名目录 。
  [root@hpe45 root]# mkdir /var/ftp/
  [root@hpe45 root]# useradd -d /var/ftp ftp
  接下来的操作对于ftp用户是否已经存在都是有用的 。
  [root@hpe45 root]# chown root.root /var/ftp
  [root@hpe45 root]# chmod og-w /var/ftp
  ⑵编译VSFTPD
  从官方站点下载到/root目录,执行以下命令:
  [root@hpe45 root]# tar zxvf vsftpd-1.2.0.tar.gz
  [root@hpe45 root]# cd vsftpd-1.2.0
  [root@hpe45 vsftpd-1.2.0]# make
  ⑶安装编译好的VSFTPD
  执行“make install”将编译好的二进制文件、手册等复制到相应目录 。在RHL9上,可能需要手动执行以下复制:
  [root@hpe45 vsftpd-1.2.0]# cp vsftpd /usr/local/sbin/vsftpd
  [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf.5 /usr/local/share/man/man5
  [root@hpe45 vsftpd-1.2.0]# cp vsftpd.8 /usr/local/share/man/man8
  此外,“make install”没有复制简单的配置文件,建议执行以下命令:
  [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf /etc
  ⑷为本地用户设置PAM
  如果允许本地用户登录VSFTPD,执行以下操作:
  [root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
3、VSFTPD的文件结构
  VSFTPD的文件结构是很简洁的,主要包括:
  /usr/sbin/vsftpd ---- VSFTPD的主程序
  /etc/rc.d/init.d/vsftpd ---- 启动脚本
  /etc/vsftpd/vsftpd.conf ---- 主配置文件
  /etc/pam.d/vsftpd ---- PAM认证文件
  /etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件
  /etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件
  /var/ftp ---- 匿名用户主目录
  /var/ftp/pub      ---- 匿名用户的下载目录
  此外,还有一些说明文档和手册文件 。
  此外VSFTPD的日志文件位于/etc/logrotate.d/vsftpd.log 。
4、VSFTPD的启动与停止
  VSFTPD可以单独(Standalone)方式运行,如同httpd、named这类的服务器的运行方式,这是RHL9中默认的方式;也可以采用xinetd方式运行,这是RHL7.x、8中的默认方式 。具体的运行方式由参数listen决定 。从RHL中VSFTPD的运行方式,也可以看出VSFTPD的逐步发展 。
  当listen参数值为YES时,RHL9中的默认值,VSFTPD单独运行,我们可以使用脚本/etc/rc.d/init.d/vsftpd来启动、关闭以及重启VSFTPD 。命令如下:
  /etc/rc.d/init.d/vsftpd start|stop|restart
  如果说在RHL9上,您还希望使用Xinetd启动VSFTPD的运行方式,那么首先要将vsftpd.conf配置文件中的listen参数值改为NO 。其次,生成一个/etc/xinetd.d/vsftpd文件,内容如下:
  service vsftpd
  {
  disable = no
  socket_type = stream
  wait = no
  user = root
  server = /usr/sbin/vsftpd
  port = 21
  log_on_success += PID HOST DURATION
  log_on_failure += HOST
  }
  通过修改disable值为no或yes,并重新启动xinetd,从而启动或停止VSFTPD 。
  由于VSFTPD的单独模式已经拥有足够的能力,所以后面6中讨论到的应用,都是以单独模式来运行的,而非Xinetd方式 。
  注:还可以直接执行vsftpd来启动FTP服务,关闭时使用“kill”命令 。
  [root@hpe45 root]# /usr/local/sbin/vsftpd &
5、VSFTPD的设置选项
  VSFTPD的配置文件/etc/vsftpd/vsftpd.conf是个文本文件 。以“#”字符开始的行是注释行 。每个选项设置为一行,格式为“option=value”,注意“=”号两边不能留空白符 。除了这个主配置文件外,还可以给特定用户设定个人配置文件,具体介绍见后 。
  VSFTPD包中所带的vsftpd.conf文件配置比较简单,而且非常偏执狂的(文档自称:-)) 。我们可以根据实际情况对其进行一些设置,以使得VSFTPD更加可用 。
5.1、连接选项