科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>服务器频道>ZD评测>Linux/unix 下Vsftpd服务器故障排除攻略

Linux/unix 下Vsftpd服务器故障排除攻略

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

VsftpdVsftpd中Vs的意思是“Very secure”。从名称可以看出,软件的编写者非常注重其安全性。据官方网站的数据,一台Vsftpd服务器最多可以支持1500个并发用户。24小时可以保存2.6TB数据。

来源:IT168 2008年03月21日

关键字:日志文件 配置文件 故障 服务器 VSFTPd unix Linux

  VsftpdVsftpd中Vs的意思是“Very secure”。从名称可以看出,软件的编写者非常注重其安全性。据官方网站的数据,一台Vsftpd服务器最多可以支持1500个并发用户。24小时可以保存2.6TB数据。Vsftpd服务器的文件结构如表1所示。

  表1 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  匿名用户的下载目录

  /etc/logrotate.d/vsftpd.log Vsftpd 的日志文件

  此外,还有一些说明文档和手册文件。

  1 了解日志文件

  了解日志文件对于故障排除非常重要,这里介绍详细设置方法。vsftpd与log有关的选项:

    vsftpd_log_file

  xferlog_enable

  xferlog_std_format

  xferlog_file

  dual_log_enable

  syslog_enable

  log_ftp_protocol

  no_log_lock

  在介绍之前,我们来看看vsftp中关于日志记录的参数。

  xferlog_enable=yes/no //是否启用 xferlog 日志格式

  xferlog_std_format=yes/no //是否采用标准格式记录日志

  xferlog_file=/path/to/logfile //xferlog 日志文件所在位置,默认为/var/log/xferlog

  上面的参数设置记录xferlog日志的格式。这是早期Wu-ftpd服务的日志格式,它会记录上传和下载的动作。vsftpd也有专有的日志格式,用下列参数设置:

  dual_log_enable=yes/no //是否采用Vsftpd自己的日志记录方式

  log_ftp_protocol=yes/no //是否记录所有的ftp命令日志 vsftpd_log_file=/path/to/logfile //指定vsftpd 日志文件位置,默认为/var/log/vsftpd.log,xferlog_enable的默认值为no(vsftpd提供的配置文件模版将其值改为了yes),dual_log_enable的默认值也为no,就是说默认情况下vsftpd是不记录日志的。我们也可以将日志信息写入系统日志/var/log/messages中,使用如下参数:

  syslog_enable=yes/no

  下面是一个xferlog日志文件的内容:

  Thu Mar 4 08:12:30 2008 1 202.114.40.242 37 /incoming/index.html a _ o a guest@my.net ftp 0 * c

  第一行各个数据参数如下表

  记录数据 参数说明

  Thu Mar 4 08:12:30 2008 当前服务器本地时间,格式:"DDD MMM dd hh:mm:ss YYYY"

 1 传输文件时间,单位秒

  202.114.40.242 远程主机IP地址

  /incoming/index.html 传输文件名称,包括路径

  a 传输类型包括:

  a :ascii码传输,b:二进制文件传输

  _ 特殊处理标志:

  -:没有处理

  C :文件压缩

  U:文件不压缩

  T:文件tar格式

  o 文件传输方向

  o:从服务器到客户端

  i:从 客户端到服务器

  a 访问模式:

  a:匿名的用户

  g:来宾用户

  r:本地用户即系统用户

  用户名称

  ftp 服务类型

  0 认证方式包括:

  1 rfc931 认证

  0:没有进行认证

  * 认证用户的id

  c 完成状态:

  c 完全的传输转移。

  i:没有完成传输

  2 vsftp常见故障排除

  1 日志文件文件出现错误信息“500 OOPS: vsftpd: not found: directory given in 'secure_chroot_dir':/usr/share/empty”。

  解决方法:vsftpd.conf 添加一行:

  secure_chroot_dir=/opt/usr/share/empty

  建立一个目录

  mkdir /opt/usr/share/empty

  然后关闭匿名登录把 vsftpd.conf

  中的anonymous_enable=YES

  修改为

  anonymous_enable=NO

  2 怎么配置vsftpd来chroot虚拟用户?

  解决方法:

  当尝试在vsftpd下chroot虚拟用户的时候,需要这样做:在vsftpd.conf里

  guest_enable=yes

  #virtual users are mapped to user ftp which owns all dirs

  guest_username=ftp

  #chroots the virtual user to his directory (user joe has directory joe)

  chroot_local_user=YES

  user_sub_token=$USER

  关键的事情是确保在/etc/passwd的ftp用户的主目录实际上包含在/var/ftp/$USER里的字符串$USER 守护进程会做一个简单的字符串匹配比较,来决定到哪里替换用户的名字。

  3 vsftp中怎样限制用户只能在自己的home目录下?

  解决方法:

  有些时候你不想让FTP用户可以访问他自己home目录之外的其他文件。vsftp守护进程可以通过chroot配置这个策略。编辑/etc/vsftpd/vsftpd.conf文件,添加一行:

  chroot_local_user=YES

  保存之后记得重启vsftpd服务:

  service vsftpd restart

  重启服务之后,FTP所有用户都将受限制,只能访问他们home目录的文件了。

  4如何修改vsftpd的默认根目录/var/ftp/pub到另一个目录?

  解决方法:修改ftp的根目录只要修改/etc/vsftpd/vsftpd.conf文件即可:

  加入如下两行:

  local_root=/var/www/html

  chroot_local_user=YES

  重新启动服务:

  service vsftpd restart

  任何一个用户ftp登录到这个服务器上都会chroot到/var/www/html目录下。

  参考文献:

  http://bsdftpd-ssl.sc.ru/doc/unix/xferlog.5.txt

  http://vsftpd.beasts.org/vsftpd_conf.html

  1 日志文件文件出现错误信息“500 OOPS: vsftpd: not found: directory given in 'secure_chroot_dir':/usr/share/empty”。 解决方法:vsftpd.conf 添加一行: secure_chroot_dir=/opt/usr/share/empty 建立一个目录 mkdir /opt/usr/share/empty 然后关闭匿名登录把 vsftpd.conf 中的anonymous_enable=YES 修改为 anonymous_enable=NO 2 怎么配置vsftpd来chroot虚拟用户? 解决方法: 当尝试在vsftpd下chroot虚拟用户的时候,需要这样做:在vsftpd.conf里 guest_enable=yes #virtual users are mapped to user ftp which owns all dirs guest_username=ftp #chroots the virtual user to his directory (user joe has directory joe) chroot_local_user=YES user_sub_token=$USER 关键的事情是确保在/etc/passwd的ftp用户的主目录实际上包含在/var/ftp/$USER里的字符串$USER 守护进程会做一个简单的字符串匹配比较,来决定到哪里替换用户的名字。 3 vsftp中怎样限制用户只能在自己的home目录下? 解决方法: 有些时候你不想让FTP用户可以访问他自己home目录之外的其他文件。vsftp守护进程可以通过chroot配置这个策略。编辑/etc/vsftpd/vsftpd.conf文件,添加一行: chroot_local_user=YES 保存之后记得重启vsftpd服务: service vsftpd restart 重启服务之后,FTP所有用户都将受限制,只能访问他们home目录的文件了。 4如何修改vsftpd的默认根目录/var/ftp/pub到另一个目录? 解决方法:修改ftp的根目录只要修改/etc/vsftpd/vsftpd.conf文件即可: 加入如下两行: local_root=/var/www/html chroot_local_user=YES 重新启动服务: service vsftpd restart 任何一个用户ftp登录到这个服务器上都会chroot到/var/www/html目录下。 参考文献: http://vsftpd.beasts.org/vsftpd_conf.html

邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅ZDNet技术邮件将是您的最佳途径之一。