![Windows 中是否有与 Setuid 等效的程序?](https://linux22.com/image/1466134/Windows%20%E4%B8%AD%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%8E%20Setuid%20%E7%AD%89%E6%95%88%E7%9A%84%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
我想给一个程序赋予执行它的用户的权限。有没有等同于设定在 Windows 上(最好是 Windows 7 或者至少是 Windows XP 之后的版本)?
如果我希望程序拥有比执行该程序的用户更多的权限,该怎么办?(例如,我希望程序能够写入程序文件,而我不希望用户能够这样做)。
答案1
简而言之,您无需执行任何操作即可让程序以生成它的用户的权限运行。这是 Windows 系统的标准。
为了强制程序以完全不同的用户身份执行,就像 SetUID 所做的那样,微软提供了鲁纳斯命令,您可以使用它来调用不同用户凭据下的可执行文件。
此外,在启用 UAC 的系统(如 Windows 7)上,您可以按住 Shift + 右键单击可执行文件,以不同的用户身份运行该程序,并在需要时调用该用户的管理员权限。
请注意,以下答案与有关 Sticky 的原始问题相关。
直接回答你的问题,是也不是。可以模拟该功能,但应用程序完全不同。
我认为您可能将 Sticky 位与其他特殊的 unix 权限 SetUID 和 SetGID 混淆了,这两者都会影响应用程序相对于调用该进程的用户的执行方式,但 Sticky 不会。
Sticky 不允许任何用户(除 root 或所有者用户外)删除或重命名文件,即使用户具有写入权限,因此可以编辑该文件。
在“高级权限”窗口(从对象属性 -> 安全选项卡 -> 高级)中,您可以添加或编辑权限对于CREATOR OWNER
“用户”并授予他们权限Delete
和Delete subfolders and files
。然后对于 ACL 中的每个其他实体,撤销(但不要拒绝)相同的权限。
这将允许所有具有写入权限的用户创建/编辑任何文件,但只有文件所有者可以删除它。
请注意,这种方法也具有与 Sticky 相同的缺陷:任何具有编辑权限的用户都可以用 0B 覆盖文件,这在概念上类似于删除文件(许多人认为这同样好......)。
祝你好运。
答案2
在 Windows 中,如果您不知道目标用户的密码或未在机器上保存此信息,则无法以其他用户的身份运行程序。
Windows 上的程序默认始终使用当前用户的权限执行。这也适用于程序可以访问的文件夹或设置。这些设置可以在程序或文件夹的“安全”选项卡中更改。
您可以与另一个用户一起启动一个程序(例如,如果您按住SHIFT
+right-click
然后选择Run as different user
或只是Run as administrator
),以授予其在机器上具有管理员权限的另一个用户的提升权限。
使用runas
CMD命令也可以实现这一点,并且可以在快捷方式中设置自动登录
一个例子:
runas /user:.\localadmin /savecred notepad.exe
该/savecred
参数告诉命令用户密码已保存在机器上,运行时不需要密码。密码必须先存储在控制面板中的凭据管理器中。
请注意,这也会使用其他用户的配置文件加载程序。例如,在 AppData 中保存设置的程序将从执行该程序的用户处加载这些设置。
但是 Windows 服务可以以不同的用户身份运行。这可以在
Services.msc 控制台 > 选择服务 > 属性 > 登录