当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : vsftpd服务以及日志文件显示中文
帖子发表于 : 2009-01-04 0:18 
头像

注册: 2007-09-12 23:07
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
小弟初学
用vsftpd架设了一个简单的ftp服务器用来测试学习 服务器端客户端中文乱码问题已经解决
方法:参考论坛里面前辈们的帖子 先从源里面安装vsftpd(最新版为2.0.7)配置成功后remove
然后编译安装打好补丁的vsftpd2.0.6
但是sudo /usr/local/sbin/vsftpd start 提示:500 OOPS: vsftpd: cannot open config file:start
stop restart reload提示也是一样的
sudo /etc/init.d/vsftpd start等终端无输出
没有显示出可爱的START.......[ok]
只能sudo /usr/local/sbin/vsftpd
然后ftp服务器才能起来 stop的话只能在终端ctrl+c来实现
请问各位前辈 这个问题如何解决
另外 配置了log 但是上传下载中文的文件的话 用gedit打开vsftp.log查看 日志显示的文件名是????.后缀 修改gedit打开文件的编码 问题依旧 请问该如何能够看到客户端上传下载了什么中文的文件呢 这个貌似比较重要吧
另外 vsftpd生成的日志文件 xferlog以及vsftpd.log有什么专门的日志查看程序打开吗 系统日志无法打开 提示无效日志文件 vsftpd.log是vsftpd独有的 这个没办法 xferlog呢??
请各位前辈赐教 谢谢


页首
 用户资料  
 
2 楼 
 文章标题 : Re: vsftpd服务以及日志文件显示中文
帖子发表于 : 2009-01-04 22:59 
头像

注册: 2007-09-12 23:07
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
我顶。。。。。。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: vsftpd服务以及日志文件显示中文
帖子发表于 : 2009-01-05 13:06 
头像

注册: 2008-10-24 8:02
帖子: 313
送出感谢: 0 次
接收感谢: 0 次
再次建议楼主:请学会利用搜索引擎解决问题

这是google里所处来的结果:
http://bbs.51cto.com/archiver/tid-442802.html


_________________
Ubuntu 8.04 @ Intel Pentium D 925 + Intel 945G Chipset + DDR2 1.0G + SATA 160G
http://hi.baidu.com/ws_105


页首
 用户资料  
 
4 楼 
 文章标题 : Re: vsftpd服务以及日志文件显示中文
帖子发表于 : 2009-01-05 14:15 
头像

注册: 2008-10-24 8:02
帖子: 313
送出感谢: 0 次
接收感谢: 0 次
帮你整理了一份, 反正自己也要做笔记的, 分享以下吧:
----
vsftpd 的日志不支持中文日文等字符, 在日志文件中所有的中文文件名都会显示为一连串的问号.
在 vsftpd 的源文件中可以看到为什么会是这样(示例源代码为 Ubuntu 8.04 系统仓库中的源代码.):

先看一看日志记录文件, file logging.c, line 152 - 171:
代码:
      static void
      vsf_log_do_log_to_file(int fd, struct mystr* p_str)
      {
        if (!tunable_no_log_lock)
        {
          int retval = vsf_sysutil_lock_file_write(fd);
          if (vsf_sysutil_retval_is_error(retval))
          {
            return;
          }
        }
        str_replace_unprintable(p_str, '?');
        str_append_char(p_str, '\n');
        /* Ignore write failure; maybe the disk filled etc. */
        (void) str_write_loop(p_str, fd);
        if (!tunable_no_log_lock)
        {
          vsf_sysutil_unlock_file(fd);
        }
      }

可以看到函数调用 str_replace_unprintable(p_str, '?'), 会把所有无法打印的字符全部替换为问号.
再看一看 str_replace_unprintable 函数, file str.c, line 656 - 668:
代码:
      void
      str_replace_unprintable(struct mystr* p_str, char new_char)
      {
        unsigned int i;
        for (i=0; i < p_str->len; i++)
        {
          if (!vsf_sysutil_isprint(p_str->p_buf[i]))
          {
            p_str->p_buf[i] = new_char;
          }
        }
      }

