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


33

Quero tornar um arquivo bloqueado contra exclusão, mas ainda assim posso ser gravável. Como eu faço isso?

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


1
Não é possível. Escrever zeros equivale a excluí-lo.
Soandos

@soandos - Não concordo, tenho medo. Como gravar zeros nele ainda significa que o arquivo existe, mas está cheio de zeros. De fato, existem comandos do Linux para criar um arquivo 'esparso' cheio de zeros.
Therobyouknow

Respostas:


34

Para Windows:

  1. Negue a permissão "Excluir" no arquivo.
  2. Remova ou negue a permissão "Excluir itens filho" no diretório pai.

Para Unix (incluindo OS X):

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

Observe que isso impedirá que o arquivo seja removido (excluído), mas não fará nada contra truncamentos acidentais ou substituição de lixo. Se um arquivo é gravável, você pode escrever qualquer coisa nele, ponto final.

Além disso, é quase impossível converter permissões de arquivo 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.


Melhor resposta que eu vou conseguir, eu acho. +1 e obrigado. Sim, o NAS é um Lacie 2big executando uma versão do linux no ARM.
Therobyouknow 23/08

1
Você realmente não precisa negar a exclusão, basta remover a opção Excluir das entradas de controle de acesso (ACEs) existentes. (Deny ACEs tornar as coisas mais complexas, geralmente não é um bom curso a longo prazo.)
Richard

2
@ Richard: AFAIK, a remoção requer a desativação completa da herança da ACL para esse arquivo, o que o torna ainda mais complexo no final.
grawity

Eu concordo com o Grawity. Negar permissão de exclusão é o caminho a percorrer. Se a permissão de compartilhamento estiver configurada para modificar, a negação ainda bloqueará a exclusão, enquanto deixar em branco permitirá exclusões.
Surfasb

26

No Linux, você pode criar um link físico para ele. Em seguida, você pode gravar e "excluí-lo", mas você removerá apenas a referência no seu diretório. O outro link físico ainda apontará para o conteúdo do arquivo, portanto não será excluído.

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


2
Boa ideia. Não sei se o @Rob pode criar hardlinks em seu NAS, mas se puder, é uma solução muito inteligente.
CarlF 23/08/19

1
+1 Eu conseguirei isso em combinação com a resposta aceita, se possível. ou separadamente, se não. +1 por pensar fora da caixa como dito. No entanto, o compartilhamento do linux em questão é uma unidade NAS, sem saber quais recursos de console estão disponíveis, é uma forma de linux incorporada ou semi-incorporada. +1 ainda assim, pois isso pode ajudar outras pessoas que têm um desktop ou computador linux comum atuando como um compartilhamento.
#

2
A mesma técnica deve funcionar com NTFS.
Rotsor 23/08/19

+1 RBerteig e +1 CarlF por oferecer suporte à solução woliveirajr.
Therobyouknow 23/08

12

Backups. Você realmente não pode proteger um arquivo gravável de danos, mesmo que possa ser excluído. Faça backup diariamente.


4
+1. Faça isso independentemente de outras correias e suspensórios.
RBerteig 23/08

+1 CarlF e +1 RBerteig. Concordo plenamente. Todos os arquivos também são armazenados em backup em mídia ótica (DVD-R, + R, + R DL e Blu-ray de 25 gb e dl 50 gb). Também posso considerar um segundo disco rígido.
therobyouknow

Devo acrescentar que tenho backups dos arquivos no volume truecrypt, que é o arquivo do contêiner. Não é o próprio volume do truecrypt.
Therobyouknow 27/08

0

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


0

Em um sistema de arquivos cow como o btrfs, você pode conseguir isso usando subvolumes + snapshots ou cp com --reflink = sempre, isso efetivamente resultará no número de arquivos que você deseja, que consumiriam a mesma quantidade de espaço que um + alguma sobrecarga (mas sem um número insano de cópias ou instantâneos, especialmente combinados com pequenos tamanhos de arquivo, isso não deve ser percebido) até que sejam modificados; nesse caso, apenas as partes que foram alteradas serão armazenadas separadamente e o restante ainda será compartilhado. Em seguida, defina as permissões em cada um separadamente (para obter o que deseja, faça regularmente um instantâneo ou copie com permissões somente leitura (e, opcionalmente, monte-o no ro ou não em tudo, se for um instantâneo e se for um arquivo, use chattr + i (os usuários podem escreva ou modifique o arquivo, mesmo que tenha permissões de gravação) em uma cópia, se você for paranóico).


0

No UNIX "padrão", parece impossível proteger um único arquivo contra exclusão se o diretório for gravável. Intuitivamente, pode-se esperar que limpar a proteção w dos bits de modo com 'chmod' proteja contra a exclusão, mas NÃO É O CASO. Da mesma forma, no AFS, você não pode proteger arquivos únicos de serem excluídos, porque as entradas da ACL (sem ou negando a permissão 'd' relevante) se aplicam apenas ao diretório como um todo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.