检查多个网络共享的文件权限?

时间:2011-04-19 20:28:16

标签: batch-file cmd dos

我们有几个Windows网络共享,位于一个公共位置(\\ server-name \ share),它承载一组公共文件。这些共享在大约300台服务器中复制。我们实际上已经复制了,但是我们遇到了一个意料之外的问题:服务器管理员在世界各地改变了我们共享的文件权限,并以创造性的方式打破了复制。

为了尽早发现这一点,我们想编写一个脚本来检查每个服务器的网络共享,并确保共享文件夹和数据库存在一些权限。其内容:

  • 每个人都需要阅读权限
  • 用户X需要更改/修改
  • 用户Y需要完全控制

现在,到目前为止,我有一个很好的脚本,可以检查至少每个共享是否存在。复杂性源于这样一个事实:(由于一个漂亮的Active Directory树),用户名在服务器之间是一致的(总是以“DOMAIN / user”的形式),但它们的guid数字会有所不同。

到目前为止,我一直在查看cacls.exe和更新版本的Icacls.exe,但选项很混乱,似乎集中在更改访问控制列表,我不想这样做。任何Windows内置的工具都是可取的,我只是不确定如何处理它。

所以归结为:在某个任意服务器上,如果我只知道用户的NAME,有没有办法弄清楚他们在给定文件夹上有哪些文件权限?

1 个答案:

答案 0 :(得分:0)

icacls 允许使用“友好名称”表单来指定用户。这意味着您应该能够使用人类风格的名称。所以'bob'应该指向所有域中的同一个人。

您可以使用/grant:r授予用户权限,而无需更改任何其他内容,这意味着“如果它已经在那里做任何事情,否则添加它”。所以,

每个人都需要阅读权限
icacls \a\directory\somewhere /t /grant:r Everybody:(rd)

我假设您希望他们能够列出目录的内容以及阅读。

用户X需要更改/修改
icacls \a\directory\somewhere /t /grant:r bobX:m

等等。我认为'm'足以传达'修改'权限。

ACL只是“权限”的另一个名称。因此,如果您想更改权限,则需要更改ACL。