这样我们就有追踪到了函数 vsf_sysutil_isprint, file sysutil.c, line 883 - 903:
代码:
      int
      vsf_sysutil_isprint(int the_char)
      {
        /* From Solar - we know better than some libc's! Don't let any potential
         * control chars through
         */
        unsigned char uc = (unsigned char) the_char;
        if (uc <= 31)
        {
          return 0;
        }
        if (uc == 177)
        {
          return 0;
        }
        if (uc >= 128 && uc <= 159)
        {
          return 0;
        }
        return isprint(the_char);
      }

在这个文件中, 我们可以看到有那些字符是"可打印"的, 也可以看到为什么日志中的中文文件名会变成一连串的问号.
对此, 作者注释出了这样做的原因: "Don't let any potential control chars through".
这样尽可能的提高了安全性, 但是对于非拉丁语系的语言却造成了一些不便.

解决这个问题, 有两种方法:

1.注释掉 logging.c 文件中的 static void vsf_log_do_log_to_file(int fd, struct mystr* p_str) 函数中的
str_replace_unprintable(p_str, '?');
这一行. 这样在 UTF-8 的 locale 环境下就可以记录中文文件名了. 但是这样做会在一定程度上降低系统的安全性, 有可能会使一些攻击行为能够得逞.
2. 配置 vsftpd 通过 syslog 些日志: syslog_enable=YES
具体请参考:
man vsftpd.conf


_________________
Ubuntu 8.04 @ Intel Pentium D 925 + Intel 945G Chipset + DDR2 1.0G + SATA 160G
http://hi.baidu.com/ws_105


页首
 用户资料  
 
5 楼 
 文章标题 : Re: vsftpd服务以及日志文件显示中文
帖子发表于 : 2009-01-05 22:01 
头像

注册: 2007-09-12 23:07
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
非常感谢楼上前辈共享的资料 日志的中文显示问题已经解决 用的是方法1 严重感谢
就我所遇到的问题 我一直有在百度google上面搜 可能是关键字不太确切吧。。。一直都没找到答案 呵呵
那么关于start stop restart这个问题还有日志查看方面 有什么相关的解决办法吗??
小弟愚钝 没有搜索出相关的解决方法 需要搜索什么关键字比较好呢?? :em06


页首
 用户资料  
 
6 楼 
 文章标题 : Re: vsftpd服务以及日志文件显示中文
帖子发表于 : 2009-01-06 13:41 
头像

注册: 2008-10-24 8:02
帖子: 313
送出感谢: 0 次
接收感谢: 0 次
时辰 写道:
小弟初学
用vsftpd架设了一个简单的ftp服务器用来测试学习 服务器端客户端中文乱码问题已经解决
方法:参考论坛里面前辈们的帖子 先从源里面安装vsftpd(最新版为2.0.7)配置成功后remove
然后编译安装打好补丁的vsftpd2.0.6
但是sudo /usr/local/sbin/vsftpd start 提示:500 OOPS: vsftpd: cannot open config file:start
stop restart reload提示也是一样的
sudo /etc/init.d/vsftpd start等终端无输出
没有显示出可爱的START.......[ok]
只能sudo /usr/local/sbin/vsftpd
然后ftp服务器才能起来 stop的话只能在终端ctrl+c来实现
请问各位前辈 这个问题如何解决
另外 配置了log 但是上传下载中文的文件的话 用gedit打开vsftp.log查看 日志显示的文件名是????.后缀 修改gedit打开文件的编码 问题依旧 请问该如何能够看到客户端上传下载了什么中文的文件呢 这个貌似比较重要吧
另外 vsftpd生成的日志文件 xferlog以及vsftpd.log有什么专门的日志查看程序打开吗 系统日志无法打开 提示无效日志文件 vsftpd.log是vsftpd独有的 这个没办法 xferlog呢??
请各位前辈赐教 谢谢


