Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92603676
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-03-23 16:53:18

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:从服务器到客户端
i:从 客户端到服务器
a       
访问模式:
a:匿名的用户
g:来宾用户
r:本地用户即系统用户
guest@my.net    
用户名称
ftp 
服务类型
认证方式包括:
1         rfc931 认证
0:没有进行认证
认证用户的id
完成状态:
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目录下。

阅读(524) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~