我们有几个Windows网络共享,位于一个公共位置(\\ server-name \ share),它承载一组公共文件。这些共享在大约300台服务器中复制。我们实际上已经复制了,但是我们遇到了一个意料之外的问题:服务器管理员在世界各地改变了我们共享的文件权限,并以创造性的方式打破了复制。
为了尽早发现这一点,我们想编写一个脚本来检查每个服务器的网络共享,并确保共享文件夹和数据库存在一些权限。其内容:
现在,到目前为止,我有一个很好的脚本,可以检查至少每个共享是否存在。复杂性源于这样一个事实:(由于一个漂亮的Active Directory树),用户名在服务器之间是一致的(总是以“DOMAIN / user”的形式),但它们的guid数字会有所不同。
到目前为止,我一直在查看cacls.exe和更新版本的Icacls.exe,但选项很混乱,似乎集中在更改访问控制列表,我不想这样做。任何Windows内置的工具都是可取的,我只是不确定如何处理它。
所以归结为:在某个任意服务器上,如果我只知道用户的NAME,有没有办法弄清楚他们在给定文件夹上有哪些文件权限?
答案 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。