本文目录
使用NTFS权限创建目录
我们经常可能会需要使用特定的NTFS权限创建一个目录,下面有一个创建新目录的例子,并且会演示怎样给已存在的目录添加新权限:
$Path = 'c:\protectedFolder' # 创建一个新目录 $null = New-Item -Path $Path -ItemType Directory # 获取目录的权限 $acl = Get-Acl -Path $path # 添加新权限 $permission = 'Everyone', 'FullControl', 'ContainerInherit, ObjectInherit', 'None', 'Allow' $rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $permission $acl.SetAccessRule($rule) # 添加另外一个新权限 # 警告: 把用户名"Tobias" 替换成你自己想分配权限的用户或着组 $permission = 'Tobias', 'FullControl', 'ContainerInherit, ObjectInherit', 'None', 'Allow' $rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $permission $acl.SetAccessRule($rule) # 设置新权限 $acl | Set-Acl -Path $path
管理NTFS权限
上一小节我们演示如何给一个目录添加NTFS权限,如果要查看目录已经被分配了那些类型的权限,可以这样做:
PS> [System.Enum]::GetNames([System.Security.AccessControl.FileSystemRights]) ListDirectory ReadData WriteData CreateFiles CreateDirectories AppendData ReadExtendedAttributes WriteExtendedAttributes Traverse ExecuteFile DeleteSubdirectoriesAndFiles ReadAttributes WriteAttributes Write Delete ReadPermissions Read ReadAndExecute Modify ChangePermissions TakeOwnership Synchronize FullControl
假设我们创建了一个名为 “protectedfolder”的目录:
$Path = 'c:\protectedFolder' # 创建一个目录 $null = New-Item -Path $Path -ItemType Directory
要给用户”Tobias”添加一个新的规则(请确保将例子中的用户名替换成你自己环境中真实存在的用户名),要分配文件系统权限运行下面的例子:
# 获取权限 $acl = Get-Acl -Path $path # 添加新权限 $permission = 'Tobias', 'Read,Write,Modify', 'ContainerInherit, ObjectInherit', 'None', 'Allow' $rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $permission $acl.SetAccessRule($rule) # 设置新权限 $acl | Set-Acl -Path $path
获取特定的NTFS权限
要查看直接分配给文件或者文件夹有那些NTFS权限,请检查isInherited属性。下面我们会创建一个新文件夹”sampleFolderNTFS”,然后查看指定给它的NTFS权限。因为文件夹是刚创建的,它只会有一些继承的权限,没有任何指定的权限。
荔非苔注:本文中我们把文件系统从父目录继承来自的权限成为“继承权限”,把用户单独分配的权限称为“指定权限”。
$Path = 'c:\sampleFolderNTFS' # 创建新目录 $null = New-Item -Path $Path -ItemType Directory -ErrorAction SilentlyContinue # 获取指定权限 $acl = Get-Acl -Path $path $acl.Access | Where-Object { $_.isInherited -eq $false }
一旦你添加了指定权限,脚本才会有返回结果。下面会演示如何使用PowerShell添加指定权限。脚本会给当前用户添加读,写,和更新的权限。
$acl = Get-Acl -Path $path # 添加新权限 $permission = $env:username, 'Read,Write,Modify', 'ContainerInherit, ObjectInherit', 'None', 'Allow' $rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $permission $acl.SetAccessRule($rule) # 设置新权限 $acl | Set-Acl -Path $path
删除指定的NTFS权限
在上面的例子中,我们演示了如何给已存在的文件夹添加新的指定权限。如果你想把这些添加的指定权限删掉,解铃还须系铃人,可以尝试下面的脚本。
#请确保文件夹存在 $Path = 'c:\sampleFolderNTFS' # 获取指定权限 $acl = Get-Acl -Path $path $acl.Access | Where-Object { $_.isInherited -eq $false } | # 删除所有指定权限 ForEach-Object { $acl.RemoveAccessRuleAll($_) } # 设置新权限 $acl | Set-Acl -Path $path
管理NTFS继承权限
上面的例子我们不止一次提到了继承权限,貌似很神秘,其实就是从父文件夹继承来的权限。比如有一个文件夹,我想把所有的权限都牢牢地控制在自己手里,我给它当前用户的权限,给它管理员的权限,但是神马继承来的权限统统删除,请看看下面的例子。
$Path = 'c:\PermissionNoInheritance' $null = New-Item -Path $Path -ItemType Directory -ErrorAction SilentlyContinue # 获取当前权限的引用 $acl = Get-Acl -Path $path # 给当前用户添加权限 $permission = $env:username, 'Read,Modify', 'ContainerInherit, ObjectInherit', 'None', 'Allow' $rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $permission $acl.SetAccessRule($rule) # 给管理器添加权限 $permission = 'Administrators', 'FullControl', 'ContainerInherit, ObjectInherit', 'None', 'Allow' $rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $permission $acl.SetAccessRule($rule) # 禁用继承权限 $acl.SetAccessRuleProtection($true, $false) # 设置新权限 $acl | Set-Acl -Path $path
本文引用链接:
- Create Folder with NTFS Permissions
- Managing NTFS Permissions
- Getting Explicit NTFS Permissions
- Removing Explicit NTFS Permissions
- Manage NTFS Permission Inheritance
本文链接: https://www.pstips.net/manage-ntfs-permission.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!