创建FTP用户动态

问题描述:

我需要通过一个C#软件,这是运行客户端创建FTP用户,我不知道从哪里开始或如何做到这一点,我甚至不知道这是可能的,因为这会需要以root身份登录?创建FTP用户动态

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

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

+0

您使用的是什么FTP服务器?如何正常创建FTP用户? – William 2010-06-30 17:35:53

+0

通常我通过DirectAdmin控制面板创建它们,但我不知道安装了哪台服务器。 – Dominique 2010-06-30 17:36:55

+0

使用客户端软件的用户是否知道DirectAdmin的信息? – William 2010-06-30 17:38:12

如果这是我 - 这是再增加一个运动部件,我知道 - 我倒是分离用户的创建,并放置在远程服务器上,其中两个服务器上的一个长期运行的进程过程和PHP外观使用类似Gearman来协调作业。如果没有像rsh这样的外部设施,您将无法从C#创建远程Linux服务器上的进程。除了只能通过专用Intranet访问并且没有外部访问权限之外,某些内容只会让我想到通过PHP网站创建用户的想法。有一个单独的过程会给你一个额外的步骤来验证。

+0

我想更像是调用系统函数或类似的东西来创建FTP用户。在某些情况下,软件的用户需要访问某人才能将文件放入服务器,但我不希望他们手动创建FTP用户,也不需要设置用户/密码/默认文件夹。 我也不喜欢PHP的想法,但我需要能够远程创建FTP用户,我希望能找到更好的解决方案:) – Dominique 2010-06-30 17:43:47

您必须通过DirectAdmin管理FTP服务器的唯一方法。因此,除非有DirectAdmin的API并且您有权访问它,否则您的共享主机提供商提供某种类型的API,您将无法执行此操作。

如果您可以使用system()管理共享主机上的用户,那么请尽量使用该路由。

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

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

编辑: 所以正如我在评论中所说,一个想法是有一个服务器端脚本(也许PHP),将处理管理文件。它会接受上传/删除/删除文件的请求。当一个文件上传到网站时,它将被存储,并且它会返回一个特殊的令牌以及文件的位置。

客户端会再取令牌,本地存储它,当用户管理客户端上的文件时,它会使用该令牌进行进一步修改。我会随机生成此令牌(不基于用户的任何数据)。如何存储令牌取决于您,可以在文件系统上使用这些文件或在数据库中。

如果可能的话,客户端和站点之间的通信应该通过SSL来完成,以阻止MITM攻击。

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

因此,您要如何处理这部分内容取决于您。

+0

该软件的用户将锐意创建新的FTP用户,但他们会通过它在线发送文件很多,我不希望每个用户都使用相同的FTP帐户/密码,这就是为什么我想为每个用户创建一个FTP,我可以使用相同的子文件夹,但是如果有人希望他能找到账户/密码并弄乱其他用户文件。 – Dominique 2010-06-30 17:52:54

+0

但他们如何发送文件,他们已经使用FTP?他们会通过客户端通过FTP客户端发送它们吗? – William 2010-06-30 17:54:43

+0

他们只通过软件发送文件,这个软件的用户不知道FTP是什么,一切都发送到FTP服务器,但在后台,用户甚至不知道他们有一个与他们的软件相关的FTP密码帐户。 – Dominique 2010-06-30 17:58:04