有时候在共享文件夹或文件时,文件所有者权限会丢失,造成赋予权限时被拒绝,这样我们可以先使用takeown.exe强制更改所有身份,希捷使用icacls添加相应权限。
下面是一个示例,演示如何使用takeown
命令来获取一个文件夹及其所有子文件夹和文件的所有权:
takeown /F "D:\Share\Offices" /R /A /D Y
这里,各参数的意义如下:
-
/F "D:\Share\Offices"
:指定你想要获取所有权的文件夹路径。路径需要用双引号包围,特别是当路径中包含空格时。 -
/R
:表示递归执行,即不仅获取指定文件夹的所有权,还包括其下所有子文件夹和文件。 -
/A
:自动赋予当前登录的用户(即管理员账户)所有权,而无需手动指定用户名。 -
/D Y
:自动回答“Y”(Yes),用于在需要确认时自动同意操作,避免命令执行过程中因等待用户输入而暂停。
执行此命令后,系统会开始处理,将指定文件夹及其内容的所有权转移给当前管理员账户。请注意,这一步骤仅改变了文件的所有权,并不直接修改文件的访问权限。如果还需要调整权限,可以进一步使用icacls
命令来设置具体的访问控制列表。
icacls "D:\Share\Offices" /t /c /grant HR:F
icacls "C:\example_folder\*" /grant "Users:(RX)" /T /C
这里,各参数的意义如下:
-
"C:\example_folder\*"
:指定了要修改权限的文件夹及其中所有文件(星号*
代表所有文件)的路径。 -
/grant "Users:(RX)"
:表示授予Users
组读取(R)和执行(X)权限。这里(RX)
就是权限代码,R
代表读取权限,X
代表执行权限,两者之间没有逗号。/grant HR:F表示给文件夹及其文件赋予HR用户组所有控制权限 -
/T
:表示该命令将递归应用到指定目录下的所有子文件和子文件夹。 -
/C
:继续执行命令,即使遇到错误也不中断。这对于大量文件和文件夹尤其有用,可以确保命令尝试处理所有对象,即使某些操作可能因为权限问题失败。
执行上述命令后,icacls
将为C:\example_folder
目录下所有的文件和子文件夹内的文件赋予Users
组读取和执行的权限。请记住,这会覆盖现有的权限设置,除非这些文件已经拥有更宽松的权限。如果需要更细致地控制权限,比如同时保留现有权限并添加新的权限条目,可以查阅icacls
的更高级用法。
ICACLS name /save aclfile [/T] [/C] [/L] [/Q]
将匹配名称的文件和文件夹的 DACL 存储到 aclfile 中以便将来与 /restore 一起使用。请注意,未保存 SACL、所有者或完整性标签。
ICACLS directory [/substitute SidOld SidNew [...]] /restore aclfile
[/C] [/L] [/Q]
将存储的 DACL 应用于目录中的文件。
ICACLS name /setowner user [/T] [/C] [/L] [/Q]
更改所有匹配名称的所有者。该选项不会强制更改所有身份;使用 takeown.exe 实用程序可实现该目的。
ICACLS name /findsid Sid [/T] [/C] [/L] [/Q]
查找包含显式提及 SID 的 ACL 的所有匹配名称。
ICACLS name /verify [/T] [/C] [/L] [/Q]
查找其 ACL 不规范或长度与 ACE计数不一致的所有文件。
ICACLS name /reset [/T] [/C] [/L] [/Q]
为所有匹配文件使用默认继承的 ACL 替换 ACL。
ICACLS name [/grant[:r] Sid:perm[...]]
[/deny Sid:perm [...]]
[/remove[:g|:d]] Sid[...]] [/T] [/C] [/L] [/Q]
[/setintegritylevel Level:policy[...]]
/grant[:r] Sid:perm 授予指定的用户访问权限。如果使用 :r,这些权限将替换以前授予的所有显式权限。如果不使用 :r,这些权限将添加到以前授予的 所有显式权限。
/deny Sid:perm 显式拒绝指定的用户访问权限。将为列出的权限添加显式拒绝 ACE,并删除所有显式授予的权限中的相同权限。
/remove[:[g|d]] Sid 删除 ACL 中所有出现的 SID。使用
:g,将删除授予该 SID 的所有权限。使用
:d,将删除拒绝该 SID 的所有权限。
/setintegritylevel [(CI)(OI)]级别将完整性 ACE 显式添加到所有匹配文件。要指定的级别为以下级别之一:
L[ow]
M[edium]
H[igh]
完整性 ACE 的继承选项可以优先于级别,但只应用于目录。
/inheritance:e|d|r
e - 启用继承
d - 禁用继承并复制 ACE
r - 删除所有继承的 ACE
注意:
Sid 可以采用数字格式或友好的名称格式。如果给定数字格式,
那么请在 SID 的开头添加一个 *。
/T 指示在以该名称指定的目录下的所有匹配文件/目录上执行此操作。
/C 指示此操作将在所有文件错误上继续进行。仍将显示错误消息。
/L 指示此操作在符号链接本身而不是其目标上执行。
/Q 指示 icacls 应该禁止显示成功消息。
ICACLS 保留 ACE 项的规范顺序:显式拒绝;显式授予;继承的拒绝;继承的授予
perm 是权限掩码,可以指定两种格式之一:
简单权限序列:
N - 无访问权限;
F - 完全访问权限;
M - 修改权限;
RX - 读取和执行权限;
R - 只读权限;
W - 只写权限;
D - 删除权限;
在括号中以逗号分隔的特定权限列表:
DE - 删除
RC - 读取控制
WDAC - 写入 DAC
WO - 写入所有者
S - 同步
AS - 访问系统安全性
MA - 允许的最大值
GR - 一般性读取
GW - 一般性写入
GE - 一般性执行
GA - 全为一般性
RD - 读取数据/列出目录
WD - 写入数据/添加文件
AD - 附加数据/添加子目录
REA - 读取扩展属性
WEA - 写入扩展属性
X - 执行/遍历
DC - 删除子项
RA - 读取属性
WA - 写入属性
继承权限可以优先于每种格式,但只应用于
目录:
(OI) - 对象继承
(CI) - 容器继承
(IO) - 仅继承
(NP) - 不传播继承
(I) - 从父容器继承的权限
示例:
icacls c:\windows\* /save AclFile /T
- 将 c:\windows 及其子目录下所有文件的ACL 保存到 AclFile。
icacls c:\windows\ /restore AclFile
- 将还原 c:\windows 及其子目录下存在的 AclFile 内所有文件的 ACL。
icacls file /grant Administrator:(D,WDAC)
- 将授予用户对文件删除和写入 DAC 的管理员权限。
icacls file /grant *S-1-1-0:(D,WDAC)
- 将授予由 sid S-1-1-0 定义的用户对文件删除和
写入 DAC 的权限。
TAKEOWN [/S system [/U username [/P [password]]]]
/F filename [/A] [/R [/D prompt]]
描述:
该工具以重新分配文件所有权的方式允许管理员重新获取先前被拒绝访问
的文件访问权。
参数列表:
/S system 指定要连接到的远程系统。
/U [domain\]user 指定用户上下文,命令在此上下文中执行。
/P [password] 指定给定用户上下文的密码。如果省略,
提示输入。
/F filename 指定文件名或目录名模式。可以用通配符 "*"
指定模式。允许共享名\文件名。
/A 将所有权给于管理员组,而不是当前用户。
/R 递归: 指示工具运行于指定的目录和子目录
里的文件上。
/D prompt 当前用户在一个目录里没有“列出文件夹”
权限时,使用默认答案。当在子目录里进行
递归 (/R) 操作时会发生这种情况。用有效
值 "Y" 获取所有权或用 "N" 跳过。
/SKIPSL 不遵循符号链接。
仅适用于 /R。
/? 显示此帮助消息。
注意: 1) 如果未指定 /A,文件所有权会将被授予
当前登录的用户。
2) 不支持用 "?" 和 "*" 的混合模式。
3) /D 用于抑制确认提示。
示例:
TAKEOWN /?
TAKEOWN /F lostfile
TAKEOWN /F \\system\share\lostfile /A
TAKEOWN /F directory /R /D N
TAKEOWN /F directory /R /A
TAKEOWN /F *
TAKEOWN /F C:\Windows\System32\acme.exe
TAKEOWN /F %windir%\*.txt
TAKEOWN /S system /F MyShare\Acme*.doc
TAKEOWN /S system /U user /F MyShare\MyBinary.dll
TAKEOWN /S system /U domain\user /P password /F share\filename
TAKEOWN /S system /U user /P password /F Doc\Report.doc /A
TAKEOWN /S system /U user /P password /F Myshare\*
TAKEOWN /S system /U user /P password /F Home\Logon /R
TAKEOWN /S system /U user /P password /F Myshare\directory /R /A