1. "但是sudo /usr/local/sbin/vsftpd start 提示:500 OOPS: vsftpd: cannot open config file:start"
这个启动方法本来就是错误的, 如果直接使用/usr/local/sbin/vsftpd 这个程序来启动服务器的话, 那么它接受的唯一参数就是 配置文件, 比如 /etc/vsftpd.conf, 而不是 start
上面的错误提示已经说得很明白了
另外, start stop restart 只是启动脚本的参数, 就是 /etc/init.d/ 目录下的那些文件, 都是手工编写的文件, 它们负责检查启动服务所需要的必要条件, 并传递正确的参数, 来启动服务程序

2. sudo /etc/init.d/vsftpd start等终端无输出
没有显示出可爱的START.......[ok]

没有状态输出有许多可能的原因, 比如启动脚本被修改了, 因为你 remove 了系统安装的 软件包, 又重新编译了vsftpd, 所以启动脚本有可能被更改
要检查这个服务是否已经启动, 可以使用下面的命令:
代码:
ps aux | grep vsftpd


_________________
Ubuntu 8.04 @ Intel Pentium D 925 + Intel 945G Chipset + DDR2 1.0G + SATA 160G
http://hi.baidu.com/ws_105


页首
 用户资料  
 
7 楼 
 文章标题 : Re: vsftpd服务以及日志文件显示中文
帖子发表于 : 2009-01-06 19:17 
头像

注册: 2008-10-24 8:02
帖子: 313
送出感谢: 0 次
接收感谢: 0 次
呃, 是不是我说话太冲了 :em03
莫怪, 呵呵
我自己比较喜欢搜索, 看错误提示, 所以 "缺省" 情况下, 我假设别人也是有这样的习惯的 :em09


_________________
Ubuntu 8.04 @ Intel Pentium D 925 + Intel 945G Chipset + DDR2 1.0G + SATA 160G
http://hi.baidu.com/ws_105


页首
 用户资料  
 
8 楼 
 文章标题 : Re: vsftpd服务以及日志文件显示中文
帖子发表于 : 2009-01-07 21:20 
头像

注册: 2007-09-12 23:07
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
ws_105 写道:
呃, 是不是我说话太冲了 :em03
莫怪, 呵呵
我自己比较喜欢搜索, 看错误提示, 所以 "缺省" 情况下, 我假设别人也是有这样的习惯的 :em09


没有啦 非常感谢你的 其实我也是喜欢先搜索来解决问题的 只不过可能有时候搜索的关键字不正确 所以得不到正解
呵呵 对于兄台的帮助 小弟感激不尽 :em01


页首
 用户资料  
 
9 楼 
 文章标题 : Re: vsftpd服务以及日志文件显示中文
帖子发表于 : 2009-01-07 22:02 
头像

注册: 2007-09-12 23:07
帖子: 8
送出感谢: 0 次
接收感谢: 0 次
viewtopic.php?f=54&t=132305&start=0
我是根据这位前辈的方法解决的中文乱码问题
关于/usr/local/sbin/vsftpd
输入
代码:
ps aux | grep vsftpd

能够看到ftp服务已经启动
小弟自作聪明
代码:
sudo gedit /etc/init.d/vsftpd

阅读了一下代码 看到如下
代码:
DAEMON=/usr/sbin/vsftpd
NAME=vsftpd

改为我现在编译安装之后的路径
代码:
#DAEMON=/usr/sbin/vsftpd
DAEMON=/usr/local/sbin/vsftpd
NAME=vsftpd

保存退出
然后 现在
代码:
sudo /etc/init.d/vsftpd start

代码:
root      5565  0.0  0.0   2280   564 ?        S    21:51   0:00 /usr/local/sbin/vsftpd
shichen   5570  0.0  0.0   3460   812 pts/1    S+   21:51   0:00 grep vsftpd

/etc/init.d/vsftpd start|stop|restart|reload 无输出 /usr/local/sbin/vsftpd 空白的问题解决 可以默认的用sudo /etc/init.d/vsftpd start|stop|restart|reload 来控制ftp服务了
谢谢前辈的指导 :em51


_________________
广告位招租。。。。。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译