欢迎各位兄弟 发布技术文章
这里的技术是共享的
普通 用户 给它 删除桌面上的 快捷方式的权限
要允许AD(Active Directory)中的普通用户删除桌面上的快捷方式,你可以通过以下几种方法实现:
找到快捷方式的路径
通常是 C:\Users\<用户名>\Desktop 或公共桌面路径 C:\Users\Public\Desktop。
右键快捷方式 → 属性 → 安全 → 编辑
添加目标用户(或组,如 Domain Users)。
授予 “修改” 或 “完全控制” 权限(谨慎使用后者)。
应用到所有快捷方式
在桌面的父文件夹(如 Desktop)上右键 → 属性 → 安全 → 高级 → 更改权限 → 启用继承(或手动添加用户权限)。
注意:修改系统文件夹权限可能影响安全性,建议仅针对特定快捷方式操作。
适用于批量管理用户权限:
打开 组策略管理(GPMC)。
创建或编辑现有GPO,导航至:用户配置 → 首选项 → Windows设置 → 文件
或计算机配置 → 策略 → Windows设置 → 安全设置 → 文件系统。
添加桌面快捷方式路径,并设置用户的 修改/删除权限。
使用 icacls 命令(管理员权限运行 ( cmd 右击以其它用户(这个用户必须是管理员)来运行)):
cmdicacls "C:\Users\Public\Desktop\*.lnk" /grant "Domain Users:(M)"#这个不行,
icacls "C:\Users\Public\Desktop\*.lnk" /grant "testad:(M)" # testad 是域帐号 OK 有大用
icacls "C:\Users\Public\Desktop\*.lnk" /grant "域前缀\testad:(M)" # testad 是域帐号 OK 有大用
icacls "C:\Users\public\Desktop\*.lnk" /grant "域前缀\Domain Users:(M)" # OK 有大用
icacls "C:\Users\Public\Desktop\*.lnk" /grant Users:M #Users表示普通用户,,用Users:M 这种方法也行 OK 有大用
解释:
*.lnk 匹配所有快捷方式。
(M) 表示“修改”权限(包含删除)。
权限继承:确保桌面文件夹的权限未被阻止继承。
公共桌面:若快捷方式在 Public\Desktop,需调整该文件夹权限。
最小权限原则:仅授予必要权限,避免安全隐患。
如果仍遇到问题,可能需要检查AD中是否有其他组策略限制了用户权限。
C:\Users\test45> icacls "C:\Users\public\Desktop\*.lnk" /grant "Domain Users:(M)"
Domain User:帐户名与安全标识间无任何映射完成。
已成功处理 0 个文件:处理1个文件时失败
test45 是一个普通的 ad 用户
C:\Users\test45> icacls "C:\Users\public\Desktop\*.lnk" /grant "test45:(M)"
己处理的文件: C:\Users\Public\Desktop\超级桌面便签.lnk
己成功处理1个文件;处理0个文件时失败
你的问题主要涉及 icacls 权限修改失败 和 Domain Users 组无法识别 两种情况。以下是详细解析和正确操作步骤:
Domain Users 组识别失败
icacls "C:\Users\public\Desktop\*.lnk" /grant "Domain Users:(M)"
Domain User:帐户名与安全标识间无任何映射完成。
原因:
计算机没有正确加入域(当前可能是本地登录或组策略问题)。
权限不足,当前用户(test45)无权修改 Domain Users 权限。
Domain Users 组名称拼写错误(正确格式一般为 DOMAINNAME\Domain Users)。
检查当前计算机是否已加域:
cmdecho %USERDOMAIN%
如果输出仅为计算机名(如 TESTPC),说明未加域(或脱域)。
需要 登录到域账户 或提升至域管理员权限。
使用完全限定名称(FQDN)(推荐):
cmdicacls "C:\Users\public\Desktop\*.lnk" /grant "YOURDOMAIN\Domain Users:(M)"
替换 YOURDOMAIN 为你的域名(如 contoso.com)。
test45 能修改 Public\Desktop,但 Domain Users 失败
icacls "C:\Users\public\Desktop\*.lnk" /grant "test45:(M)"
己处理的文件: C:\Users\Public\Desktop\超级桌面便签.lnk
原因:
test45 是一个普通 AD 用户,能修改 Public\Desktop 仅因 Domain Users 默认可能对该路径有可继承权限(但直接修改全局 Domain Users 失败说明非域管理员)。
Domain Users
检查当前计算机是否在域环境中:
cmdsysteminfo | findstr "Domain"
或 systeminfo | findstr "域"
如果 未返回域名,说明当前是本地工作组(无法管理 AD 组权限)。
改用域名 + Domain Users:
cmdicacls "C:\Users\public\Desktop\*.lnk" /grant "CONTOSO\Domain Users:(M)"
若仍失败,提升至域管理员账户:
cmdrunas /user:CONTOSO\adminuser cmd
确保 Domain Admins 组 有权限修改:
test45 权限(临时方案)
如果当前非域管理员,仅需 <用户名> 个人可删除:
cmdicacls "C:\Users\public\Desktop\*.lnk" /grant "test45:(M)"
Public\Desktop 权限继承
如果 Public\Desktop 继承权限被阻断,需先启用:
cmdicacls "C:\Users\Public\Desktop" /inheritance:e
然后再运行:
cmdicacls "C:\Users\Public\Desktop\*.lnk" /grant "CONTOSO\Domain Users:(M)"
| 问题 | 解决方案 |
|---|---|
Domain Users 无映射 | icacls /grant "YOURDOMAIN\Domain Users:(M)" |
| 必须用管理员权限 | runas /user:domainadmin cmd |
| 继承权限问题 | icacls /inheritance:e |
| 仅针对当前用户 | icacls /grant "test45:(M)" |
⚠️ 重要提示
如果 没有域权限 (
%USERDOMAIN%无返回值),只能使用本地用户test45修改。若需要批量修改 所有用户桌面,需 组策略(GPO) 或 域管理员权限。
cmdicacls "C:\Users\Public\Desktop\*.lnk" /grant "CONTOSO\Domain Users:(M)"
确保: ✅ 当前计算机在域环境
✅ 执行账户有权修改 Domain Users(如 Domain Admins)
✅ 启用 Public\Desktop 继承权限
检查文件当前权限:
cmdicacls "C:\Users\Public\Desktop\超级桌面便签.lnk"
查看 test45 的组归属(AD 工具或 whoami /groups):
cmdwhoami /groups | find "Domain Users"
全局检查 Domain Users 是否存在:
cmdnet group "Domain Users" /domain
失败根本原因:计算机可能未正确加域,或当前账户无 AD 组权限管理能力。
临时方案:仅允许 test45 修改目标文件权限。
长期方案:需域管理员权限或调整 GPO 批量设置权限。
如果有进一步信息(如 %USERDOMAIN% 输出、systeminfo 结果),可提供更精准的建议! 🚀
你的问题主要涉及 icacls 权限修改失败 和 Domain Users 组无法识别 两种情况。以下是详细解析和正确操作步骤:
Domain Users 组识别失败
icacls "C:\Users\public\Desktop\*.lnk" /grant "Domain Users:(M)"
Domain User:帐户名与安全标识间无任何映射完成。
原因:
计算机没有正确加入域(当前可能是本地登录或组策略问题)。
权限不足,当前用户(test45)无权修改 Domain Users 权限。
Domain Users 组名称拼写错误(正确格式一般为 DOMAINNAME\Domain Users)。
检查当前计算机是否已加域:
cmdecho %USERDOMAIN%
如果输出仅为计算机名(如 TESTPC),说明未加域(或脱域)。
需要 登录到域账户 或提升至域管理员权限。
使用完全限定名称(FQDN)(推荐):
cmdicacls "C:\Users\public\Desktop\*.lnk" /grant "YOURDOMAIN\Domain Users:(M)"
替换 YOURDOMAIN 为你的域名(如 contoso.com)。
test45 能修改 Public\Desktop,但 Domain Users 失败
icacls "C:\Users\public\Desktop\*.lnk" /grant "test45:(M)"
己处理的文件: C:\Users\Public\Desktop\超级桌面便签.lnk
原因:
test45 是一个普通 AD 用户,能修改 Public\Desktop 仅因 Domain Users 默认可能对该路径有可继承权限(但直接修改全局 Domain Users 失败说明非域管理员)。
Domain Users
检查当前计算机是否在域环境中:
cmdsysteminfo | find "Domain"
如果 未返回域名,说明当前是本地工作组(无法管理 AD 组权限)。
改用域名 + Domain Users:
cmdicacls "C:\Users\public\Desktop\*.lnk" /grant "CONTOSO\Domain Users:(M)"
若仍失败,提升至域管理员账户:
cmdrunas /user:CONTOSO\adminuser cmd
确保 Domain Admins 组 有权限修改:
test45 权限(临时方案)
如果当前非域管理员,仅需 <用户名> 个人可删除:
cmdicacls "C:\Users\public\Desktop\*.lnk" /grant "test45:(M)"
Public\Desktop 权限继承
如果 Public\Desktop 继承权限被阻断,需先启用:
cmdicacls "C:\Users\Public\Desktop" /inheritance:e
然后再运行:
cmdicacls "C:\Users\Public\Desktop\*.lnk" /grant "CONTOSO\Domain Users:(M)"
| 问题 | 解决方案 |
|---|---|
Domain Users 无映射 | icacls /grant "YOURDOMAIN\Domain Users:(M)" |
| 必须用管理员权限 | runas /user:domainadmin cmd |
| 继承权限问题 | icacls /inheritance:e |
| 仅针对当前用户 | icacls /grant "test45:(M)" |
⚠️ 重要提示
如果 没有域权限 (
%USERDOMAIN%无返回值),只能使用本地用户test45修改。若需要批量修改 所有用户桌面,需 组策略(GPO) 或 域管理员权限。
cmdicacls "C:\Users\Public\Desktop\*.lnk" /grant "CONTOSO\Domain Users:(M)"
确保: ✅ 当前计算机在域环境
✅ 执行账户有权修改 Domain Users(如 Domain Admins)
✅ 启用 Public\Desktop 继承权限
检查文件当前权限:
cmdicacls "C:\Users\Public\Desktop\超级桌面便签.lnk"
查看 test45 的组归属(AD 工具或 whoami /groups):
cmdwhoami /groups | find "Domain Users"
全局检查 Domain Users 是否存在:
cmdnet group "Domain Users" /domain
失败根本原因:计算机可能未正确加域,或当前账户无 AD 组权限管理能力。
临时方案:仅允许 test45 修改目标文件权限。
长期方案:需域管理员权限或调整 GPO 批量设置权限。
如果有进一步信息(如 %USERDOMAIN% 输出、systeminfo 结果),可提供更精准的建议!
icacls "C:\Users\<用户名>\Desktop\*.lnk" /grant "Domain Users:(M)" 会永久生效吗
是的,icacls 命令默认会 永久修改权限(除非手动恢复或由管理员/组策略覆盖)。让我们详细分析其生效范围和持久性:
永久性:
直接修改文件/文件夹的 ACL(访问控制列表),除非手动撤销或使用 icacls /remove 等命令,否则权限会持续存在。
继承性(取决于路径):
如果目标文件(如快捷方式)的父文件夹(Desktop)启用了 权限继承,后续新建的快捷方式可能默认继承父文件夹权限(除非显式阻断)。
即使 icacls 设置了权限,以下情况可能修改或重置配置:
组策略(GPO)覆盖:
如果有 GPO 定义了更严格的桌面文件权限,域策略在刷新时会优先生效。
系统维护或管理员操作:
管理员手动重置权限,或使用工具(如 secedit)还原默认配置。
用户配置文件重置:
若用户配置文件被重建(如临时账户),桌面文件夹权限可能恢复默认。
执行以下步骤确认权限是否生效且持久:
查看当前权限:
cmdicacls "C:\Users\<用户名>\Desktop\*.lnk"
输出中检查 Domain Users 是否有 (M)(修改权限)。
测试删除操作:
让目标用户尝试删除快捷方式,确认是否成功。
监控组策略影响:
运行 gpresult /h report.html 检查是否有冲突的 GPO。
如果担心权限被意外重置,可以通过以下方法加固:
方法 1:通过 GPO 部署权限
使用组策略的 “文件系统” 策略(位于 计算机配置/用户配置 → 策略 → Windows设置 → 安全设置 → 文件系统)强制应用权限。
方法 2:创建计划任务
定期运行 icacls 命令,例如通过登录脚本或计划任务,以修复可能的权限更改。
方法 3:禁用继承(谨慎操作)
如果父文件夹权限频繁重置,可禁用继承并明确设置权限:
cmdicacls "C:\Users\<用户名>\Desktop" /inheritance:d
默认情况下:icacls 修改的权限是永久的。
例外情况:组策略、管理员手动干预或系统重置可能导致覆盖。
建议:配合 GPO 或定期脚本维护权限,确保长期生效。
如果需要更自动化的管理,建议使用 组策略 或 配置基线(如 Microsoft Endpoint Manager) 集中控制权限。
icacls "C:\Users\<用户名>\Desktop\*.lnk" /grant "Domain Users:(M)" 详解
icacls 命令详解:icacls "C:\Users\<用户名>\Desktop\*.lnk" /grant "Domain Users:(M)"
| 部分 | 说明 |
|---|---|
icacls | Windows 内置工具,用于查看/修改文件/文件夹权限(ACL)。 |
"C:\Users\<用户名>\Desktop\*.lnk" | 目标路径: - <用户名> 替换为实际用户(如 Administrator)。- *.lnk 匹配所有快捷方式(扩展名 .lnk)。 |
/grant | 表示“授予权限”。 |
"Domain Users:(M)" | 权限规则: - Domain Users:AD 中的域用户组(可替换为具体用户/组)。- (M):权限代码(Modify,包含读、写、删除等)。 |
| 代码 | 权限 | 包含的操作 |
|---|---|---|
(M) | Modify(修改) | 读取、写入、删除、执行、修改属性。 |
(F) | Full control(完全控制) | 所有权限(含修改所有者)。 |
(RX) | 读取 + 执行 | 查看文件内容并运行程序。 |
(W) | 写入 | 修改文件内容(但不含删除)。 |
(D) | 删除 | 仅删除权限(需单独指定)。 |
📌 快捷方式权限关键点:
删除快捷方式(
.lnk)只需(M)或(D)权限。仅授予
(D)可限制用户仅删除文件,不能修改内容(但对快捷方式通常无意义)。
目标:允许 Domain Users 组删除用户 Alice 桌面上的所有快捷方式。
步骤:
以 管理员身份 打开 CMD/PowerShell。
执行命令:
cmdicacls "C:\Users\Alice\Desktop\*.lnk" /grant "Domain Users:(M)"
验证权限:
cmdicacls "C:\Users\Alice\Desktop\MyShortcut.lnk"
输出示例:
MyShortcut.lnk DOMAIN\Domain Users:(M)
DOMAIN\Alice:(F)
NT AUTHORITY\SYSTEM:(F)
BUILTIN\Administrators:(F)
路径错误:确认用户名和路径存在(AD 用户可能使用漫游配置路径)。
权限不足:执行命令的账户需具备 更改权限(Change Permissions) 的权限。
继承阻断:若父文件夹禁用继承,需先启用:
cmdicacls "C:\Users\Alice\Desktop" /inheritance:e
cmdicacls "C:\Users\Alice\Desktop\*.lnk" /remove "Domain Users"
加 /T 参数(慎用):
cmdicacls "C:\Users\Alice\Desktop\*" /grant "Domain Users:(M)" /T
使用 %username%(当前用户)或循环脚本:
cmdfor /D %u in ("C:\Users\*") do icacls "%u\Desktop\*.lnk" /grant "Domain Users:(M)"
重定向输出到文件:
cmdicacls "C:\Users\Alice\Desktop\*.lnk" /grant "Domain Users:(D)" >> C:\logs\perms.log
用途:快速为域用户授予删除桌面快捷方式的权限。
关键参数:/grant 授予权限,(M) 允许修改/删除。
持久性:权限永久生效,除非被 GPO 或管理员覆盖。
建议先在测试环境验证,再部署到生产环境!
icacls 是什么缩写
icacls 的缩写含义 ( integrated command-line access control list system ,,,集成的命令行访问控制列表系统 )
icacls 是 Windows 中的命令行工具,其名称源自:
**I**ntegrated **C**ommand-line ACL **System
(集成的命令行访问控制列表系统)
ACL(核心部分)
全称:Access Control List(访问控制列表)
作用:定义文件/文件夹的权限(如哪些用户/组可以读取、修改、删除)。
前缀与后缀
**I**ntegrated:表示它是 Windows 原生集成的工具(取代旧版 cacls 和 xcacls)。
**C**ommand-line:通过命令行操作。
**S**ystem:属于系统级权限管理工具。
| 工具 | 全称/缩写 | 功能 | 状态 |
|---|---|---|---|
cacls | Command-line ACL System | 基础权限管理 | 已淘汰 |
xcacls | Extended CACLS | 扩展权限(支持继承等) | 已淘汰 |
icacls | Integrated CACLS + ACL System | 全能权限管理(推荐) | 当前主流 |
📌 注意:
icacls在 Windows Vista 及之后版本中引入,支持更精细的权限控制(如继承、符号链接权限)。旧版
cacls仍可运行,但功能有限(例如无法处理长文件名)。
ACL 结构:Windows 中每个文件/文件夹的权限由 DACL(自主访问控制列表)和 SACL(系统审计控制列表)组成,icacls 直接操作这些列表。
权限粒度:支持 F(完全控制)、M(修改)、RX(读取+执行)等精细权限代码(见前文表格)。
icacls 而不是 GUI?
批量操作:一条命令可处理大量文件(如 *.lnk)。
脚本化:可嵌入批处理或 PowerShell 脚本,实现自动化管理。
远程管理:通过 WinRM 或 PsExec 远程执行权限调整。
icacls = 集成式命令行 ACL 系统,是 Windows 权限管理的核心工具之一,专为高效、精准的权限配置设计。
whoami /groups 详解
whoami /groups 命令详解
whoami /groups 是一条 Windows CMD 命令,用于显示当前用户所属的所有安全组(Security Groups),包括:
本地组(Local Groups)
域组(Domain Groups,如果计算机已加入域)
系统内置组(如 Users、Administrators 等)
cmdwhoami /groups
输出示例:
组信息
-----------------
组名 类型 SID 属性
======================================= ============== ============================================== ==========================
Everyone 已知组 S-1-1-0 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\INTERACTIVE 已知组 S-1-5-4 Mandatory group, Enabled by default, Enabled group
WORKGROUP\Users 别名 S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
CONTOSO\Domain Users 域组 S-1-5-21-123456789-1234567890-123456789-513 Mandatory group, Enabled by default, Enabled group
BUILTIN\Administrators 别名 S-1-5-32-544 Mandatory group, Enabled by default, Enabled group
| 列名 | 说明 |
|---|---|
| 组名 | 组名称(Everyone、DOMAIN\GroupName、BUILTIN\Administrators) |
| 类型 | 组类型(已知组、别名、域组、受限组) |
| SID | 安全标识符(Security Identifier),唯一标识用户或组 |
| 属性 | 组的状态(Mandatory group、Enabled by default、Enabled group) |
| 组名 | 说明 |
|---|---|
BUILTIN\Administrators | 本地管理员组 |
BUILTIN\Users | 标准普通用户组 |
BUILTIN\Guests | 访客用户组 |
WORKGROUP\Users | 工作组的普通用户组 |
| 组名 | 说明 |
|---|---|
CONTOSO\Domain Admins | 域管理员组 |
CONTOSO\Domain Users | 所有域用户默认组 |
CONTOSO\Domain Computers | 域内计算机组 |
| 组名 | 说明 |
|---|---|
Everyone | 所有用户(包括匿名用户) |
NT AUTHORITY\Authenticated Users | 已认证的用户 |
NT AUTHORITY\INTERACTIVE | 本地交互式登录用户 |
Domain Admins
cmdwhoami /groups | find "Domain Admins"
有输出 = 用户是域管理员
无输出 = 用户无域管理员权限
cmdwhoami /groups | find "Domain Users"
输出 DOMAIN\Domain Users = 已加域
无输出 = 计算机未加域(仅本地用户)
cmdwhoami /groups | find "Administrators"
如果返回 BUILTIN\Administrators,说明有本地管理员权限。
如果返回 DOMAIN\Enterprise Admins,说明是域企业管理员。
cmdwhoami /groups /fo list | find "S-1-5-32-544"
说明:
S-1-5-32-544是 Administrators 组的 SID。
cmdwhoami /groups > user_groups.txt
用途:记录用户权限,用于审计。
net user 的区别
| 命令 | 用途 |
|---|---|
whoami /groups | 当前登录用户的组信息 |
net user 用户名 /domain | 查询 特定域用户 的组成员资格(需加域) |
注意:
net user需要管理员权限,而whoami /groups所有用户均可运行。
✅ 权限排错(检查用户是否属于某个组)
✅ 安全审计(记录用户所属组)
✅ AD 域环境检查(是否加域、是否是管理员)
whoami /groups = 查看当前用户的组归属(本地组、域组、系统组)。
典型用途:检查管理员权限、确认是否加域、权限排错。
和 net user 的区别:whoami 仅查看当前用户,net user 可查任意用户(需权限)。
示例命令:
cmdwhoami /groups | find "Domain Admins"
有输出 = 用户是域管理员 ✅
无输出 = 无域管理员权限 ❌
如果你有更多问题,欢迎提问!
whoami /groups 为什么看不到 domain users
当你在 Windows 命令提示符中运行 whoami /groups 却看不到 "Domain Users" 组时,可能由以下几个原因导致:
本地用户:如果你的计算机未加入域(或当前登录的是本地账户),whoami /groups 只会显示本地组(如 Users),而不会显示域组(如 Domain Users)。
解决方法:确保你登录的是域账户(用户名格式为 DOMAIN\Username),并且计算机已成功加入域。
域用户的组成员资格通常由域控制器(DC)管理,但本地计算机会缓存这些信息。如果缓存未更新,可能显示不全。
解决方法:
运行 gpupdate /force 强制更新组策略。
注销后重新登录,或重启计算机以刷新缓存。
"Domain Users" 是 Active Directory 中的初级组(Primary Group),默认情况下不会在所有工具中显式列出(尤其是在 whoami /groups 的输出中)。
验证方法:
使用命令:net user <用户名> /domain
查看输出中的 "Global Group memberships" 部分。
或在 PowerShell 中运行:
powershellGet-ADUser -Identity <用户名> -Properties MemberOf | Select -ExpandProperty MemberOf
whoami /groups 主要列出当前会话的显式组成员资格,可能忽略部分默认/隐式组。
替代工具:
使用 net user 或 PowerShell 的 Get-ADUser 模块(需安装 RSAT 工具): OK OOK 有大用 有大大用
powershellGet-ADPrincipalGroupMembership -Identity $env:USERNAME | Select Name
如果计算机无法联系域控制器(如网络断开、DC 不可用),可能导致无法获取完整的组信息。
解决方法:检查网络连接,确保 nltest /dsgetdc:域名 能返回有效的域控制器。
首先确认你正在使用域账户登录(检查命令提示符窗口标题是否有域前缀)。
尝试 net user 或 PowerShell 命令获取更完整的组信息。
若问题依旧,联系域管理员检查 AD 中你的账户配置。
如果仍有疑问,可以提供 whoami /groups 的完整输出,以便进一步分析。