error_perm:550权限被拒绝

时间:2014-05-16 01:43:22

标签: 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()

这就是我的错误:

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.

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

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

 connect.cwd('/testfolder')

我将收到error_perm:550无法更改目录。

但是我仍然可以很好地阅读现有文件(有 connect.retrlines(&#34; RETR&#34; + filename))

我对Python和Linux都很陌生,所以我不知道自己在做什么。我需要一些帮助。

4 个答案:

答案 0 :(得分:5)

也许这会有所帮助:

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

例如在Ubuntu中:
修改/etc/vsftpd.conf

并在行

;write_enable=YES

删除分号

最后重启服务:

sudo service  vsftpd restart

答案 1 :(得分:4)

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

你可以通过这种方式检查你的位置:

print connect.pwd()

以及当前目录的内容是什么:

print ftplib.FTP.dir(connect)

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

connect.cwd('/public_html/testfolder')

答案 2 :(得分:0)

您是否检查了FTP服务器上的访问权限?我只是遇到了同样的问题。发生此问题的原因是我无权读取要将文件上传到的文件夹。

答案 3 :(得分:0)

如果遇到此错误,您可以检查几件事。

  1. 检查您尝试使用 ftp server 访问的 connect.pwd() 的当前目录。确保您对该目录具有写入权限。您可以尝试手动复制粘贴以进行验证。
  2. 确保您只提供文件名而不是完整路径。对我来说,这引起了问题。例如,filename = "upload_img.jpg" 而不是 filename = "D:/apth/to/upload_img.jpg"。解决方法是使用 os.split() 提取 CWD,然后使用 os.chdir()
  3. 设置 CWD