组策略:特定计算机上特定用户的管理员权限


11

我是一名程序员,试图为一家小公司管理Active Directory设置。域控制器正在运行Windows Small Business Server 2008。

我们拥有使用平板电脑的现场工作人员;平板电脑的ThinkVantage bloatware的配置问题将要求这些用户在使用平板电脑时具有管理员权限。没关系–当我通过电话指导他们进行修复时,对他们来说具有广泛的特权很有用,因此我不在那儿寻找解决方法。

我想使用组策略来设置以下方案:登录到特定安全组(或组织单位)中的计算机时,特定安全组(或组织单位)中的用户应位于BUILTIN / Administrators组中。没关系,如果计算机必须位于OU中,但我希望按组分配用户。

当然,现场工作人员不应该是其他工作站上的管理员,而普通的办公室工作人员也不应该是平板电脑上的管理员。

目前,这是在每台平板电脑上本地管理的,但是随着我们增加新员工,它变得越来越麻烦。

我觉得受限制的群体是这里的答案,但是如果没有扎实的AD概念和方法基础,我很难实现它。

什么是执行此任务的适当技术,我将如何实施它?

Answers:


13

创建一个组来封装用户(Local-Admins-Tablets)并将其添加到该组

创建当前工作站OU的子OU,并将平板电脑放在此处(工作站\平板电脑)

创建一个GPO(Local-Admins-Tablets-Policy)并将其链接到Workstations \ Tablets OU

在GPO中,设置以下内容:

  • Comp Config-策略-Windows设置-安全设置-受限组
  • 右键单击,添加组
  • “管理员”,确定
  • 该组的成员:myDomain \ Local-Admins-Tablets

重新启动PC,然后完成。

请记住,设置“受限制的组”将覆盖计算机现有的本地管理员列表。如果已经有其他用户/组,则也需要将其添加到此策略中。其他示例是myDomain \ Domain Admins

编辑:哦,更改GPO上的筛选并添加域计算机。最简单的方法是使用组策略管理MMC管理单元(可以从Microsoft 的“ 远程服务器管理工​​具”中获取)。


5
+1。受限组是这里的解决方案。工作站上的gpupdate / force足以使更改生效,而无需重新启动。
joeqwerty

如果平板电脑在现场,通常比说明“打开cmd,键入gpupdate / force / boot”等更容易使用户重新启动:)
Izzy

1
使用组策略首选项(technet.microsoft.com/en-us/library/cc731892%28WS.10%29.aspx),您可以更新本地组而不会覆盖任何内容。
Zoredache

1
好吧,那成功了!仅两个问题:我认为它将完全炸毁Admin组的所有当前成员,包括本地用户,对吗?这可能真是令人讨厌的惊喜。我假设默认的管理员帐户将不受此影响;是我的自负吗?
WCWedin

1
我从未进行过测试,我一直只是将Builtin \ Administrators添加到该受限组中。皮带括号:)
Izzy

12

如果您不关心管理员组是否将有效地锁定在本地计算机的将来更改范围之外,则Izzy的答案很好。在应用策略设置之前,这还将清除所有已经是Administrators组成员的组。

但是,您可以略微不同的方式使用相同的策略设置来绕开这些烦恼(假设您甚至将其视为烦恼)。

  • 以与以前相同的方式创建OU / Group结构
  • 当您在组策略对象的“受限制的组”部分中时,添加组,而不是指定Administrators,而是指定YOURDOMAIN \ Local-Admins-Tablets
  • “该组的成员”部分中,单击添加,然后输入管理员

这是两个部分的工作方式之间的细微但重要的区别。 该组的成员实际上是“组A仅包含组X,Y和Z”。该组是有效地制定为“确保组A是组X,Y和Z的成员”的成员。

网上论坛的成员设置策略后,唯一可以修改该网上论坛成员资格的东西是一个覆盖策略对象,该对象也使用网上论坛的成员,或者使用该网上论坛的其他任何策略都是该网上论坛的成员


2

似乎您真正需要做的就是创建一个将域组添加到本地管理员组的组策略。使用简单的启动脚本或使用组策略首选项即可轻松完成此操作。

简单的启动脚本来添加组成员。

DomainName="example"
Set oShell = WScript.CreateObject("WScript.Shell")
Set oProcsEnv = oShell.Environment("Process")
ComputerName = oProcsEnv("COMPUTERNAME")
Set oGroup = GetObject("WinNT://" & ComputerName & "/" & "Administrators")
If Not oGroup.IsMember("WinNT://"&DomainName&"/_Group_Tablet_Admins") Then _
    oGroup.Add ("WinNT://"&DomainName&"/_Group_Tablet_Admins")

假设他使用的是W2K8,根据他的问题我无法确定。
joeqwerty

在2003r2域上支持客户端首选项。我只是没有一个方便的2003r2文章链接。
Zoredache

编辑了问题以添加操作系统。GPP似乎很适合这种情况,因为用户事后不太可能修改其组,因此暂时性成为讨论的重点。也就是说,将前提条件部署到每台客户端计算机上似乎非常麻烦。
WCWedin

