admin管理员组

文章数量:1613632

故障介绍:
Linux搭建的vsftpd ,在linux访问(本文使用curlftpfs 挂载ftp到/ftp目录),文件创建和修改的时间是不带时区的时间,而windows访问的文件是带时区的。

故障复现:
Linux搭建
[root@node1 ~]# vsftpd -v
vsftpd: version 3.0.2

配置文件如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
测试访问:

Windows 上传新文件时,刷新后恢复成正常时间:
上传文件完成后:

刷新后:

查看详细时间:

故障分析:

vsftpd 默认使用GMT时区,

所以访问文件时,linux和windows的文件时间都是一样的,区别在于windows会自动加上自己的时区,而linux不会。
Windows 自动认为文件不带时区,所以自动加时区。

Linux 看到的文件不会加上时区,所以会出现时间不对的情况。

解决方法:
暂时未找到linux和windows都解决方法,后续如果找到会更新。
如果需要同时给linux和windows都提供的服务的FTP,并且对时间有要求的场景,不要选择vsftpd作为FTP服务。

如果只是针对linux使用的场景可以如下修改配置文件,windows使用的场景则不用修改:
添加配置文件中以下参数,进行重启
use_localtime=YES

发现linux的时间恢复正常了,但是windows的时间又多了8小时。

本文标签: 上传文件时间VSFTPdWindows