动态创建FTP用户

时间:2010-06-30 17:29:22

标签: c# php

我需要通过C#软件创建FTP用户,这是运行客户端,我不知道从哪里开始或如何做到这一点,我甚至不确定这是否可行,因为这可能需要记录作为根?

我的另一个选择是通过C#软件调用PHP脚本,它可以调用system()脚本吗?

这个功能需要在Linux共享主机上工作(因为这是共享的,我不能尽我所能)。

2 个答案:

答案 0 :(得分:2)

管理FTP服务器的唯一方法是通过DirectAdmin。因此,除非有DirectAdmin的API并且您可以访问它,或者您的共享托管服务提供商提供某种API,否则您将无法执行此操作。

如果您可以使用system()管理共享主机上的用户,那么一定要走那条路。

如果不能,那么您可能需要创建一个在服务器上运行的脚本,该脚本接受传入的请求,然后直接与DirectAdmin一起管理用户。这将要求脚本知道DirectAdmin凭据,如果DirectAdmin发生任何更新,则可能会破坏您的脚本。我会非常小心这种方法,因为任何有权访问此脚本的人都可以管理ftp用户。如果您的客户可以管理这些FTP用户,任何人都可以。如果有任何身份验证,用户将如何与客户端进行“身份验证”。如果是这样,他们如何进行身份验证?因为您的“api”脚本也需要使用该身份验证。

我的问题是,你真的需要创建一个FTP用户吗?如果他们只需要上传文件,他们不能简单地通过在线表格上传文件吗?还是通过客户?你需要使用FTP吗?

修改 正如我在评论中所说,一个想法是拥有一个服务器端脚本(可能是PHP)来处理文件。它会接受上传/删除/删除文件的请求。当文件上传到网站时,它将被存储,并且会返回一个特殊的标记以及文件的位置。

然后,客户端将获取令牌,将其存储在本地,当用户在客户端上管理文件时,它将使用该令牌进行将来的修改。我会随机生成此令牌(不基于用户的任何数据)。存储令牌的方式取决于您,可以在文件系统中包含文件,也可以存储在数据库中。

客户端与网站之间的通信应尽可能通过SSL完成,以阻止MITM攻击。

至于上传文件,这取决于您的客户端如何对其用户进行身份验证。如果它是通过中央数据库,共享托管服务器可以访问它,如果你不想这样做,那么你需要类似于公钥系统的东西。这样客户端就可以发送共享主机脚本可以判断用户是否有效的密钥。但是,当密钥被撤销时,你必须知道脚本等等。

因此,您需要如何处理此部分。

答案 1 :(得分:1)

如果这是我 - 这又添加了一个移动部分,我意识到 - 我将用户的创建解耦,并将其置于远程服务器上的长时间运行过程中,其中服务器进程都是并且PHP外观使用Gearman之类的东西来协调作业。如果没有像rsh这样的外部工具,您将无法使用C#在远程Linux服务器上创建进程。有些东西只是让我对通过PHP站点创建用户的想法不以为然,除非它只能在没有外部访问权限的私有内部网上访问。拥有一个单独的流程只需要一个额外的步骤来验证。