error_perm:550权限被拒绝

can*_*izu 8 python ftp permissions denied

我正在学习使用Python进行Web编程,而且基本上还是通过讲座/教程.

我正在尝试将文件上传到服务器.这是我的代码:

import ftplib
import sys

filename = sys.argv[1]
connect = ftplib.FTP("***.**.***.**")
connect.login("testuser","pass")
file = open(filename, "rb")
connect.storbinary("STOR " + filename, file)
connect.quit()
Run Code Online (Sandbox Code Playgroud)

这是我的错误:

File "C:\Users\test\putfile.py", line 8, in <module>
   connect.storbinary("STOR " + filename, file)
File "C:\Python27\lib\ftplib.py", line 471, in storbinary
   conn = self.transfercmd(cmd, rest)
File "C:\Python27\lib\ftplib.py", line 376, in transfercmd
   return self.ntransfercmd(cmd, rest)[0]
 File "C:\Python27\lib\ftplib.py", line 339, in ntransfercmd
   resp = self.sendcmd(cmd)
 File "C:\Python27\lib\ftplib.py", line 249, in sendcmd
   return self.getresp()
 File "C:\Python27\lib\ftplib.py", line 224, in getresp
   raise error_perm, resp
 ftplib.error_perm: 550 Permission denied.
Run Code Online (Sandbox Code Playgroud)

testuser应该具有写入文件的权限,因为该文件夹归他所有,并且他具有root权限(在sudoer文件中添加).

如果我添加这行,会发生同样的事情:

 connect.cwd('/testfolder')
Run Code Online (Sandbox Code Playgroud)

我将得到error_perm:550无法更改目录.

但是我仍然可以正常读取现有文件(使用connect.retrlines("RETR"+ filename))

我对Python和Linux都很新,所以我不知道我在做什么.我需要一些帮助.

fve*_*vel 6

也许这可以帮助:

使用FTP不足以成为文件和目录的所有者.必须正确配置服务和守护程序FTP才能编写和创建文件等.

例如在Ubuntu中:
编辑/etc/vsftpd.conf

并在线

;write_enable=YES
Run Code Online (Sandbox Code Playgroud)

删除分号

最后重启服务:

sudo service  vsftpd restart
Run Code Online (Sandbox Code Playgroud)


ell*_*kie 5

我会检查您是否在正确的位置。我遇到了同样的问题,然后我意识到我位于“ / public_html ” 上方的根文件夹中的原定位置,因此没有要输入的文件夹,并且我没有权限存储任何文件。

您可以通过以下方式检查自己的位置:

print connect.pwd()
Run Code Online (Sandbox Code Playgroud)

以及当前目录的内容是:

print ftplib.FTP.dir(connect)
Run Code Online (Sandbox Code Playgroud)

因此,如果您位于根目录(“ / ”)中“ / public_html ” 上方,并且想要将当前目录更改为“ / testfolder ”,则需要使用:

connect.cwd('/public_html/testfolder')
Run Code Online (Sandbox Code Playgroud)