你是否不想让别人在你的电脑上打开某个文件夹或者文件?是否有时想允许让别人看某个文件和文件夹下的文件,但是不想让别人更改?或者不想让自己电脑上的某个账户不能访问某个文件夹?如果有过那么可以用以下命令实现,而不需要借助其他加密软件。
注意要限制别人访问的文件或者文件夹所在盘必须要是NTFS文件系统的,而不能是FAT32格式。这或许是ntfs文件系统安全性能好于fat32的原因之一吧。[比如查看D盘文件系统,只需要打开D盘,在里面空白处点击右键-属性,里面就可以看到了]
如果是fat32而不是ntfs文件系统可以通过这条命令来转换所在盘为ntfs文件系统[不影响里面的文件的]:
命令行下操作:
开始-运行-cmd-回车 打开命令行界面
输入:convert d: /fs:ntfs
再回车,按照提示操作就可以了
[上面命令的意思是:convert表示命令转换文件系统的意思;d: 表示要转换D盘,其他盘你可以相应写,比如f: ; /fs:ntfs 表示文件系统转换为ntfs格式。注意这个命令只能把fat32转换成ntfs格式。将ntfs转换为fat32不能通过简单命令完成,需要借助特别软件。]
请使用Icacls,不推荐使用 Cacls。
权限操作命令需要在管理员模式下运行runas /noprofile /user:administrator cmd
输入密码,切换到管理员模式下。
由于网上和微软官网对cacls 和 icacls命令的实例介绍的不详细,这里对每个命令都有对应的示例进行说明,便于理解学习。
显示或者修改文件的访问控制列表(ACL)
CACLS filename [/T] [/M] [/L] [/S[:SDDL]] [/E] [/C] [/G user:perm]
[/R user [...]] [/P user:perm [...]] [/D user [...]]
filename 显示 ACL。
/T 更改当前目录及其所有子目录中指定文件的 ACL。
/L 对照目标处理符号链接本身
/M 更改装载到目录的卷的 ACL
/S 显示 DACL 的 SDDL 字符串。
/S:SDDL 使用在 SDDL 字符串中指定的 ACL 替换 ACL。
(/E、/G、/R、/P 或 /D 无效)。
/E 编辑 ACL 而不替换。
/C 在出现拒绝访问错误时继续。
/G user:perm 赋予指定用户访问权限。
Perm 可以是: R 读取
W 写入
C 更改(写入)
F 完全控制
/R user 撤销指定用户的访问权限(仅在与 /E 一起使用时合法)。
/P user:perm 替换指定用户的访问权限。
Perm 可以是: N 无
R 读取
W 写入
C 更改(写入)
F 完全控制
/D user 拒绝指定用户的访问。
在命令中可以使用通配符指定多个文件。
也可以在命令中指定多个用户。
缩写:
CI - 容器继承。
ACE 会由目录继承。
OI - 对象继承。
ACE 会由文件继承。
IO - 只继承。
ACE 不适用于当前文件/目录。
ID - 已继承。
ACE 从父目录的 ACL 继承。
eg:
% 将所有d:\documents目录下的文件、子文件夹的NTFS权限修改为仅管理员组(administrators)完全控制(删除原有所有NTFS权限设置):%
$ cacls d:\documents\*.* /T /G administrators:F
% 在原有d:\documents目录下的文件、子文件夹的NTFS权限上添加管理员组(administrators)完全控制权限(并不删除原有所有NTFS权限设置):%
$ cacls d:\documents\*.* /T /E /G administrators:F
% 取消管理员组(administrators)完全控制权限(并不删除原有所有NTFS权限设置):%
$ cacls \\Server\Documents\%username%\我的文档 /t /e /r "mddq\domain admins"
$ cacls \\Server\Documents\%username%\桌面 /t /e /r "mddq\domain admins"
Note:
eg1.让所有用户禁止访问D盘test文件夹。
cacls d:\test /t /p everyone:n
用cacls test
显示访问控制列表。
$ cacls test
D:\test Everyone:(OI)(CI)N
打开D盘test就提示禁止访问。因为上面写的是everyone所有用户。所有你自己也不能访问。自己要访问时只需要运行命令:
cacls d:\test /t /p everyone:f
就可以了.
如果你的电脑有几个账户,你是想不让其他账户访问这个文件夹,那么你可以在写命令的时候把everyone改成相应的账户名字,比如edwin等等〔看你实际的账户名啦〕。
直接用everyone所有用户设置权限。要打开时再运行命令取消限制,也不是太麻烦。
eg2.让用户edwin不能打开e:\test\apian.rmvb 这部电影。当然也可以限制图片,程序,word文档的打开哦。
命令:
cacls e:\test\apian.rmvb /p edwin:n
取消限制:
cacls e:\test\apian.rmvb /p edwin:f
eg3:把D盘绿色软件文件夹里面的exe文件设置成只读[包括子文件夹里面的]。这样可以防止病毒感染exe文件。
命令:
d:
cd d:\绿色软件
cacls *.exe /t /p everyone:r
**eg4:把E盘根目录下设置成只读,防止病毒感染E盘根目录。因为很多U盘病毒会感染根目录,在根目录下新生成一个文件夹及文件比如 autorun.inf、setup.exe、a2de3d3.exe、autorun.exe。有些恶性病毒很厉害。弄得你重装系统都无法解决病毒问题。因为这些在非系统目录根目录的病毒存在当你单纯格式化C盘重装系统之后,第一次启动时打开D盘等非系统盘的时候病毒在次感染C盘。如果把非系统盘根目录设置成只读的话就可以防止病毒生成这些文件。当然不影响根目录下文件的删除哦。但是会影响你自己建立文件夹或在根目录下复制进文件。所有建议开始把根目录下的文件夹建立好。文件放到子文件夹里面。或者在你想在比如D盘根目录下建立一个文件夹时,先用命令行取消根目录只读。虽然有点麻烦,但是好处多余坏处 哦。
命令:
cacls e:\ /p everyone:r
解除根目录只读:
cacls e:\ /p everyone:f
问题:既然我可以用命令来加密,是不是别人也可以用命令来解密?
回答:是的。只要有管理员权限的账户都可以运行命令来设置权限。因此需要保护好你管理员账户的密码,否则别人可以获取你电脑管理员账户权限。
问题:用这些命令的注意点
回答:
1、尽量不要对系统文件及文件夹设置权限。因为那样可能会到时系统出现严重错误的。
2、如果要重装系统,那么之前尽量把加密的解密。如果是用ghost恢复就不需要了。
3、再次强调,所在盘符必须是ntfs的才行哦。
Note: Icacls (第一个是大写的i,倒数第二个是小写的L).
Icacls 是一种命令行工具,它显示或修改指定文件上的随机访问控制列表 (DACL),并将存储的 DACL 应用于指定目录中的文件。Icacls.exe 替换了 Cacls.exe 工具用于查看和编辑 DACL。ICACLS 是 Windows Server 2003 SP2 中 CACLS 工具的升级版本,可用于从恢复控制台重设文件中的帐户控制列表 (ACL) 以及备份 ACL。与 CACLS 不同的是,ICACLS 可以正确地传送对继承的 ACL 的更改和创建。有关 ICACLS 的使用及命令的更多信息,可以通过在命令提示符下运行icacls /?
进行访问。这里的I应该是Improved upgrade of cacls.
icacls <FileName> [/grant[:r] <Sid>:<Perm>[...]] [/deny <Sid>:<Perm>[...]] [/remove[:g|:d]] <Sid>[...]] [/t] [/c] [/l] [/q] [/setintegritylevel <Level>:<Policy>[...]]
icacls <Directory> [/substitute <SidOld> <SidNew> [...]] [/restore <ACLfile> [/c] [/l] [/q]]
/t 执行当前目录及其子目录中的所有指定文件上的操作。
/c 继续操作而不考虑文件的任何错误。 仍将显示错误消息。
/l 执行上一个符号链接,而不是其目标的操作。
/q 禁止显示成功消息。
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]
[/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 file /grant Administrator:(D,WDAC)
- 将授予用户对文件删除和写入 DAC 的管理员权限。
icacls file /grant *S-1-1-0:(D,WDAC)
- 将授予由 sid S-1-1-0 定义的用户对文件删除和写入 DAC 的权限。
操作的文件夹结构:
d:
cd d:\macds
ICACLS 1.txt /save aclf /T % 将macds目录下所有的1.txt文件的ACL信息存储到文件aclf %
ICACLS 1.txt /restore aclf % 利用文件aclf中的数据还原macds目录下所有的1.txt文件的ACL信息%
cd \
ICACLS d:\macds\* /save aclf2 /T
ICACLS d:\macds /restore aclf2
aclf文件内容
1.txt
D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1301bf;;;AU)(A;ID;0x1200a9;;;BU)
macds\1.txt
D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1301bf;;;AU)(A;ID;0x1200a9;;;BU)
aclf2文件内容
1.txt
D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1301bf;;;AU)(A;ID;0x1200a9;;;BU)
aclf
D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1301bf;;;AU)(A;ID;0x1200a9;;;BU)
godr.php
D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1301bf;;;AU)(A;ID;0x1200a9;;;BU)
hy.doc
D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1301bf;;;AU)(A;ID;0x1200a9;;;BU)
macds
D:(A;ID;FA;;;BA)(A;OICIIOID;GA;;;BA)(A;ID;FA;;;SY)(A;OICIIOID;GA;;;SY)(A;ID;0x1301bf;;;AU)(A;OICIIOID;SDGXGWGR;;;AU)(A;ID;0x1200a9;;;BU)(A;OICIIOID;GXGR;;;BU)
test
D:(A;ID;FA;;;BA)(A;OICIIOID;GA;;;BA)(A;ID;FA;;;SY)(A;OICIIOID;GA;;;SY)(A;ID;0x1301bf;;;AU)(A;OICIIOID;SDGXGWGR;;;AU)(A;ID;0x1200a9;;;BU)(A;OICIIOID;GXGR;;;BU)
macds\1.txt
D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1301bf;;;AU)(A;ID;0x1200a9;;;BU)
macds\2.so
D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1301bf;;;AU)(A;ID;0x1200a9;;;BU)
test\ght.xls
D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1301bf;;;AU)(A;ID;0x1200a9;;;BU)
test\hy.doc
D:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1301bf;;;AU)(A;ID;0x1200a9;;;BU)
$ cd d:\macds
$ dir /q test % 查看test目录下所有文件的所有者信息%
2019/07/14 23:10 <DIR> BUILTIN\Administrators .
2019/07/14 23:10 <DIR> BUILTIN\Administrators ..
2019/07/14 23:10 0 BUILTIN\Administrators ght.xls
2019/07/14 23:10 0 BUILTIN\Administrators hy.doc
% 设置test目录下所有文件的所有者为jsword用户(jsword用户必须存在)%
% 否则,会提示: 帐户名与安全标识间无任何映射完成。%
$ ICACLS test /setowner jsword /T
$ dir /q test
2019/07/14 23:10 <DIR> jscompu\jsword .
2019/07/14 23:10 <DIR> BUILTIN\Administrators ..
2019/07/14 23:10 0 jscompu\jsword ght.xls
2019/07/14 23:10 0 jscompu\jsword hy.doc
refer: Windows中的SID详解
WhoAmI 有三种使用方法:
语法 1: WHOAMI [/UPN | /FQDN | /LOGONID]
语法 2: WHOAMI { [/USER] [/GROUPS] [/PRIV] } [/FO format] [/NH]
语法 3: WHOAMI /ALL [/FO format] [/NH]
描述:
这个工具可以用来获取本地系统上当前用户(访问令牌)的用户名和组信息,
以及相应的安全标识符(SID)、特权和登录标识符(logon ID)。例如,谁是
当前登录的用户? 如果没有指定开关,工具用 NTLM 格式(域\用户名)显示
用户名。
参数列表:
/UPN 用用户主体 (User Principal) 格式显示用户名名称 (UPN)格式。
/FQDN 用完全合格的 (Fully Qualified) 格式显示用户名可分辨名称(FQDN) 格式。
/USER 显示当前用户的信息以及安全标识符 (SID)。
/GROUPS 显示当前用户的组成员信息、帐户类型和安全标识符 (SID) 和属性。
/PRIV 显示当前用户的安全特权。
/LOGONID 显示当前用户的登录 ID。
/ALL 显示当前用户名、属于的组以及安全标识符(SID) 和当前用户访问令牌的特权。
/FO format 指定要显示的输出格式。有效值为 TABLE、LIST、CSV。CSV 格式不显示列标题。默认格式是 TABLE。
/NH 指定在输出中不显示列标题。只对 TABLE 和 CSV 格式有效。
/? 显示此帮助消息。
示例:
WHOAMI
WHOAMI /UPN
WHOAMI /FQDN
WHOAMI /LOGONID
WHOAMI /USER
WHOAMI /USER /FO LIST
WHOAMI /USER /FO CSV
WHOAMI /GROUPS
WHOAMI /GROUPS /FO CSV /NH
WHOAMI /PRIV
WHOAMI /PRIV /FO TABLE
WHOAMI /USER /GROUPS
WHOAMI /USER /GROUPS /PRIV
WHOAMI /ALL
WHOAMI /ALL /FO LIST
WHOAMI /ALL /FO CSV /NH
WHOAMI /?
$ WHOAMI /USER /FO LIST % 显示当前用户的信息以及安全标识符 %
用户信息
----------------
用户名: jscompu\jsword
SID: S-1-5-21-3817771755-3330119566-3374898986-1000
% 查找包含显式提及 SID(S-1-1-0) 的 ACL 的所有匹配名称。%
$ ICACLS c:\* /findsid *S-1-1-0
发现 SID: c:\$360Section。
发现 SID: c:\Documents and Settings。
发现 SID: c:\ProgramData。
发现 SID: c:\Users。
% 在C盘的所有目录及子目录下查找其 ACL 不规范或长度与 ACE 计数不一致的所有文件 %
$ ICACLS C:\*.txt /verify /T
已处理的文件: C:\$Recycle.Bin\S-1-5-21-3817771755-3330119566-3374898986-1000\$I1DNCWV.txt
已处理的文件: C:\$Recycle.Bin\S-1-5-21-3817771755-3330119566-3374898986-1000\$IBKXJNZ.txt
已处理的文件: C:\$Recycle.Bin\S-1-5-21-3817771755-3330119566-3374898986-1000\$R1DNCWV.txt
已处理的文件: C:\$Recycle.Bin\S-1-5-21-3817771755-3330119566-3374898986-1000\$RBKXJNZ.txt
已处理的文件: C:\$Recycle.Bin\S-1-5-21-3817771755-3330119566-3374898986-501\$I341E2Y.txt
已处理的文件: C:\$Recycle.Bin\S-1-5-21-3817771755-3330119566-3374898986-501\$R341E2Y.txt
C:\Documents and Settings\*.txt: 拒绝访问。
已成功处理 6 个文件; 处理 1 个文件时失败
$ ICACLS d:\macds\1.txt % 查看d:\macds\1.txt的ACL信息 %
d:\macds\1.txt BUILTIN\Administrators:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\Authenticated Users:(I)(M)
BUILTIN\Users:(I)(RX)
已成功处理 1 个文件; 处理 0 个文件时失败
% 为所有匹配文件使用默认继承的 ACL 替换 ACL。 %
$ ICACLS d:\macds\1.txt /reset /T
已处理的文件: d:\macds\1.txt
已处理的文件: d:\macds\macds\1.txt
已成功处理 2 个文件; 处理 0 个文件时失败
$ ICACLS d:\macds\1.txt
% 将授予用户对文件删除和写入DAC的管理员权限 %
icacls d:\macds\1.txt /grant Administrator:(D,WDAC)
% 将授予由 sid S-1-1-0 定义的用户对文件删除和写入 DAC 的权限 %
icacls d:\macds\1.doc /grant *S-1-1-0:(D,WDAC)
% 拒绝用户jsword对文件d:\macds\test执行删除,读取控制,写入DAC的权限 %
% 即用户jsword对test不能执行rd...%
icacls d:\macds\test /deny jsword:(DE,RC,WDAC)
% 取消jsword对test的所有拒绝访问权限%
icacls d:\macds\test /remove:d jsword /T
icacls d:\macds\test\* reset /T
% 添加对Authenticated Users 的授权。 %
$ icacls test\ /grant "Authenticated Users":(M)
% 删除对Authenticated Users 的授权. %
$ icacls test\ /remove "Authenticated Users"
% 对test目录设置完整性级别. %
% 注意级别不能放到()中 %
$ icacls test /setintegritylevel (OI)(NP)(IO)H
注意事项:
1、对于继承的声明要放到具体权限之前。例如:(OI)(CI)(IO)(M)是对的,但(M)(OI)(CI)(IO)会提示无效的参数。
2、简单权限序列中的权限可以放到()里边,也可以不加()。例如授予用户yifan修改权限可以写为icacls <目录|文件> /grant yifan:M
或icacls <目录|文件> /grant yifan:(M)
。
3、若只授予指定用户特定权限,则必须将权限放到()中。例如授予用户yifan读取目录权限icacls <目录> /grant yifan:(AD)
是对的,如果是icacls <目录> /grant yifan:AD
将提示无效的参数。
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" 跳过。
/? 显示此帮助消息。
注意: 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\foo.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
% 强制将当前目录下的所有文件及文件夹、子文件夹下的所有者更改为管理员组(administrators)命令 %
$ takeown /f * /a /r /d y