如何安全优雅地利用共享服务实现自动管理多人异地共享(三)

天色有些阴沉,似乎又飘了些细雨。

孔大力早早地赶到公司,进入办公室,坐到了自己的工位上。

他面无表情,机械地打开背包、掏出电脑,摆放在桌子上,脑子里还在试图回想着昨天是否还有未完成的工作。

他望了望窗外,不知怎么竟发起了呆,这时手机响了一下,来了条短信......

"尊敬的XXX,您的还款日为XX日,请您按期足额还款......"

这条短信像恶魔的魔爪一般一把将孔大力游离在外的小心思拽回了现实,他哆嗦了一下,不禁感叹这世间还是有人时时记得他的,活着真好!


“老板不讲武德,我可不能不耗子尾汁啊!开始工作工作......”,孔大力捋了捋脑瓜上稀疏的头发调侃起了自己,语气带了点苦恼。

他快速回忆整理了昨天所做的一切,对了,剩下的还有两个问题:权限和期限。

好了,趁着一早还没有人打扰,干就是了!


首先,是权限问题。

为了保证相关的用户可以访问到同一文件夹,同时又为了保证不同用户之间避免不必要的干扰而实施隔离,这就不得不涉及到权限问题了。

首先,要让所有域用户都可以访问 TempShare

其次,要保证通过申请的用户可以写入 TempShare


右击 TempShare 文件夹,选择属性,找到安全选项卡。

禁用继承 > 删除 Users 组 > 添加 Domain Users 组只读 > 添加 TempShare 组可写。


这样一来,所有的域用户都可以查看 TempShare ,但只有 TempShare 组的用户才可以往里面写文件。

孔大力仔细想了想,发现有个漏洞,那不是所有用户都可以看其他用户的文件了,这算什么隔离呢?

嗯,还是要再更新一下设计方案。

孔大力想到了让用户自行指定可以访问的用户,通过 VBS 代码命令参数来实现。

比如让 user1user2 两个用户都能访问自己的文件,可以这样做。

C:\> Cscript TempShare.vbs user1 user2
 


那么,怎么用 VBS 代码来实现呢?

套路还是一样的,TempShare 下新建的子文件夹权限也要事先执行禁用继承等操作,然后赋予指定用户访问权限。

' Modify Folder Permissions Function
Function ModifyFolderPermissions(ByVal strFolder)
   Dim strCmd

   strCmd = "cmd /c ""ICACLS " & strFolder & " /inheritance:d"""
   CreateObject("WScript.Shell").Run strCmd, 0

   strCmd = "cmd /c ""ICACLS " & strFolder & " /remove ""TempShare"""
   CreateObject("WScript.Shell").Run strCmd, 0

   strCmd = "cmd /c ""ICACLS " & strFolder & " /remove ""Domain Users"""
   CreateObject("WScript.Shell").Run strCmd, 0

    ' Paramete of Argument, Users who would be added to access
    If intArgNum > 0 Then
       For Each strArgUser in ArgArray

          ' 指定用户可写权限
          strCmd = "cmd /c ""ICACLS " & strFolder & " /grant:r " & strArgUser & ":(OI)(CI)(RC,S,RD,WD,AD,DC,REA,WEA,X,RA,WA)"""
          CreateObject("WScript.Shell").Run strCmd, 0

          If Err.Number <> 0 Then
            Msgbox "Permissions setup error!" & vbCrLf & "ErrNo: " & Err.Number
          End If

       Next
    End If

End Function
 


其次,是期限问题。

孔大力起身倒了一杯开水,在房间里边踱步边思考着接下来的问题。

权限问题暂时搞定了,可期限又该怎么设定呢?

昨天,草稿上的代码临时设定了期限变量为3天,也就是过期3天的文件将被删除,当然天数可任意指定。

设定变量为3天或多少天很容易,问题是如何具体操作来达到限制的目的呢?

孔大力放下水杯,在 文件服务管理器 里翻找了起来,不一会儿找到了一个叫作 文件管理任务 的项目。


这玩意儿可以用于文件定期删除吗?

孔大力心存疑惑,顺手点开了右侧的 创建文件管理任务...

按窗口提示输入了一些内容,触发条件也设定为3天前修改过的文件。


很遗憾,经过测试,孔大力发现这个文件管理任务并没有什么卵用。

其一,它只是把过期的文件转移到另一个不同于 TempShare 的其他文件夹内,然后再由管理员进一步处理。

其二,它的操作似乎只针对文件而不包括文件夹,所以即便时间过期文件夹也并不会被删除。


”这根本就不符合预期啊!“

孔大力拿起水杯,发现水还是很烫。

“还是到网上找找,应该有更好的办法。”

于是他把水杯放在一旁,打开浏览器在网上搜索,还真发现有一个 forfiles 的命令可以实现定期删除文件的功能。

这个命令是通过遍历文件夹,然后针对返回的文件或文件夹完整路径来进一步对其执行操作(比如删除)。

forfiles /S /D -3 /P "C:\TempShare" /M "*" /C "cmd /C if @isdir==TRUE rd @path 2>nul"
 

简单解释一下参数:

/S :递归子目录

/D -3 :文件夹修改日期超过3天以上

/P "C:\TempShare" :搜索路径

/M "*" :搜索掩码,因为要删除的是文件夹,所以不能用 *.* 的形式

/C "cmd /C if @isdir==TRUE rd @path 2>nul" :实际执行的命令,判断是否为文件夹并删除之


“嘿!有了这条命令行,再结合任务计划程序,就可以做到定期清理过期文件夹了。”

孔大力一把拿起水杯,使劲吹了吹热气,抿了一小口,水有点甜。



这时,屏幕上弹出邮件新消息,是赖副总秘书询问方案是否有进展。

孔大力脸上顿时出现了几条黑线,举着杯子犹豫是不是再喝一口,看到那一行讨厌的文字只好不情愿地将杯子放下。

“连个喝水的时间都没有,还有没有人性了?!”

孔大力内心在咆哮,右手却熟练地点击鼠标打开了邮件回复窗口。

正当他皱着眉头输入“你好”两个字后,正斟酌着回复内容时,座机和手机几乎同时响起,办公室里一时充满了令人窒息的铃音。

这两通恼人的来电如此急促,孔大力此时心烦意乱,他究竟会先接哪个电话呢......

关注网管小贾微信公众号,阅读更多。


下载完整源码:

https://www.90pan.com/b2170419 提取码:


输入密码,继续阅读



扫码关注微信公众号,回复文章ID免费获取密码


[文章ID:000787]

关注 @网管小贾,阅读更多...

WeChat@网管小贾 | www.sysadm.cc



提交评论

安全码
刷新

© 2020-present 网管小贾 | 微信公众号 @网管小贾
许可协议:CC-BY-NC 4.0 | 转载文章请注明作者出处及相关链接