微软的IIS是windows server上的一款后台服务,它包含web服务和FTP服务和管理工具,在域的环境下,可以直接关联域用户,简单易用,至少不像其他web或ftp软件还需要经历创建分配用户账号这个比较头疼的环节。
IIS有自带的管理工具,如果不想每个操作都由管理员手工完成,IIS还支持命令行工具AppCmd.exe 和一些开发语言的支持,比如C#、
VB.NET、Javascript、VBScript。并且在官方网站还提供的代码示例。
比如FTP授权的添加,可以参考这个网页链接:https://learn.microsoft.com/zh-cn/iis/configuration/system.ftpserver/security/authorization/add
大家可能注意到了,授权可以添加允许的或拒绝的,但是网站上找不到删除授权的例子。是IIS不支持么,不是的,也许是微软忘记写上了,也许是故意不写的。。。
我们什么情况下需要删除一些授权呢,比如FTP根默认授权是所有人可读,假设我们在根下创建了用户目录,需要授予用户读写权限,其他人则不可访问,那么得把从根目录继承下来的所有人可读这个授权给删除掉,图形管理界面当然可以删除,但是脚本中怎么弄呢,微软又没有告诉我们呀。
这样操作即可:
var args = WScript.Arguments;
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var authorizationSection = adminManager.GetAdminSection("system.ftpServer/security/authorization", "MACHINE/WEBROOT/APPHOST/"+args(0)+"/"+args(1));
var authorizationCollection = authorizationSection.Collection;
var removeElement = authorizationCollection.CreateNewElement("remove");
removeElement.Properties.Item("users").Value = "*";
removeElement.Properties.Item("permissions").Value = "Read";
authorizationCollection.AddElement(removeElement);
var addElement = authorizationCollection.CreateNewElement("add");
addElement.Properties.Item("accessType").Value = "Allow";
addElement.Properties.Item("users").Value = "dn\\"+args(1);
addElement.Properties.Item("permissions").Value = "Read, Write";
authorizationCollection.AddElement(addElement);
adminManager.CommitChanges();
上面的代码中命令的第一个参数是IIS管理界面里创建的服务名,第二个参数是用户名,我们这里假设是域环境,域名是dn
其实删除授权就是要先创建一个标识是"remove"新元素,配置好它的相关属性,并且添加到授权任务队列中,可以再添加其他remove和add的任务,最后一起提交即可。