在NTFS / Active Directory中,假设我映射了两个驱动器:
H:\ I:\
用户可以编辑H:\中的文件,但不能在I:\中编辑。 我希望用户能够使用脚本将文件移动到I:\驱动器,除非发生覆盖。 在复制文件之后,该脚本删除I:\中复制文件的写入权限,以便用户不能再更改权限,I:\上的文件在某种意义上成为永久性的。
我怎样才能以安全的方式进行设置?
经过一堆试错之后,这个PowerShell脚本似乎是这样做的:
$worm="C:\WORM" mkdir -Force $worm cd $worm <# https://serverfault.com/a/17869 SYSTEM - Full Control - Apply onto: This folder, subfolders, and files Administrators - Full Control - Apply onto: This folder, subfolders, and files Authenticated Users - Read - Apply onto: This folder, subfolders, and files Authenticated Users - Create Files / Write Data - Apply onto: This folder and subfolders #> $acl = Get-Acl $worm $ace1 = New-Object Security.AccessControl.FileSystemAccessRule 'Users', ` 'CreateDirectories, CreateFiles, ListDirectory, Read', ` 'ContainerInherit, ObjectInherit', ` 'None', ` 'Allow' $acl.AddAccessRule($ace1) Set-Acl -AclObject $acl -Path $worm $acl = Get-Acl $worm $ace1 = New-Object Security.AccessControl.FileSystemAccessRule 'Users', ` 'DeleteSubdirectoriesAndFiles,Delete', ` 'ContainerInherit, ObjectInherit', ` 'None', ` 'Deny' $acl.AddAccessRule($ace1) Set-Acl -AclObject $acl -Path $worm $acl = Get-Acl $worm $ace1 = New-Object Security.AccessControl.FileSystemAccessRule 'Users', ` 'WriteData', ` 'ObjectInherit', ` 'InheritOnly', ` 'Deny' $acl.AddAccessRule($ace1) Set-Acl -AclObject $acl -Path $worm
虽然pipe理员可以采取以下措施来控制:
icacls C:\WORM /T /Q /C /RESET
我会说,如果你需要一个工业级解决scheme来满足SEC的要求,那么你可能需要投资NetApp和SnapLock:
https://library.netapp.com/ecmdocs/ECMP1196889/html/GUID-7334EEB5-94E9-4500-BA40-681DEC572420.html
正如我所看到的,如果脚本以用户身份运行,则需要具有写入I驱动器的权限。
你也许可以有一个计划的任务,在I驱动器上写入权限运行,拉动文件。 也许他们可以创build一个名为“readytocopy.txt”或类似的文件。 当计划的任务在用户的目录中find该文件时,它将复制文件(readytocopy.txt除外)。
你想要解决什么具体问题?
这可以通过脚本,计划任务和NTFS权限的组合来实现。
假设你没有子文件夹,只有一个文件夹中的文件,这是如何实现它:
组
(如果你喜欢使用内置的)
目标文件夹上的NTFS权限(我:)
计划任务
脚本
将会有一段时间,用户仍然可以对文件进行写入,具体取决于脚本的编码方式,文件夹中有多less文件等等,这个时间将会低至毫秒。
你应该可以用普通的NTFS权限来做到这一点。 我发现这篇文章。 它大约十岁,但它很清楚地显示了这个例子:
https://technet.microsoft.com/en-us/magazine/2006.01.howitworksntfs.aspx
- 仅将此文件夹(在“应用于”列表中select)的“读取和执行”和“写入”权限授予您想要访问该文件夹的用户。
- 将子文件夹和文件的读取和执行权限授予相同的用户。
- 将写入权限授予特殊用户创build者所有者。
这样做的效果是,所有的用户都可以将文件添加到文件夹并读取彼此的文件,但只有创build文件的用户才能修改它。