问题标签 [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.
c# - SetSecurityDescriptorSddlForm(字符串 sddlForm)
根据这个 API,我没有找到任何有用的网站。
字符串的格式是什么?内容?
谢谢
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 的服务的句柄?
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 示例,所以我认为它应该可以工作。我到底做错了什么?
permissions - WiX 权限,我如何用 DACL 标志表达“修改”
我正在尝试将自定义权限作为 WiX 3.0.4318.0 安装程序的一部分应用于文件夹。
在资源管理器中的安全属性 UI 方面,我想将修改添加到 BUILTIN\Users 的权限中。显然,它需要对用户名的本地化具有弹性。因此,根据我迄今为止的研究,我至少想要:
问题:
我在一个子目录中执行此操作 - 我假设 Permission 和 PermissionEx 之间的选择是 Moot 是否正确?
资源管理器中的文件夹权限对话框中的“修改”在权限方面映射到什么 - 我看到许多示例,人们将其翻译为幻数或一大组标志 - 其他人使用了什么(目的是允许创建、读取、写入、追加和删除,这在 UI 中最好用简单权限表示为“修改”)。我查看了底层权限,
icacls
它告诉我它称为“M”,但我无法将它们映射到“特定权限”(按照 使用的术语icacls /?
)。windows 帮助中还有另一个映射表。有没有人得到一个有效的权威答案?
在关于 PermissionEx (WIX)的问题中有一个非常相似的未回答问题,将其作为重复引用将是残酷但公平的。
c# - 有没有办法在 C# 中修改进程 DACL
我有更改进程 DACL 的旧版 C++ 代码,并且正在尝试使用 .NET 3.5 中的托管代码类。我在网上找到了代码,其中有人创建了一个 SetAclOnServices 类,该类扩展了服务的 NativeObjectSecurity 类。我认为我可以实现这一点,只需将 ResourceType.Service 更改为 ResourceType.KernelObject 但是当我调用 GetAccessControl 它失败并出现 File Not Found 错误。
windows - 是否有查看命名管道安全 DACL 的工具?
我尝试使用 sysinternals 的 pipeacl 和进程资源管理器。
pipeacl 给了我一个错误,sysinternals 似乎不支持命名管道的安全性。
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);
我都拒绝访问。有任何想法吗?
谢谢,加比
winapi - 在 CreateFile() 中,将只读权限分配给标准用户 Everyone 的最快方法是什么。并且没有其他任何人的权限
在 Windows 中,我有一个应用程序只需要将访问控制设置为用户/组“每个人”。并将权限设置为只读。在 Linux 下,具有八进制权限的简单open()
调用004
就足够了。在 Windows 上,我如何完成同样的事情?最好在调用CreateFile()
.
windows - CreateNamedPipe() 中的 lpSecurityAttributes 需要多长的生命周期?
- 我多久可以破坏
lpSecurityAttributes
传递给指向的结构CreateNamedPipe()
? - 每个管道实例都需要一个单独的实例吗?
CreateNamedPipe()的 MSDN 文档说:
lpSecurityAttributes [输入,可选]
指向 SECURITY_ATTRIBUTES 结构的指针,该结构指定新命名管道的安全描述符...
强调我的。“新”是指新的命名管道还是命名管道的新实例?它接着说:
评论
要使用 CreateNamedPipe 创建命名管道的实例,用户必须具有对命名管道对象的 FILE_CREATE_PIPE_INSTANCE 访问权限。如果正在创建新的命名管道,则安全属性参数中的访问控制列表 (ACL) 定义命名管道的自主访问控制。
(再次强调我的。)人们可以将此理解为lpSecurityAttributes
仅在创建命名管道的第一个实例(新命名管道)时使用的含义,并且在创建相同命名管道的进一步实例时被忽略。如果是这样,则只lpSecurityAttributes
需要该结构的一个实例。
或者,也许您必须为每个实例传递一个有效的 lpSecurityAttributes,但它可以(应该?)是同一个?
或者您可能必须为每个管道实例分配一个新的 SECURITY_ATTRIBUTES 结构?
我的相关问题 - SECURITY_ATTRIBUTES 结构是否可以在调用CreateNamedPipe()
返回后立即被销毁,或者它是否必须保持有效直到最后一个句柄(到管道,或者只是那个管道实例?)关闭 - 甚至没有解决。
有人对这两个问题有明确的答案吗?
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() 的一个很好的代码示例,它将向我展示正确执行此操作的细微差别。如果这种方法不起作用,您可能有任何想法或提示将不胜感激。