0
回答
如何在 vsftpd 添加文件操作?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

我想在用户登录时在服务器上写一些信息,vsftpd 本身的 log 不能满足要求, 于是我在 vsftpd(2.2.0) 源码里服务器发送 530 信息给客户端的后面添加了如下函数的调用:

void write_log_system(char *log_str, size_t size){
  int sys_log_fd;
  char *sys_log_file;

  strcpy(sys_log_file, "/var/log/another.log");

  sys_log_fd = open(sys_log_file, O_RDWR|O_APPEND);
  if(sys_log_fd < 0){
    sys_log_fd = open(sys_log_file, O_RDWR|O_CREAT, 0644);
  }

  if(sys_log_fd < 0){
    return;
  }

  write(sys_log_fd, log_str, size);
  close(sys_log_fd);

  return;
}
编译好运行后,用户登录失败,客户端接收到 530 信息,但/var/log/another.log没有添加新的内容。

我已经确认了,上面这个函数单独编译成一个程序,是可以向/var/log/another.log添加新内容的。

另外我试过使用 system("/bin/touch /var/log/another.log"); 替代上面的函数,发现another.log没有发生变化。


有朋友知道应该怎么做吗?

谢谢!

举报
black_code
发帖于5年前 0回/131阅
顶部