ftplib.error_perm: 550 权限不足,匿名用户无法存储文件

4 投票
1 回答
4881 浏览
提问于 2025-04-18 12:11

我创建了一个用Python写的FTP客户端和服务器。服务器用的是Python的 pftpdlib,客户端用的是 ftplib。我成功启动了服务器,并通过Python客户端连接上了它。但是,当我想把一个文件存储到服务器时,出现了以下错误。

File "/usr/lib/python2.7/ftplib.py", line 471, in storbinary
    conn = self.transfercmd(cmd, rest)
  File "/usr/lib/python2.7/ftplib.py", line 376, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
  File "/usr/lib/python2.7/ftplib.py", line 339, in ntransfercmd
    resp = self.sendcmd(cmd)
  File "/usr/lib/python2.7/ftplib.py", line 249, in sendcmd
    return self.getresp()
  File "/usr/lib/python2.7/ftplib.py", line 224, in getresp
    raise error_perm, resp
ftplib.error_perm: 550 Not enough privileges.

下面是我服务器的代码

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
authorizer = DummyAuthorizer()
authorizer.add_anonymous("/home/deepal/anonymous")
handler = FTPHandler
handler.authorizer = authorizer

handler.banner = "Server Ready.."

address = ("",21)
server = FTPServer(address, handler)

server.max_cons = 10
server.serve_forever()

接下来是客户端的代码。

from ftplib import FTP
hostname = sys.argv[2]
ftp = FTP(hostname)
ftp.login()
filepath = "/home/deepal/Desktop/infile"
localfile = open(filepath,"rb")
ftp.storbinary("STOR "+str(os.path.basename),localfile)

我需要以匿名的方式把一个文件传输到服务器。有没有人能帮我看看我的代码哪里出错了,导致出现了上面的错误?这样以匿名方式存储文件是不可能的吗?

谢谢。

1 个回答

4

我自己解决了这个问题。我需要给匿名用户适当的权限。把这一行:

authorizer.add_anonymous("/home/deepal/anonymous")

改成:

authorizer.add_anonymous("/home/deepal/anonymous", perm='elradfmwM')

就可以了。

撰写回答