当前位置 博文首页 > 文章内容

    在项目中使用FTPClient上传文件遇到550 Fial to change directoty问题:csdnLeraner的博客

    作者:shunshunshun18 栏目:未分类 时间:2021-10-17 20:15:32

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    推荐 IIS7批量FTP管理工具 IIS7批量FTP管理
    IIS7批量FTP管理功能说明:
    1、可批量导入,导出FTP信息
    2、其他ftp工具有的功能,我们也有
    3、特色功能:可以定时上传下载
    4、数据信息列表化、一眼就能知道那个是那个
    5、批量连接 标签页式切换 方便快捷
    6、7大连接模式 更多好的兼容
    7、内嵌编辑器 有效解决普通txt记事本乱码
    8、锁屏功能 当程序有规定时间内没人操作,则自动锁程序。输入密码才可以正常操作

    本产品适用于:懒得记录FTP信息和有批量定时备份,上传下载的运维或站长。

    图:


    IIS7批量FTP管理

    前提:使用客户端访软件FTP服务器对文件进行操作是OK的。
    问题:在代码中执行FTPClient的changeWorkingDirectory(pathname)方法失败,debug代码的时候报550 Fial to change directoty。

    changeWorkingDirectory方法执行返回falsehou 文件依然上传成功了,只不过上传的目录是vsftpd.conflocal_root指定的目录,而不是我们代码中指定的目录。


    举个栗子

    我的代码: changeWorkingDirectory("/ftpfile/img") //返回false

    nginx配置项:
    在这里插入图片描述
    vsftpd配置项:
    在这里插入图片描述

    So,这时候文件会上传到/ftpfile,然而我们在浏览器输入"nginx域名+文件名"想要访问上传的文件是访问不到的,因为/ftpfile/img下没有这个文件


    解决方法:想要将文件存到我们指定的目录,就需要在配置文件中将chroot_local_user这一项设为YES,设置如下:

    配置项说明:
    在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置文件来控制用户切换目录

    • chroot_list_enable=YES(NO)
      设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
    • chroot_list_file=/etc/vsftpd.chroot_list
      用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
    • chroot_local_user=YES(NO)
      用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。

    结论

    So,想要访问成功:

    1. 在代码中不调用changeWorkingDirectory方法,就在vsftpd中设置存储文件的目录
    2. 在代码中调用changeWorkingDirectory方法,就要修改vsftpd的配置让登陆的用户能够有切换目录的权限。
    cs