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

发布于 2024-11-02 11:58:25 字数 691 浏览 0 评论 0原文

我们有多个 Windows 网络共享,位于托管一组公共文件的公共位置 (\\server-name\share)。这些共享被复制到大约 30000 台服务器上。我们已经完成了实际的复制,但遇到了一个意想不到的问题:远在半个地球之外的服务器管理员更改了我们共享上的文件权限,并以创造性的方式破坏了复制。

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

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

现在,到目前为止,我已经有了一个很好的脚本,可以检查至少每个共享是否存在。复杂性源于这样一个事实:(由于良好的 Active Directory 树),服务器之间的用户名是一致的(始终采用“域/用户”的形式),但它们的 guid 号不同。

到目前为止,我一直在研究 cacls.exe 和较新版本的 Icacls。 exe,但选项很混乱,并且似乎集中在更改访问控制列表上,这是我不想做的。任何 Windows 内置的工具都是更好的,我只是不确定如何解决这个问题。

所以归结为:在某个任意服务器上,如果我只知道用户的名称,是否有办法找出他们对给定文件夹具有哪些文件权限?

We have several Windows network shares, in a common location (\\server-name\share) that hosts a common set of files. These shares are replicated across roughly 300 hundred servers. We have the actual replication down, but we're running into an unanticipated problem: server admins half the world away changing file permissions on our share, and breaking replication in creative ways.

To detect this early on, we'd like to write a script to check each server's network share and ensure that a few permissions exist for the share folder & its contents:

  • Everyone needs read access
  • User X needs change/modify
  • User Y needs full control

Now, so far I've got a nice script that checks that at least each share exists. The complication stems from the fact that (due to a nice Active Directory tree), the usernames are consistent across servers (always of the form "DOMAIN/user"), but their guid numbers vary.

So far I've been looking at cacls.exe and the newer version Icacls.exe, but the options are confusing and seem to be centered around changing the Access Control Lists, which I don't want to do. Any tool that's Windows built-in is preferable, I'm just unsure how to approach this.

So it comes down to is: on some arbitrary server, if I only know the NAME of a user, is there a way to figure out what file permissions they have on a given folder?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

年华零落成诗 2024-11-09 11:58:25

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

您可以使用 /grant:r 向用户授予权限,而无需更改任何其他内容,这意味着“如果已经存在,则不执行任何操作,否则添加它”。因此,

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

我假设您希望他们能够列出目录的内容并进行读取。

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

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

ACL 只是“权限”的别称。因此,如果您想更改权限,那么您需要更改 ACL。

icacls does allow the use of the "friendly name" form for specifying the user. Which means you should be able to use the human style names. So 'bob' should point to the same person in all of your domains.

You can grant a user a permission without changing anything else using /grant:r which means "if it's already there do nothing, otherwise add it". So,

Everyone needs read access
icacls \a\directory\somewhere /t /grant:r Everybody:(rd)

I assume you want them to be able to list the contents of the directory as well as read.

User X needs change/modify
icacls \a\directory\somewhere /t /grant:r bobX:m

And so on. I assume that 'm' is sufficient to convey the 'modify' permission.

ACLs are just another name for "permissions". So, if you want to change permissions then you want to change the ACLs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文