Можно ли установить групповое разрешение для папки на сервере Windows, чтобы файл можно было создавать, заполнять и закрывать, НО не изменяя и не удаляя после этого?
Вы можете установить разрешения, чтобы разрешить это, но вы, вероятно, обнаружите, что не довольны результатом. (Мне еще не приходилось настраивать это для Заказчика, который запросил его и которому не пришлось менять его несколько дней спустя.)
В частности, некоторые программы (Microsoft Word - хороший пример) предполагают, что они могут записывать файлы под одним именем, а затем переименовывать их после записи. Другие программы создают файл, закрывают его, а затем снова открывают для записи. Когда такая программа пытается выполнить запись в каталог с разрешениями, подобными описанным вами, вы обнаружите, что что-то ломается.
Если вы просто собираетесь копировать файлы в такой каталог, возможно, вам повезет больше.
Предположим, вы хотите, чтобы «прошедшие проверку пользователи» могли это делать. Вам нужно будет использовать «Расширенный» редактор ACL, чтобы добавить последнее разрешение:
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
Это позволит «прошедшим проверку пользователям» создавать новые файлы, но они не смогут изменять только что созданные файлы. (Очевидно, члены SYSTEM и администраторы воля иметь возможность манипулировать этими файлами.)
Ответ Эвана был очень полезным. Здесь я написал сценарий 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