Eu (e meus colaboradores) tenho uma árvore de diretórios contendo ~ 160K arquivos (a maioria deles é gerada automaticamente pela instrumentação de coleta de dados).
Esses arquivos residem em um sistema que é armazenado em backup constantemente e, portanto, não estamos muito preocupados com perda ou corrupção de dados, contanto que tenhamos as informações necessárias para restaurar a partir do backup, quando necessário.
Estamos muito mais preocupados com a perda ou corrupção inadvertida de dados resultante do erro do usuário (especialmente código escrito pelo usuário), pois isso significa, na melhor das hipóteses, desperdício de trabalho até que o problema seja detectado.
Portanto, queremos tornar esses arquivos não configuráveis e não modificáveis.
Infelizmente, nenhum de nós tem permissão para usar chattr
neste sistema, o que exclui a aplicação de chattr +i
a esses arquivos.
Existe alguma outra maneira, não exigindo permissões especiais, para aproximar chattr +i
?
O restante deste post descreve algumas possibilidades que consideramos, juntamente com suas deficiências.
Uma possibilidade seria aplicar chmod -R a-w DATA
, em que usei DATA
como atalho para a raiz da árvore de diretórios em questão.
Isso é bom como uma primeira aproximação, mas vai um pouco longe demais, porque ele renderiza muitas operações que podemos precisar executar ocasionalmente (por exemplo, consolidando vários subdiretórios em um)
Uma segunda possibilidade seria algo como
find DATA -type f -exec chmod a-w {} \;
Isso é um pouco mais flexível, e os arquivos não podem mais ser modificados, mas eles ainda podem ser excluídos.