Como posso definir as permissões NTFS em uma pasta para um comportamento semelhante ao WORM?

5

É possível definir permissão de grupo em uma pasta em um servidor Windows para que um arquivo possa ser criado, preenchido e fechado, MAS não alterado ou excluído depois disso?

    
por GuHa 02.06.2009 / 18:05

2 respostas

10

Você pode definir permissões para isso, mas provavelmente descobrirá que não está satisfeito com o resultado. (Eu ainda tenho que configurar isso para um cliente que solicitou e não teve que ir mudá-lo alguns dias depois.)

Em particular, alguns programas (o Microsoft Word é um bom exemplo) assumem que podem gravar arquivos com um único nome e depois renomeá-los após a gravação. Outros programas criam o arquivo, fecham o arquivo e o abrem novamente para gravação novamente. Quando um programa desse tipo tentar gravar em um diretório com permissões como você descreve, você descobrirá que as coisas quebram.

Se você estiver copiando arquivos para esse diretório, talvez tenha mais sorte.

Vamos supor que você queira que "Usuários autenticados" possam fazer isso. Você precisará usar o editor de ACL "Avançado" para adicionar a última permissão:

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

Isso permitirá que "Usuários autenticados" criem novos arquivos, mas eles não poderão modificar os arquivos que acabaram de criar. (Obviamente, membros do SYSTEM e Administradores serão capazes de manipular esses arquivos.)

    
por 02.06.2009 / 18:17
1

A resposta de Evan foi muito útil. Aqui, eu escrevi um script PowerShell para reduzi-lo à prática.

$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
    
por 01.10.2017 / 18:34