在 Windows 上使用 Powershell 7 设置文件和目录的所有权和权限的最简单方法是什么?

在 Windows 上使用 Powershell 7 设置文件和目录的所有权和权限的最简单方法是什么?

假设我有一个目录 somedir,其中包含几个文件 somefile_nn.txt。该目录和文件目前归 john 所有,并且对 Everyone 具有从 parentdir 继承的完全权限。我想将目录和文件更改为由 mary 所有,只有 mary 可读,其他任何人都无权访问。在 Linux 上,这看起来像:

sudo chown -R mary somedir
sudo chmod 700 somedir
sudo chmod 600 somedir/*.txt

到目前为止,我在互联网上搜索如何在 Windows 上使用 Powershell 7 执行此操作,但结果并不理想。我找到的最好的方法相当复杂。目前设置文件和目录所有权和权限的最简单方法是什么?

谢谢!

答案1

我也不喜欢标准Microsoft.PowerShell.安全PowerShell 附带的模块以及所有这些Get-Acl东西Set-Acl

我喜欢使用NTFS安全模块。您可以使用以下命令安装Install-Module NTFSSecurity

以下注释的代码序列可以解决问题。您必须在提升的 PowerShell 中运行它们。我建议先备份您的文件夹。

# Create a Test Folder
PS C:\install> mkdir testacl > $null

# Set the desired Owner
PS C:\install> Set-NTFSOwner testacl MyAccount

# Clear all NTFS Access and also the Inheritance from the folder above
PS C:\install> Clear-NTFSAccess testacl -DisableInheritance

# Add read access for my account
PS C:\install> Add-NTFSAccess testacl MyAccount Read

现在仅MyAccount对该文件夹及其所有子文件夹/文件具有读取权限。由于 Windows 默认阻止任何未经明确允许的访问,因此您无需执行任何其他操作。

我们可以这样检查:

PS C:\install> Get-NTFSAccess testacl

    Path: C:\install\testacl (Inheritance disabled)


Account                             Access Rights  Applies to                Type           IsInherited   InheritedFrom
-------                             -------------  ----------                ----           -----------   -------------
DESKTOP-ABCDEFG\MyAccount           Read, Synchro… ThisFolderSubfoldersAndF… Allow          False

PS C:\install> Get-NTFSOwner testacl

Item               Owner                     Account              FullName
----               -----                     -------              --------
C:\install\testacl DESKTOP-ABCDEFG\MyAccount DESKTOP-ABCDEFG\MyAccount C:\install\testacl

运行Get-Help Add-NTFSAccess以查看您可以指定哪些访问权限。或者阅读文档

答案2

根据我的评论和其中的指示。

也可以从 PS(任何版本)运行任何 DOS/Cmd.exe 可执行文件。

PowerShell - 运行可执行文件 - TechNet 文章 - 美国(英语) - TechNet Wiki

http://technet.microsoft.com/en-us/library/cc753024(v=ws.10).aspx

takeown /f "c:\folder\subfolder" /r

根据设计,使用纯 PS 有时确实需要更多代码。有时回退(使用内置可执行文件)更为谨慎。

需要注意的是,要真正熟悉 MSPowerShellGallery 中的插件模块

Find-Module -Name 'NTFSSecurity'
# Results
<#
Version              Name                                Repository           Description                                                                              
-------              ----                                ----------           -----------                                                                              
4.2.6                NTFSSecurity                        PSGallery            Windows PowerShell Module for managing file and folder security on NTFS volumes 
#>

相关内容