张昱峥
每年信息技术会考上机考试软件(网络版)的安装均会要求系统管理员在NT4.0中创建多个考生用户名(一般为50个,用户名为u01至u50),并且所有的用户都必须加入到djks组中,同时要求新建与之同名且数量相同的考生文件夹,设置好相应权限。例如,2003年福建省高中信息技术会考要求如下:
1.在NT服务器上启动“开始”—“程序”—“管理工具”—“域用户管理器”。新建djks组,新建u01、u02、u03用户,并将u01、u02、u03用户归入djks组中。
2.在NT服务器C盘上建立kdrive目录,设置为“共享”。将该目录的安全性设为:[Administrators组完全控制]、[djks组更改]。在kdrive目录中建立u01、u02、u03等目录。设置kdriveu01目录的安全性为:[Administrators组完全控制]、[u01用户完全控制]。u02、u03的设置照此类推。如果对每一个用户采取逐个手工创建、设置的办法,工作不仅十分烦琐,而且容易出错。有没有一种较为快捷的解决之道能够让电脑自动逐个创建并设置好用户呢?我们不妨将NT命令和批处理命令结合起来予以解决。
一、创建域用户
命令:
NET USER
语法:
NET USER
[username [password | *] [options]] [/DOMAIN]
username {password | *} /ADD [options] [/DOMAIN]
username [/DELETE] [/DOMAIN]
NET USER为创建和修改计算机上的用户账户。当不带其他选项使用本命令时,系统会列出计算机上的用户账户,这些信息存储在用户账户数据库中。该命令仅在服务器上运行。
Username指需要进行添加、删除、修改或者浏览的用户账户的名字。一般而言,用户账户的名字不能超过20个字符。
Password指分配或改变用户账户的密码。密码必须满足 NET ACCOUNTS 命令的/MINPWLEN 选项所指定的最小长度的要求。它最多可以具有14 个字符。
*为提示输入密码。当用户在密码提示符下输入时,密码是不会显示出来的。
/DOMAIN指在当前域的主域控制器上执行操作。
/ADD指将用户账户添加到数据库中。
/DELETE表示从数据库中删除用户账户。
关于Options的描述如下:
/ACTIVE:{YES | NO}表示激活或停用账户。如果账户处于停用状态,用户将不能访问该服务器。该选项的默认值是YES。
/COMMENT:"text"提供关于用户账户的一个描述性注释 (最多48个字符),需要将文本括在引号中。
/COUNTRYCODE:表示使用操作系统的国家/地区代码,以此作为用户实施特定语言文件的帮助消息。默认值为0。
/EXPIRES:{date | NEVER}如果日期被设置,则可能会引起账户过期。如果设置成NEVER,用户就没有时间上的限制了。依据国家/地区的代码,有效日期格式可以写作月/日/年或日/月/年。
/FULLNAME:"name"这是用户的完整名字(注意这里不是用户名),需要将名字括起来。
/HOMEDIR:pathname设置用户主目录的路径。注意该路径必须是已经存在的。
/PASSWORDCHG:{YES | NO}表示指定用户是否可以改变自己的密码,其默认值是YES。
/PASSWORDREQ:{YES | NO}表示指定用户的账户是否必须享有密码,其默认值是YES。
/PROFILEPATH[:path]这是为用户的登录配置文件设置路径。
/SCRIPTPATH:pathname表示用户登录文件所在的位置。
/TIMES:{times | ALL}表示用户可以登录的时间。TIMES的表达方式是day[-day][,day[-day]],time[-time][,time[-time]],增量限制为1小时。天可以是拼写或缩写;小时可以是12小时或24小时制。12小时制可以使用AM或PM予以表示。使用逗号分隔天和时间项,用分号分隔多个天和时间项。ALL表示用户始终是可以登录的,空值表示用户永远不能登录。
/USERCOMMENT:"text"表示让管理人员添加或改变账户的用户注释。
/WORKSTATIONS:{computername[,...] | *} 列出可以登录到网络上的最多八个计算机用户。如果/WORKSTATIONS没有列表或列表是*,则用户可以从任何一台计算机上登录。
根据以上注释,我们不难发现如果要创建一个无需登录密码的域用户u01,可用命令:net user u01 /add /passwordchg:no /passwordreq:no完成即可。
二、新建组,并将用户加入该组
命令:
NET GROUP
语法:
NET GROUP
[groupname [/COMMENT:"text"]] [/DOMAIN]
groupname {/ADD [/COMMENT:"text"] | /DELETE}[/DOMAIN]
groupname username [...] {/ADD | /DELETE} [/DOMAIN]
NET GROUP 指用于添加、显示或修改服务器上的全局组。当不带参数使用本命令时,系统会显示服务器上的组名。
groupname指需要添加、扩充或删除组的名称。只要给出组名就可以浏览该组中的用户列表。
/COMMENT:"text" 指的是为一个新的或已存在的组添加注释。注释最多为48个字符,文本应包含在引号中。
/DOMAIN表示在当前域的主域控制器上执行操作,否则只是在本地计算机上执行该操作。
username[...]列出一个或多个需要从一个组中添加或删除的用户名,可以用空格将多个用户名分隔开。
/ADD表示添加一个组,或将一个用户名添加到一个组中。
/DELETE表示删除一个组,或将一个用户名从一个组中删除。
三、新建文件夹,并设置相应权限
1.新建文件夹的命令很简单,如为md u01。
2.若要为u01设置权限,使用户u01和administrator为完全控制,则需用到以下命令——
命令:
CACLS
语法:
CACLS
filename [/T] [/E] [/C] [/G user:perm] [/R user [...]] [/P user:perm [...]] [/D user [...]]
CACLS表示显示或者修改文件的访问控制表ACL。
filename表示显示指定文件名。
/T表示更改当前目录及其所有子目录中指定文件的ACL。
/E 表示编辑ACL而并非替换。
/C表示在出现拒绝访问错误时继续。
/G user:perm表示赋予指定用户访问权限。其中,Perm可以是R表示“读取”;可以是W表示“写入”;可以是C表示“更改(写入)”;可以是F表示“完全控制”。
/R user表示撤销指定用户的访问权限,但仅在与/E一起使用时该命令才合法。
/P user:perm表示替换指定用户的访问权限。其中,Perm可以是R表示“读取”;可以是W表示“写入”;可以是C表示“更改(写入)”;可以是F表示“完全控制”。
/D user表示拒绝指定用户的访问。
在CACLS命令中用户可以使用通配符指定多个文件,也可以在命令中指定多个用户。
例如,目录u01本身有用户everyone为完全控制,如果要撤销u01,基于上述的注释,输入命令为:cacls u01/e/r everyone。然后,增加用户u01和administrator的权限,输入命令分别为:cacls u01 /e /g u01:F和cacls u01 /e /g administrator:F。
四、使用批处理的FOR命令
上述解决的只是对一个用户的设置问题,还有数十个用户的设置需要重复上面的操作。为了进一步简化操作,我们可利用批处理的FOR命令。
FOR命令是一个比较复杂的命令,主要表示参数在指定的范围内循环执行命令。在批处理文件中使用 FOR 命令时,指定变量用 %%variable。
命令:
FOR
语法:
FOR {%variable/%%variable} in (set) do command [ CommandLineOptions]
%variable表示指定一个单一字母可替换的参数。
(set)表示指定一个或一组文件,可以使用通配符。
command表示指定对每个文件执行的命令。
command-parameters为特定命令指定参数或命令行开关。
另外,变量名称是区分大小写的,所以 %i 不同于 %I。
除上述以外,FOR命令还有另外一种语法为:
FOR /L %variable IN (start,step,end) do command [command-para]
该语法表示以增量形式从开始到结束的一个数字序列。例如,(1,1,5) 将产生序列 (1 2 3 4 5);(5,-1,1) 将产生序列 (5 4 3 2 1)。
如果我们要创建u01至u09共9个用户,在批处理文件中可用命令:for /L %%n in (1,1,9) do net user u0%%n /add /passwordchg:no /passwordreq:no。
五、结合上述命令,写出批处理文件huikao.bat
net group djks /add--新建一个组djks
for /l %%n in (1,1,9) do net user u0%%n /add /passwordchg:no /passwordreq:no
for /l %%n in (10,1,50) do net user u%%n /add /passwordchg:no /passwordreq:no--新建u01——u50共50个用户
for /l %%n in (1,1,9) do net group djks u0%%n /add
for /l %%n in (10,1,50) do net group djks u%%n /add --将新建的用户加入组djks里
md kdrive
net share kdrive=c:kdrive--创建文件夹kdrive,并设置为“共享”
cacls kdrive /e /r everyone
cacls kdrive /e /g djks:c
cacls kdrive /e /g administrators:F--在NT命令中新建的文件夹,一般情况下其目录安全性默认为[Everyone完全控制],所以必须先予以撤销,再增加Administrators组和djks组的权限,后两条命令中使用参数/e的作用是在命令执行时,不会停下询问“是否确定(Y/N)?”
cd kdrive
for /l %%n in (1,1,9) do md u0%%n
for /l %%n in (1,1,9) do cacls u0%%n /e /r administrators
for /l %%n in (1,1,9) do cacls u0%%n /e /r djks
for /l %%n in (1,1,9) do cacls u0%%n /e /g u0%%n:F
for /l %%n in (1,1,9) do cacls u0%%n /e /g administrator:F --创建文件夹u01——u50,并设置用户administrator为完全控制,相应的用户为完全控制
for /l %%n in (10,1,50) do md u%%n
for /l %%n in (10,1,50) do cacls u%%n /e /r administrators
for /l %%n in (10,1,50) do cacls u%%n /e /r djks
for /l %%n in (10,1,50) do cacls u%%n /e /g u%%n:F
for /l %%n in (10,1,50) do cacls u%%n /e /g administrator:F
NT中新建的文件夹如果其父目录设置有安全性,则一般情况下子目录也会继承父目录的安全性,所以kdrive下的子目录u01、u02……的安全性为[Administrators组完全控制]、[djks组更改],也必须先予以撤销。
最后,将上述命令命名为huikao.bat复制到服务器C盘根目录下运行,即可一次完成所有的操作。