在2000下用图形方式设置权限简单、易用,查看也很直观,但是针对大批量文件和目录的设置或者是需要一些特殊的设置的时候命令行下的工具的优势就体现出来了。
2000下面自带了Cacls工具,在Resource Kit里面又增加了Xcacls,Xcacls是针对Cacls的一个增强工具,用来对文件和目录的NTFS权限进行设置。对比和Cacls的功能来说,显著的有增加了/Y的参数,这个用来设置对提问的开关,也就是说如果加上/Y的话遇到问题按照肯定的去做,这个在Cacls里面实现还是比较麻烦的,echo y| cacls filename /g username : permission ,注意:不要在"y"和(|)之间有空格。还有就是权限的参数更多,还有一些特殊的权限设置。特别是针对无人值守的安装,可以设置初始的操作系统文件夹的访问权限,当你发布软件的时候,可以对用户的文件夹和文件进行保护,防止用户删除。
Cacls的用法参见下面的帮助。下面介绍一下在Xcacls里面添加的新功能。
基本语法是:xcacls file name [/T] [/E] [/C] [/G user:perm;spec ] [/R user] [/P user:perm;spec ][...] [/D user ][...] [/Y]
/G user:perm;spec 指定用户对文件和文件夹的访问权限,这个比起Cacls来说增加和对目录的操作并增加了参数的种类。
Perm (permission):对指定的文件设定权限。包含以下参数:
R Read
C Change (write)
F Full Control
P Change Permissions (special access)
O Take Ownership (special access)
X EXecute (special access)
E REad (Special access)
W Write (Special access)
D Delete (Special access)
Spec(special access):可以使用上面带有(Special access)的参数,只针对目录,还有一个附加参数 T,目的是对在创建的目录下面的新建立的文件不起作用。
/R user 废除指定用户的所有访问权限。
/Y 对提示的问题采取肯定的答复
现在马上实践一下,使用Xcacls.exe查看一下2000安装目录的权限,输入xcacls d:\winnt显示结果如下:
d:\WINNT BUILTIN\Administrators:(OI)(CI)F
CREATOR OWNER:(OI)(CI)(IO)F
NT AUTHORITY\SYSTEM:(OI)(CI)F
BUILTIN\Users:(OI)(CI)R
BUILTIN\Users:(CI)(special access:)
SYNCHRONIZE
FILE_WRITE_DATA
FILE_APPEND_DATA
BUILTIN\Administrators:F
BUILTIN\Administrators:(OI)(CI)(IO)F
NT AUTHORITY\SYSTEM:F
NT AUTHORITY\SYSTEM:(OI)(CI)(IO)F
CREATOR OWNER:(OI)(CI)(IO)F
BUILTIN\Users:R
BUILTIN\Users:(OI)(CI)(IO)(special access:)
GENERIC_READ
GENERIC_EXECUTE
BUILTIN\Users:(CI)(special access:)
FILE_APPEND_DATA
BUILTIN\Users:(CI)(special access:)
FILE_WRITE_DATA
大部分权限大家都可以看明白,但是有一些括号内的标记的意思不是很清楚,这些其实是ACL 标记,主要分为两类,首先显示的文件的继承权限,接下来显示的是目录的继承权限:
一、文件权限:
OI = MSG_CACLS_OBJECT_INHERIT
目前不存在的,也就是说新建立的对象继承权限。
IO = MSG_CACLS_INHERIT_ONLY
包括的对象容器的文件不接受,但是目前存在的对象继承权限。通常OI和IO都显示,也就是说不论是目前已经存在的还是今后创建的包括目录下面的文件等都使用该权限。
二、目录权限:
CI = MSG_CACLS_CONTAINER_INHERIT
包含的对象继承ACE,比如目录。
NP = MSG_CACLS_NO_PROPAGATE_INHERIT
下一级将不再向下传播
现在上面的语句代表的意思就看明白了。
比如第二行CREATOR OWNER:(OI)(CI)(IO)F
说明CREATOR OWNER对此目录的存在以及新建的文件和下面的目录有完全控制的权限。
下面举几个典型的例子。
1、cacls %systemroot%\system32\cmd.exe /e /d guests
编辑系统目录下的CMD的权限为Guests不能访问。
2、XCACLS *.* /G test:RW /Y
替换当前目录下所有的文件和文件夹为test用户可读、可写,并且对提问的问题表示肯定的答复。
3、XCACLS *.* /G everyone:F /t /y
更改所有的目录及其包含文件的权限为Everyone完全控制,/t的意思为更改当前目录和所有子目录中指定文件的 ACL,注意他的意思是替换为,而不是在原有的基础上进行编辑,如果想保留原有的则选择参数/e。
4、 XCACLS *.* /G Test:RWED;RW /E
给予Test用户对此目录的新创建的文件以读取、写入、运行和删除的权限,但是针对目录本身只有读取和写入的权限。
当你在一个目录下面执行该命令的时候,发现该目录下面已经存在的文件的权限会被替换为读取、写入、运行和删除的权限,但是新建的文件则没有这些权限,但是对这个在该目录下面的子目录及其里面的文件则正好相反,原来已经存在的文件的权限不会被更改,而新创建文件则会为读取、写入、运行和删除的权限,目录也是如此。所以说这个命令其实确切的说是针对执行命令所在目录下面的目录及其包含文件起到作用。
另外该命令会替换执行命令本身目录为读取、写入、运行和删除的权限。
5、 XCACLS *.* /G Test:RWED;TRW /E
这个和上面的例子里面的类似,但是有些小的差别,就是在“;”后面加了一个“T”参数,执行后基本和上面的功能类似,但是当在下面的目录里面创建文件的时候,对新创建的文件的权限将不会生效,也就是说仍旧会保存原有的权限。
这个“T”参数必须放在语法的“spec”处,只能针对目录起到作用,后面至少要跟一个参数。
怎么样,用cacls和Xcacls还是很方便的吧,在针对大量的目录和文件进行操作的时候也以大大的节约时间,实在是管理员的福音啊;。
如果你已经有了Resource Kit,这个小软件就在这里了,如果没有的话可以到下面的地址去。
备注:
什么是ACE?
授予用户或组权限的对象自由访问控制列表 (DACL) 中的一个项目。ACE 也是对象的系统访问控制列表 (SACL) 中的项目,该列表指定用户或组要审核的事件。访问控制项也被称为 ACE。
【责编:admin】
--------------------next---------------------