- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人知道如何使用 C# 在远程服务上获取 SACL 吗?我尝试了很多不同的方法,但基本上没有任何效果。我可以在本地计算机上获得 DACL 和 SACL,但在远程计算机上似乎不可能。
我所做的是创建一个名为 ServiceSecurity
的类,该类继承自 NativeObjectSecurity
,其行为与 RegistrySecurity
类非常相似。以下是我拥有的两个构造函数:
public ServiceSecurity(string serviceName, AccessControlSections includeSections)
: base(true, ResourceType.Service, serviceName, includeSections, null, null)
{
}
public ServiceSecurity(System.Runtime.InteropServices.SafeHandle handle, AccessControlSections includeSections)
: base(true, ResourceType.Service, handle, includeSections)
{
}
第一个使用服务名称,而第二个需要服务的句柄。显然,第一个可以很好地获取 DACL 和 SACL,因为它都是本地的,但要访问远程计算机,我使用 ServiceController
类来查找远程计算机上的服务。获取后,我将服务的ServiceHandle
属性传递给我构建的ServiceSecurity
类,此时我得到一个未授权访问异常,这似乎不是正确,因为我的用户帐户是该域的域管理员,也是目标框上的本地管理员。我还有 SeSecurityPrivilege
权限,应该允许我访问。
有人有什么想法吗?看起来我得到的 SafeHandle
不对,但是 SafeHandle
属性说它没有关闭并且它是一个有效的句柄,所以我不很清楚发生了什么。
这是我用来尝试检索数据的代码:
ServiceSecurity sSec = new ServiceSecurity(services[i].ServiceName, accessSections);
string outputData = sSec.GetSecurityDescriptorSddlForm(accessSections);
以上内容适用于本地权限和审核设置(DACL 和 SACL)。但它是为在本地机器上工作而设计的。如果我改为这样做:
ServiceSecurity sSec = new ServiceSecurity(services[i].ServiceHandle, accessSections);
string outputData = sSec.GetSecurityDescriptorSddlForm(accessSections);
ServiceSecurity 构造函数在 SACL 的本地和远程服务器上均失败,如下所示,但仍然适用于 DACL:
System.UnauthorizedAccessException: Attempted to perform an unauthorized operation.
at System.Security.AccessControl.Win32.GetSecurityInfo(ResourceType resourceType, String name, SafeHandle handle, AccessControlSections accessControlSections, RawSecurityDescriptor& resultSd)
at System.Security.AccessControl.NativeObjectSecurity.CreateInternal(ResourceType resourceType, Boolean isContainer, String name, SafeHandle handle, AccessControlSections includeSections, Boolean createByName, ExceptionFromErrorCode exceptionFromErrorCode, Object exceptionContext)
at System.Security.AccessControl.NativeObjectSecurity..ctor(Boolean isContainer, ResourceType resourceType, SafeHandle handle, AccessControlSections includeSections)
对于 accessSections,我只指定了 AccessControlSections
中的一个,无论是 Audit 还是 Access,每次我传递 ServiceHandle
时,Audit 似乎都失败了>.
更新:所以也许真正的问题应该是,我如何获得具有 ACCESS_SYSTEM_SECURITY
权限的服务的句柄,以便我可以获得 SACL?
最佳答案
您从 ServiceController 获得的句柄将没有 ACCESS_SYSTEM_SECURITY 权限,因此您无法使用它访问 SACL。
为了获得该权利,您需要掌握该权利。您可能需要使用 DuplicateHandle 来获得额外的权限,但为远程系统启用 SeSecurityPrivilege 可能会很棘手。
您是否尝试过使用具有远程名称的命名服务构造函数?
我需要稍微检查一下,然后再回复您。如果明天之前没有人给出更好的答案,我会为您挖掘答案。
编辑:我所说的命名服务构造函数是指尝试使用\\server_name\service_name 或\\IP_address\service_name 形式的服务名称创建一个 ServiceSecurity 对象。理论上它应该可以工作,但它可能不会,因为 SeSecurityPrivilege 将在本地计算机而不是远程计算机上启用。
为了获得授予的 ACCESS_SYSTEM_SECURITY 权限的句柄,您必须遵循以下步骤:
不幸的是,我没有设置适当的测试环境来测试它,所以我不能保证它适用于远程服务。为远程服务器启用 SeSecurityPrivilege 似乎是主要的绊脚石。不管怎样,我希望这至少能有所帮助。
关于c# - 使用 C# 的服务上的 SACL ||使用 C# 获取具有 ACCESS_SYSTEM_SECURITY 权限的服务的句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/426295/
我设置了 Helm 柄和 Helm 柄。我有tiller-deploy。昨天,我可以定期运行了。但今天我收到此错误消息 Error: could not find a ready tiller pod
我以前已将分er安装到特定的 namespace 中。 我设置了一个环境变量来设置'tiller'命名空间-但我不记得该环境变量的名称-而且似乎无法通过网络搜索找到它。 这是什么 key ? 最佳答案
当我在 View 模型中使用如下界面时 class MainViewModel @ViewModelInject constructor( private val trafficImagesR
我正在尝试找到如何在某个 fragment 相关场景中定义 Hilt 的解决方案。我有以下设置: Activity 父 fragment 1 子 fragment 1 子 fragment 2 ...
Hilt 指出如果没有@Provides 注解就不能提供这个接口(interface): interface PlannedListRepository { fun getAllLists()
我的问题非常简单明了:两个注释/示例之间有什么区别: 例子一 @Singleton class MySingletonClass() {} @Module @InstallIn(FragmentCom
我是一名优秀的程序员,十分优秀!