gpt4 book ai didi

windows - 对于基于 Unix 平台的 SUID,我在 MS Windows 平台上有什么选择?

转载 作者:可可西里 更新时间:2023-11-01 13:23:27 27 4
gpt4 key购买 nike

要理解我在问什么,重要的是要区分 SUID 在 Unix 中的几种用途。

我有一个项目使用用户路径中的可执行文件,该文件归项目所有,并且设置了 SUID 位。这样,当它运行时,它在文件所有者的上下文中运行,而不是调用用户。这样,它可以访问用户无法访问的内容,因此这些内容可以通过正常的文件系统保护措施来防止用户访问。这工作得相当好。计划将项目转移到客户端-服务器架构,但这需要一些时间。同时,如何在 Windows 系统上复制这种类型的行为?

请注意,项目的可执行文件不会调用 SETUID 库调用,但坦率地说,考虑到项目的功能,在我看来,这将是一个很好的添加功能。该项目不需要系统root权限。它的第一个安全问题是它需要保护自己的文件免受用户(除了文件所有者之外的任何用户)的影响,如果它能够切换到“用户上下文”来访问文件,那就太好了系统就好像它是调用用户一样。 (通过这种方式,它可以更容易地确定项目可以触摸什么,什么不可以。)

该项目是用C和Java的组合编写的-设置了SUID的C程序调用Java代码...

我很想知道所有这些机制,尤其关注那些:

  1. 适用于 C 和 Java,并且;
  2. 对于非 Windows 程序员来说易于实现,并且;
  3. 需要最少的 Windows 独有编码。

如果某些解决方案更好,请分享您在这方面所知道的任何想法。

注意事项:

  1. LogonUser:需要纯文本密码。这怎么可能是答案?
  2. RunAs:要求在提示时输入密码! ...与 LogonUser 一样,只会更糟;我不明白这是一个怎样的答案。

最佳答案

Cygwin 在此处对如何在不需要用户密码的情况下执行此操作进行了精彩的讨论:Using Windows security in Cygwin

基本上,他们安装了自定义 LSA 身份验证包,无需密码即可提供安全 token 。作为回退,当未安装身份验证包时,他们使用未记录的 NtCreateToken API。

想要模拟的应用程序可以在调用 java 之前调用 cygwin setuid。

关于windows - 对于基于 Unix 平台的 SUID,我在 MS Windows 平台上有什么选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/651787/

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