gpt4 book ai didi

c# - 使用 C# 获取服务器和映射驱动器的 ACL 列表

转载 作者:可可西里 更新时间:2023-11-01 07:54:40 25 4
gpt4 key购买 nike

我们 IT 团队的生产变更实现者的任务是审查我们团队中所有各种对象的安全性,主要是为了确保离职或调到其他团队的人无法再访问我们的服务器共享、Web 目录、SQL 数据库等。我们最近完成了 SQL 部分,我们有一个可重复使用的脚本,可以每年运行一次(或以我们提出的任何频率运行)。它运行良好,我们在几分钟内审计了 10 台左右服务器上的 20 个数据库。

现在,对于服务器的东西。我有一个使用 .NET 2.0 在 C# 中编写的应用程序,它将递归扫描目录列表并将 ACL 转储到文本文件。这很好用。在本地机器上。 UNC 和映射路径不起作用,我收到以下异常消息:该进程不具备此操作所需的“SeSecurityPrivilege”权限。

在这一行:

DirectorySecurity DirSec = di.GetAccessControl(AccessControlSections.All);

其中 di 是从 DirectoryInfo[] 数组枚举的 DirectoryInfo 对象。

我们不太可能被授予 SeSecurityPrivilege 权限。但是我不认为这是必要的。我可以打开文件夹并右键单击属性,然后单击安全选项卡并在 GUI 中查看它。我应该也能够以编程方式访问它。

关于如何更改这部分代码以获得目标文件夹的权限,有什么想法吗?

private void CheckSecurity(DirectoryInfo[] DIArray)
{
foreach (DirectoryInfo di in DIArray)
{
DirectorySecurity DirSec = di.GetAccessControl(AccessControlSections.All);
string sAccessInfo = string.Empty;

foreach (FileSystemAccessRule FSAR in DirSec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
sAccessInfo += GetAceInformation(FSAR);
}

if (sAccessInfo != string.Empty)
{
// Write info to text file
}
}
}

private string GetAceInformation(FileSystemAccessRule ace)
{
StringBuilder info = new StringBuilder();
string line = string.Format("Account: {0}", ace.IdentityReference.Value);
info.AppendLine(line);
line = string.Format("Type: {0}", ace.AccessControlType);
info.AppendLine(line);
line = string.Format("Rights: {0}", ace.FileSystemRights);
info.AppendLine(line);
line = string.Format("Inherited ACE: {0}", ace.IsInherited);
info.AppendLine(line);
return info.ToString();
}

编辑:当获取根文件夹的“GetAccessControl()”方法失败时,如何检查 ACL 中读取属性的远程文件夹? (如果我传入\server\path,它会在获取\server\path 的信息时出错)。

用户帐户是一个域帐户,我有读取文件结构的权限。我可以从文件夹/文件的属性中查看安全性。

我会检查进程监视器,但我不确定我是否能够在服务器上运行它(我不是相关服务器的管理员)。

最佳答案

您收到错误是因为“审核”选项卡,但我相当确定您真正想要在屏幕上访问的是“权限”选项卡上的数据。 SeSecurityPrivilege 控制对 SACL 的访问。

尝试改变

DirectorySecurity DirSec = di.GetAccessControl(AccessControlSections.All);

DirectorySecurity DirSec = di.GetAccessControl(AccessControlSections.Access);

那么你应该停止收到错误

关于c# - 使用 C# 获取服务器和映射驱动器的 ACL 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/570042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com