Como bloquear um arquivo contra exclusão, mas ainda torná-lo gravável?

32

Eu quero fazer um arquivo bloqueado contra exclusão, mas ainda ser gravável. Como faço isso?

O arquivo em questão é um volume Truecrypt como um arquivo em um compartilhamento de NAS SMB, portanto, não quero excluí-lo acidentalmente.

    
por therobyouknow 23.08.2011 / 14:06

5 respostas

34

Para o Windows:

  1. Negar permissão "Excluir" no arquivo.
  2. Remova ou negue a permissão "Excluir itens secundários" no diretório pai.

Para Unix (incluindo o OS X):

  1. Remova a permissão "Write" no diretório pai.

Observe que isso só impedirá que o arquivo seja removido (excluído), mas não fará nada contra truncamento acidental ou sobrescrever com lixo. Se um arquivo é gravável, você pode escrever qualquer coisa para ele, ponto final.

Além disso, as permissões de arquivo são quase impossíveis de traduzir entre sistemas operacionais. Se o NAS executar o Linux e você tentar definir permissões no Windows, o resultado final poderá ser diferente do esperado.

    
por 23.08.2011 / 14:12
26

No Linux, você pode criar um link físico para ele. Então você pode escrever e deletar, mas você estará removendo apenas a referência em seu diretório. O outro link físico ainda apontará para o conteúdo do arquivo, então ele não será excluído de qualquer maneira.

No mundo Unix, você não "exclui" arquivos. Você apenas diminui o número de links para ele. Quando nada mais está apontando para ele, o espaço é considerado livre e pode ser usado…

    
por 23.08.2011 / 14:39
12

Backups. Você não pode realmente proteger um arquivo gravável de dano mesmo se você puder excluir. Faça o backup diariamente.

    
por 23.08.2011 / 14:23
0

Além das respostas anteriores, eu consideraria dar uma olhada no selinux. Lá você pode definir limitações bastante granulares.

    
por 24.08.2011 / 19:33
0

Em um sistema de arquivos cow como o btrfs, você pode conseguir isso usando subvolumes + snapshots ou cp com --reflink = always. Isso resultará em quantos arquivos desejar, o que consumiria a mesma quantidade de espaço que um + sobrecarga (mas sem um número insano de cópias ou snapshots especialmente combinados com tamanhos minúsculos de arquivos, isso não deve ser perceptível) até que sejam modificados, caso em que somente as partes que foram alteradas são armazenadas separadamente e o restante ainda é compartilhado. Em seguida, defina as permissões em cada um separadamente (para conseguir o que você quer, basta fazer regularmente um instantâneo ou copiar com permissões somente leitura (e opcionalmente montar ro ou não um tudo se for um instantâneo e se for um arquivo use chattr + i é possível gravar ou modificar o arquivo, mesmo se houver permissões de gravação) em uma cópia, se você for paranóico.

    
por 09.04.2017 / 04:38