在 Windows 中,共享权限和 NTFS 权限共同决定了用户对文件夹或文件的访问权限。当用户尝试访问某个共享文件夹时,系统首先检查共享权限,然后再检查 NTFS 权限。最终的权限由两者中最严格的权限决定。这意味着如果共享权限不允许某项操作,即使 NTFS 权限允许,用户也无法执行该操作。
举个例子来说明这一点:
- 文件夹 A 设置了共享权限,允许用户 User1 只读访问。
- 文件夹 A 的 NTFS 权限赋予了用户 User1 写入权限。
在这个场景下,尽管 NTFS 权限允许 User1 进行写入操作,但由于共享权限仅授予了只读权限,User1 在通过网络访问文件夹 A 时只能读取,无法写入。这是因为共享权限限制了 User1 的网络访问能力。
换句话说,如果共享权限和 NTFS 权限存在冲突,最终的权限将遵循较严格的那一项。在这个例子中,共享权限比 NTFS 权限严格,所以 User1 最终的权限是只读。
总结一下,Windows 共享权限和 NTFS 权限的交集就是两者中最严格的权限。如果共享权限不允许某项操作,即使 NTFS 权限允许,用户也无法执行该操作。
要在 PowerShell 中查看共享文件夹的共享权限和 NTFS 权限,您可以使用以下命令:
查看共享权限
- 打开 PowerShell。
- 输入以下命令并替换
<folder_name>为您想要查看的共享文件夹的名称:
Get-Acl "<folder_name>" | Format-List AccessToString
这将显示与该文件夹关联的所有共享权限。
查看 NTFS 权限
- 打开 PowerShell。
- 输入以下命令并替换
<folder_name>为您想要查看的文件夹的名称:
Get-Acl "<folder_name>" | Select-Object -ExpandProperty Access
这将列出所有与该文件夹相关的 NTFS 权限。
如果您想更详细地查看特定用户的权限,可以使用以下命令:
Get-Acl "<folder_name>" | Select-Object -ExpandProperty Access | Where-Object {$_.IdentityReference -eq "username"}
请将 username 替换为要查询的具体用户名。
https://petri.com/how-to-use-powershell-to-manage-folder-permissions
https://www.delftstack.com/zh/howto/powershell/managing-acl-permissions-using-powershell