假设我有一个目录 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
#>