我有一个asp.net Web应用程序,它在FTP站点上创建一个文件夹,但我需要将该文件夹的权限授予活动目录的某些用户。
如何在创建文件夹时在我的应用程序中以编程方式执行此操作?
答案 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用户和组定义适当的访问权限。