Назад | Перейти на главную страницу

Как я могу установить разрешения NTFS для папки для поведения, подобного WORM

Можно ли установить групповое разрешение для папки на сервере 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