【问题标题】:creating (home) folder and setting folder permissions with other user impersonation in c#在 C# 中使用其他用户模拟创建(主)文件夹并设置文件夹权限
【发布时间】:2021-09-30 09:27:44
【问题描述】:

问题描述

我正在尝试使用我的程序创建 Active Directory 用户。 所有与活动目录相关的部分都在工作。对我来说证明一个问题是模拟在我们的文件服务器上创建一个文件夹并设置适当的权限。 模拟的问题是软件需要使用多个管理帐户。因此,它不是 shift + rightclick -> 以不同用户身份运行的解决方案

任务方法

所以我通常如何处理它包括以下步骤:

  1. 使用对主驱动器文件夹具有适当权限的帐户登录
  2. 导航到“\FileServer\Data\Home”
  3. 为用户创建一个文件夹,例如 '\FileServer\Data\Home\exampleuser1'
  4. 为给定用户设置适当的读/写权限

我会以编程方式在(伪代码)行中做一些事情:

string path = "\\FileServer\Data\Home\exampleuser1"
if (!Directory.Exists(path))
{
    Directory.Create(path);
    AddDirectorySecurity(path, @"MYDOMAIN\exampleuser1", FileSystemRights.TakeOwnership, AccessControlType.Allow);
}

但是,此代码必须使用另一个用户帐户“domain\admin_julian”来执行

【问题讨论】:

  • 让我了解您的问题...您想让用户以管理员权限运行上述代码吗?出于安全原因,我不会这样做。
  • 没有。在我(管理员)从我的软件创建用户帐户时,我希望软件自动创建用户主文件夹
  • 只是一个想法。为什么不创建一个以适当权限(例如在文件服务器上)运行的服务,该服务执行文件夹创建和权限分配任务,由搜索 AD 以查找新用户的任务触发。
  • 这个想法很棒,但是在一家大公司里,我只有做日常业务的权限。除了在给定任务中创建文件夹和管理权限之外,我无权更改给定服务器上的任何内容。
  • 也就是说,在特定权限下运行的本地任务可能是我的故障转移解决方案,但代表我必须每 3 个月管理一次密码的另一个位置。

标签: c# directory io permissions impersonation


【解决方案1】:

已在此处找到答案: How to provide user name and password when connecting to a network share(来自 Luke Quinane 的回答)

实现他的类,然后像这样使用它:

using (new NetworkConnection(@"\\server\Data\Home", cred))
{
    string path = $@"\\server\Data\Home\testuserfolder";
    string domainName = "domain.com";
    string userNameToCreate = "testuser";
    Directory.CreateDirectory(path);
    SetFullPermission(path, userNameToCreate);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2015-10-18
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多