Editando um arquivo sem sobrescrever permissão

2

É possível definir permissões para o arquivo para mantê-lo editável, mas sem permissão para sobrescrever?

Quero dizer a possibilidade de editar o arquivo com o editor de texto, mas negando qualquer tentativa de substituir o arquivo sobrescrevendo. O usuário é root . Eu sei que não é a estrutura comum de permissão de arquivo unix, mas estou procurando uma abordagem complicada.

Eu tenho um pacote de arquivos, pois alguns deles foram editados / personalizados a partir da versão original. Ao atualizar o pacote com uma nova versão, quero substituir qualquer arquivo intocado, mas proteja os arquivos personalizados (para não perder as edições). Atualmente, devo fazer isso manualmente: escrever qual arquivo foi editado, não deve ser substituído em uma nova atualização.

    
por Googlebot 01.04.2012 / 19:15

4 respostas

0

Como todos os pacotes tentarão sobrescrever completamente o arquivo de configuração, você pode definir o arquivo somente no modo de anexação

chattr +a bb

Assim, você não pode remover / truncar o arquivo, apenas anexá-lo.

Mas, nesse caso, você impedirá que o gerenciador de pacotes atualize o sistema.

Se você simplesmente não quiser que o gerenciador de pacotes substitua seus arquivos personalizados, você poderia manter o pacote, no debian / ubuntu, você poderia fazer:

echo package-name hold | dpkg --set-selections

Dessa forma, este pacote não será atualizado, seus arquivos serão mantidos.

    
por 11.09.2012 / 07:49
0

Depende do que exatamente "substituir" significa. Se isso significa alterar os dados de um arquivo existente, então não é possível porque o sistema operacional não tem como distinguir uma "edição" de uma "substituição" - ambos estão alterando os dados do arquivo. Se isso significa excluir e criar um novo arquivo com o mesmo nome (ou renomear um novo arquivo para esse nome), isso pode ser feito removendo a permissão de gravação do diretório que contém o arquivo. Obviamente, isso se aplicaria a todos os arquivos nesse diretório, não a um arquivo específico.

    
por 14.05.2012 / 05:26
0

Firs de todos, faça um tar dos arquivos importantes do pacote. Então atualize. Depois de instalar a nova versão, descompacte o save em outro diretório e diferencie os arquivos que você editou com os novos do pacote. Dessa forma, você verá se os novos arquivos também não têm coisas importantes a serem adicionados / alterados (isto é, os desenvolvedores também podem ter adicionado modificações nos arquivos que você editou, e essas mudanças também devem ser mantidas.) apenas substitua os arquivos new-from-new-package pelas suas edições antigas, sem verificar primeiro se esses novos arquivos não contêm novas informações importantes)

    
por 31.12.2012 / 13:10
-2

Como root:

chattr +i foo.txt

Em seguida, tente:

vim foo.txt

altere o arquivo no vim e tente salvá-lo.

Um exemplo de caso de uso é o chattr + i /etc/resolv.conf para que o seu serviço de gerenciador de rede não o substitua por algum arquivo indesejado que ele receba de um roteador doméstico / de escritório mal configurado.

Você pode desfazer isso com:

chattr -i foo.txt

No modelo de sistema de arquivos do Linux, é o melhor que você pode fazer. Não há outra solução.

    
por 01.04.2012 / 20:57