如何为活动目录的用户授予FTP文件夹的权限

时间:2009-05-12 20:00:16

标签: c# .net asp.net active-directory ftp

我有一个asp.net Web应用程序,它在FTP站点上创建一个文件夹,但我需要将该文件夹的权限授予活动目录的某些用户。

如何在创建文件夹时在我的应用程序中以编程方式执行此操作?

3 个答案:

答案 0 :(得分:1)

标准FTP不允许更改权限或文件所有权,但FTP服务器通过自定义SITE命令允许此类事情是相当常见的。至少,这对于UNIX托管的FTP服务器来说很常见。

尝试使用标准FTP客户端连接到服务器并输入site help。这应该为您提供可用的自定义SITE命令的列表。然后,您可以通过键入site help <cmd>来获取特定命令的用法。

我不确定您对基于Windows的服务器的选择是什么,因为权限模型比标准UNIX权限更精细。在UNIX服务器上,您通常可以更改组所有权和权限,但除非您是root用户,否则不允许更改文件所有者。我不应该说以root身份登录到FTP服务器是一个非常糟糕的主意。

我希望能有所帮助。

[R

答案 1 :(得分:1)

您没有说明您正在运行什么类型的FTP服务器,或者您希望AD用户以何种方式与新文件夹进行交互。我假设您使用的是IIS的FTP服务,并且您需要AD用户能够使用FTP访问新文件夹。

IIS使用与Windows中其他文件访问方法相同的访问权限(从文件夹的“属性”视图的“安全”选项卡访问)。

我创建了一个WinForm,它将执行以下操作:创建一个新的本地用户帐户(并将它们添加到一个组),在我们的FTP服务器的基本目录下创建一个新目录,创建一个新的虚拟FTP文件夹(以便用户可以映射到文件夹的连接),最后让新用户完全控制新目录(因为目录是虚拟文件夹,新用户可以通过FTP完全控制)。

听起来您不需要创建新用户,只需要授予他们更改新目录的权限即可。在我的应用程序中,我发出外壳来调用批处理文件并传递一些参数。

修改目录(或文件)访问权限的命令是:

cacls [The path to your new directory] /E /P [The AD user name]:C

我不记得那些参数意味着什么了;我建议你研究这个命令,以确保它完全符合你的要求。

从VB.Net执行此操作:

Shell(System.Configuration.ConfigurationSettings.AppSettings.Item("CACLS_batPath") & " " & strFolderPath & " " & _strUserName, AppWinStyle.NormalFocus, True, -1)

这将打开一个可见的命令窗口并执行批处理文件,并将参数传递给它。 (我刚刚发现我在WinForms中执行此操作,从ASP.Net调用可能并不那么容易,请在此处查看有关从ASP.Net执行批处理文件的信息:http://codebetter.com/blogs/brendan.tompkins/archive/2004/05/13/13484.aspx

BAT文件的内容是:

echo "update file permissions"
cacls %1 /E /P %2:C
REM PAUSE

祝你好运!

答案 2 :(得分:1)

我假设您正在创建文件夹,并希望在c#应用程序中设置权限。

您想要查看DirectorySecurity类(msdn

您为新创建的目录创建一个directorySecurity类,然后添加FileSystemAccessRules以根据AD用户和组定义适当的访问权限。