问题标签 [dacl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1635 浏览

c# - SetSecurityDescriptorSddlForm(字符串 sddlForm)

根据这个 API,我没有找到任何有用的网站。

字符串的格式是什么?内容?

谢谢

0 投票
1 回答
2326 浏览

c# - 使用 C# 的服务上的 SACL || 使用 C# 获取具有 ACCESS_SYSTEM_SECURITY 权限的服务的句柄

任何人都知道如何使用 C# 在远程服务上获取 SACL?我尝试了许多不同的方法,但基本上没有任何效果。我可以在本地机器上获取 DACL 和 SACL,但在远程机器上获取其中任何一个似乎都是不可能的。

我所做的是创建一个名为的类,该类ServiceSecurity继承自该类NativeObjectSecurity并且其行为与RegistrySecurity该类非常相似。以下是我拥有的两个构造函数:

第一个使用服务名称,而第二个需要服务的句柄。显然,第一个可以很好地获取 DACL 和 SACL,因为它都是本地的,但是要访问远程机器,我使用ServiceController该类在远程机器上查找服务。得到它后,我将ServiceHandle服务的属性传递给ServiceSecurity我构建的类,此时我得到一个未经授权的访问异常,这似乎不正确,因为我的用户帐户是域的域管理员,而本地管理员在目标框上。我也有SeSecurityPrivilege权利,这应该允许我访问。

有人有想法么?似乎SafeHandle我得到的不正确,但SafeHandle属性说它没有关闭并且它是一个有效的句柄,所以我不太清楚发生了什么。

这是我用来尝试检索数据的代码:

以上内容适用于本地权限和审核设置(DACL 和 SACL)。但它被设计为在本地机器上工作。如果我这样做:

ServiceSecurity 构造函数在 SACL 的本地和远程服务器上均失败,如下所示,但仍适用于 DACL:

对于 accessSections,我只指定了一个AccessControlSections,无论是 Audit 还是 Access,并且每次我通过ServiceHandle.


更新:所以也许问题真的应该是,我如何获得ACCESS_SYSTEM_SECURITY有权获得 SACL 的服务的句柄?

0 投票
2 回答
4279 浏览

security - 我是否错误地使用了 SetNamedSecurityInfo?我的文件的 ACL 似乎没有被正确修改

我正在尝试启用和禁用文件的某些访问权限。我发现要做到这一点,你必须弄乱 DACL。我正在使用以下代码来修改文件的 DACL:

所以首先我使用 fopen() 创建一个文件,创建一个 ACL 以授予对 Administrators 组的所有访问权限,然后拒绝对 Administrators 组的写访问权限:

但是,在这些调用之后,我没有对该文件的读取权限。如果我不打电话,我有读/写访问权限(正如预期的那样)。

我应该注意我在管理员帐户下运行,并且功能返回成功。我还尝试为特定的受限用户修改 ACL,但同样的事情发生了……用户被拒绝读取访问权限,而不是我想要的写入访问权限。

我尝试了一系列不同的 set_DACL_for_object() 调用组合,例如用 REVOKE_ACCESS 替换 DENY_ACCESS,用 GRANT_ACCESS 替换 SET_ACCESS,不进行任何 SET_ACCESS 调用等等,但似乎没有任何效果。

我应该注意,大部分代码都取自这个 MSDN 示例,所以我认为它应该可以工作。我到底做错了什么?

0 投票
3 回答
3561 浏览

permissions - WiX 权限,我如何用 DACL 标志表达“修改”

我正在尝试将自定义权限作为 WiX 3.0.4318.0 安装程序的一部分应用于文件夹。

在资源管理器中的安全属性 UI 方面,我想将修改添加到 BUILTIN\Users 的权限中。显然,它需要对用户名的本地化具有弹性。因此,根据我迄今为止的研究,我至少想要:

问题:

  1. 我在一个子目录中执行此操作 - 我假设 Permission 和 PermissionEx 之间的选择是 Moot 是否正确?

  2. 资源管理器中的文件夹权限对话框中的“修改”在权限方面映射到什么 - 我看到许多示例,人们将其翻译为幻数或一大组标志 - 其他人使用了什么(目的是允许创建、读取、写入、追加和删除,这在 UI 中最好用简单权限表示为“修改”)。我查看了底层权限,icacls它告诉我它称为“M”,但我无法将它们映射到“特定权限”(按照 使用的术语icacls /?)。windows 帮助中还有另一个映射表。有没有人得到一个有效的权威答案?

在关于 PermissionEx (WIX)的问题中有一个非常相似的未回答问题,将其作为重复引用将是残酷但公平的。

0 投票
1 回答
4725 浏览

c# - 有没有办法在 C# 中修改进程 DACL

我有更改进程 DACL 的旧版 C++ 代码,并且正在尝试使用 .NET 3.5 中的托管代码类。我在网上找到了代码,其中有人创建了一个 SetAclOnServices 类,该类扩展了服务的 NativeObjectSecurity 类。我认为我可以实现这一点,只需将 ResourceType.Service 更改为 ResourceType.KernelObject 但是当我调用 GetAccessControl 它失败并出现 File Not Found 错误。

0 投票
1 回答
2407 浏览

windows - 是否有查看命名管道安全 DACL 的工具?

我尝试使用 sysinternals 的 pipeacl 和进程资源管理器。

pipeacl 给了我一个错误,sysinternals 似乎不支持命名管道的安全性。

0 投票
1 回答
1730 浏览

winapi - Win32 API CreateFile 以使用空 DACL(安全描述符)打开文件

我正在使用 CreateFile 来获取文件的句柄以将 ACE 添加到其 DACL。问题是,当文件没有权限时,当我调用函数 CreateFile 时出现访问被拒绝错误,我是文件的所有者和管理员。如果我使用资源管理器,我可以添加权限。

我对 OpenFile 或直接设置安全描述符等其他功能不感兴趣,我对打开此类文件的正确组合感兴趣。

我在 MSDN 中读到我必须使用特定的访问权限,我试过:

CreateFile(lpFileName, READ_CONTROL | WRITE_DAC, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS);

CreateFile(lpFileName, READ_CONTROL | WRITE_DAC, 0, NULL, OPEN_EXISTING, ACCESS_SYSTEM_SEURITY);

我都拒绝访问。有任何想法吗?

谢谢,加比

0 投票
1 回答
1496 浏览

winapi - 在 CreateFile() 中,将只读权限分配给标准用户 Everyone 的最快方法是什么。并且没有其他任何人的权限

在 Windows 中,我有一个应用程序只需要将访问控制设置为用户/组“每个人”。并将权限设置为只读。在 Linux 下,具有八进制权限的简单open()调用004就足够了。在 Windows 上,我如何完成同样的事情?最好在调用CreateFile().

0 投票
2 回答
941 浏览

windows - CreateNamedPipe() 中的 lpSecurityAttributes 需要多长的生命周期?

  1. 我多久可以破坏lpSecurityAttributes传递给指向的结构CreateNamedPipe()
  2. 每个管道实例都需要一个单独的实例吗?

CreateNamedPipe()的 MSDN 文档说:

lpSecurityAttributes [输入,可选]

指向 SECURITY_ATTRIBUTES 结构的指针,该结构指定命名管道的安全描述符...

强调我的。“新”是指新的命名管道还是命名管道的新实例?它接着说:

评论

要使用 CreateNamedPipe 创建命名管道的实例,用户必须具有对命名管道对象的 FILE_CREATE_PIPE_INSTANCE 访问权限。如果正在创建新的命名管道,则安全属性参数中的访问控制列表 (ACL) 定义命名管道的自主访问控制。

(再次强调我的。)人们可以将此理解为lpSecurityAttributes仅在创建命名管道的第一个实例(命名管道)时使用的含义,并且在创建相同命名管道的进一步实例时被忽略。如果是这样,则只lpSecurityAttributes需要该结构的一个实例。

或者,也许您必须为每个实例传递一个有效的 lpSecurityAttributes,但它可以(应该?)是同一个?

或者您可能必须为每个管道实例分配一个新的 SECURITY_ATTRIBUTES 结构?

我的相关问题 - SECURITY_ATTRIBUTES 结构是否可以在调用CreateNamedPipe()返回后立即被销毁,或者它是否必须保持有效直到最后一个句柄(到管道,或者只是那个管道实例?)关闭 - 甚至没有解决。

有人对这两个问题有明确的答案吗?

0 投票
1 回答
1242 浏览

winapi - 如何防止我产生的进程产生子进程?

我的 Windows XP/7 程序使用 Windows API CreateProcess() 函数作为其操作的一部分来启动一个子进程。我希望能够以一种但只有一种特定方式“沙箱化”应用程序。我不想让子进程产生它自己的进程(孙子进程)。有没有办法做到这一点而无需进行任何挂钩或 DLL 注入(或 IAT 修补)?

我在进程安全和访问权限上看到了这个 MSDN 页面:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684880(v=vs.85).aspx

我注意到以下进程特定的访问权限:

我可以在挂起状态下启动子进程,通过 XOR 操作删除该访问权限,使用 SetSecurityDescriptor() 更新子进程的访问权限,然后恢复它以防止它创建自己的子进程吗?还是应该将其应用于磁盘上的 EXE 文件?这行得通吗?

如果是这样,我会很感激使用 SetSecurityDescriptor() 的一个很好的代码示例,它将向我展示正确执行此操作的细微差别。如果这种方法不起作用,您可能有任何想法或提示将不胜感激。