2012-09-24 277 views
1

我被要求用不同的用户可以登录的python设置FTP服务器,并且根据他们的登录名将显示不同的文件结构。实现FTP接口/协议

该结构的一部分将是只读的,另一部分是写入,读取,创建和删除。

服务器上不存在文件结构和文件,因为用户通过查询外部服务器扩展文件夹,所以必须以懒惰的方式构建。

我猜,服务器需要从外部模仿FTP接口/协议,但在内部完全不同。

我想知道这将是多么大或困难的工作,因为我需要提供某种类型的时间表来获得这项工作。

这里有没有这样的东西?有没有人做过类似的事情?

试图实现这种模型是否存在任何明显的问题?

回答

4

twisted project会成为明显的起点;下面的例子将启动验证对用户密码文件一个简单的FTP服务器,但也允许匿名访问

from twisted.protocols.ftp import FTPFactory, FTPRealm 
from twisted.cred.portal import Portal 
from twisted.cred.checkers import AllowAnonymousAccess, FilePasswordDB 
from twisted.internet import reactor 

p = Portal(FTPRealm('./'), 
      [AllowAnonymousAccess(), FilePasswordDB("pass.dat")]) 
f = FTPFactory(p) 

reactor.listenTCP(21, f) 
reactor.run() 

您可以轻松地从那里展开。你如何实现'文件'和'目录'完全取决于你。

+0

所以才有可能为扭曲打电话给我自己的功能对于文件和目录,我在那里做任何事情,并返回结果扭曲? – GP89

+0

没问题。遵循Twisted教程;延期的概念是强大的,但你确实想阅读文档来充分理解这种权力。 –

+0

辉煌,感谢您的正确方向!我不知道该从哪一个开始:) – GP89

0

为什么选择python?我的意思是Python与它有什么关系?我会寻找一些PAM模块,可以在登录创建用户特定的虚拟文件系统的结构,以及是否有没有现成的一个,考虑修改一些pam_mount,类似的东西..

http://pam-mount.sourceforge.net

+0

..和这个问题可能属于superuser.com –

+0

大量的代码来创建用户文件结构已经用Python编写的,只是不同的接口 – GP89