问题现象:某部件下发到我们部件的内容,去ftp下载的时候失败,报错无权限,ftp 550
550错误,一般有如下几种可能:
1. 路径错误
2. 路径下文件不存在
3. 文件所在目录对于ftpvrpv8用户无执行权限
由于代码一直运行良好,目前是在测试环境测试,所以路径错误排除;
检查了下权限依然正常;
无招,问了下之前的维护,才知道原因:代码里用了port模式去连接ftp服务器,但是测试环境ftp服务器肯定是配置了passive模式。
有关port模式和passive模式
port模式:客户端连接服务端,说:哥,你过会往我2000端口发数据啊
passive模式:客户端连接服务端,然后服务端说,弟啊,过会来我2000端口取数据。
一般情况下我们的ftp服务器都是用passive模式的,为啥呢?比如客户端ip是192.168.2.3,但是访问ftp服务器的时候比如ftp.baidu.com的时候,是用公网ip去了,比如220.12.12.32,结果你说往我2000端口发,服务端基本是不知道怎么发的,所以一般都是服务器告诉你,过会来2000端口来取数据
我们部件下发都是内网,所以不小心用了port模式
问题解决:修改/etc/vsftpd.conf中port_enable为YES,pass_enable为NO,,重启vsftpd服务