1
这就是为什么使用简单的启动脚本来执行此操作也是一个简单的选择。我发现首选项对于其他许多方面也很有用。为将来您将能够完成的其他事情而安装它们可能是值得的。
Zoredache

1

列出的解决方案的唯一问题是,它向应用该策略的所有计算机授予本地管理员权限。通常,您只想授予特定计算机的管理员权限。我观察到的是,当用户意识到他们拥有本地管理员权限时,便会为所有伴侣安装软件。

您可以通过多种不同的方式来执行此操作,但我可能只是建议一种。因此,请完成上述步骤,还要为每台用户需要其他权限的计算机创建一个组。这些“计算机组”中的每一个都被添加到myDomain \ Local-Admins组中。

然后,将用户添加到与他们需要访问的计算机相对应的组中。

因此,他们只是该机器的管理员。


0

您说增加新员工是一件麻烦事,但不应该增加麻烦的新平板电脑吗?

我会按照以下方式做一些事情:

具有一个域安全组,其中包含应该成为Tablet PC管理员的所有用户(即TabletAdministrators)。

在每个平板电脑上,将该组添加到Administrators组。

我不知道这是否合适。这只是我如何实现的第一个想法。


2
不应将其手动添加到每台计算机。这就是组策略的目的
Izzy

1
设置新的平板电脑时,我必须将15位用户添加到一个平板电脑中。添加新员工时,我必须向20个平板电脑添加一个用户。两者都很麻烦,但是从一台机器到另一台机器的行走机制使后者的处理变得乏味且缓慢。即使您的方法不是特别优雅,您的方法也会大大缓解这种情况。
WCWedin

1
对该选票+1,使其稍稍增加一点。这可能不是最佳解决方案,但它是有效的解决方案。人们不应因为提出了有效的解决方案而被否决,因为它不是首选的解决方案。该解决方案唯一缺少的是使用受限组来自动将组添加到Local Admins组。我说+1是为了付出努力并为答案做出贡献。
joeqwerty

0

我编写了一个脚本,该脚本在本地工作站上作为具有管理权限的计算机策略运行。它会检查AD中最后一个登录用户的描述,该域管理员可以从“ Active Directory用户和计算机”中设置域管理员,如果其中包含工作站名称,则脚本会将用户添加到本地管理组中(如果工作站名称不在本地管理员组中)。用户的描述,它将用户从本地管理员组中删除。描述可以包含多个计算机名称,如下所示:

用户的描述:“ WKST-E445R和WKST-VM398上的本地管理员”

因此,要使某人仅在一台计算机上成为本地管理员,我只需要将此计算机的名称添加到AD中的用户说明中,并要求用户重新启动,删除计算机名称将删除本地管理员权限。

那不是最整洁的解决方案吗?:-)

这是脚本:

    @if "%debug%" neq "%username%" echo off
set ver=MakeLocalAdmin.cmd henrik@c o m m o r e.se 20150423
:: Adds last logged on domain user to local Administrators group if run by computer GPO with Administrative rights and the user's Comment contains Computername

set log=nul
:: or set log=c:\logs\MakeLocalAdmins.txt

:: Check who was last logged on user
FOR /F "tokens=3 delims= " %%G in ('reg query "hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI" /v LastLoggedOnUser') DO (
set DomainAndUserName=%%G)

:: Remove the spaces
set DomainAndUserName=%DomainAndUserName: =%

:: Get only username part
set LastLoggedOnUserName=%DomainAndUserName:*\=%


:: Check OS language, so we can adapt to localized name of Admin group and Comment
FOR /F "tokens=3 delims= " %%G in ('reg query "hklm\system\controlset001\control\nls\language" /v Installlanguage') DO (
set Language=%%G)

echo %date% %Time% ; %0 ; %computername%; %LastLoggedOnUserName%; %DomainAndUserName%, %Language% >> %log%
goto %Language%

:: Add any langauage specific part below, but if an unknown install language is found,
:: an error 'label not found' should mean script terminates, but anyway make sure it terminates. 
goto end

:0409
:: English
net user /domain %LastLoggedOnUserName% | find "Comment " | find "%computername%" >> %log%
set NoLocalAdmin=%errorlevel%
if %NoLocalAdmin% equ 0 net localgroup Administrators /add "%DomainAndUserName%" >> %log%
if %NoLocalAdmin% equ 1 net localgroup Administrators /del "%DomainAndUserName%" >> %log%
goto end

:041D
:: Swedish 
:: †„” åäö (Swedish char's)
net user /domain %LastLoggedOnUserName% | find "Kommentar " | find "%computername%" >> %log%
set NoLocalAdmin=%errorlevel%
if %NoLocalAdmin% equ 0 net localgroup Administrat”rer /add "%DomainAndUserName%" >> %log%
if %NoLocalAdmin% equ 1 net localgroup Administrat”rer /del "%DomainAndUserName%" >> %log%
goto end



:end
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.