(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

598. Como não apagar os arquivos

É vital lembrar que o Linux é diferente do MS-DOS quando se trata da não eliminação. Para MS-DOS (e sua descendência: o Windows 95), é geralmente bastante simples não apagar um arquivo - o 'sistema operacional' (eu uso o termo livremente) até mesmo vem com um utilitário que automatiza muito do processo. Para o Linux, este não é o caso.

Assim, a regra número um (a primeira diretiva, caso se prefira) é:

MANTER CÓPIAS DE SEGURANÇA

não importa o que se possa fazer. Eu sei que eu sou uma pessoa agradável de se conversar. Eu deveria simplesmente alegrar empobrecimento (sendo estudante devo ter alguns perks) e exortar todos usuários bem pensantes de Linux a sair e comprar um dispositivo de cópia de segurança útil, imaginar um esquema de cópia de segurança decente, e usá-la ativamente. Para maiores informações sobre isto, leia Frisch (1995) (ver seção Créditos e Bibliografia).

Na falta de cópias de segurança, o que se faz? (Ou mesmo na presença de cópias de segurança: cintos e fitas não são uma má política quando dados importantes estão em jogo).

Tente estabelecer as permissões dos arquivos importantes para 440 (ou menos): negar-se o acesso de escrita a esses arquivos significa que rm requer uma confirmação explícita antes de apagar (eu acho, porém, que se estou recursivamente apagando um diretório com rm -r, interromperei o programa no primeiro ou segundo pedido de confirmação e relançarei o comando como rm -rf).

Um bom truque para arquivos selecionados é criar uma ligação direta com eles num diretório escondido. Eu ouvi uma história sobre um administrador de sistema que repetidamente apagava /etc/passwd por acaso (e com isso a metade do sistema). Um dos ajustes para isto foi fazer algo como o que se segue (como superusuário):

# mkdir /.backup
# ln /etc/passwd /.backup

Isto exige algum esforço para apagar os conteúdos dos arquivos completamente. Ao se digitar:

# rm /etc/passwd

então

# ln /.backup/passwd /etc

salvará o desatento administrador. Claro que isto não ajuda no caso de sobrescrita do arquivo, por isso de qualquer maneira as cópias de segurança serão necessárias.

Num sistema de arquivos ext2 é possível usar os atributos ext2 para proteger as coisas. Estes atributos são manipulados através do comando chattr. Há um atributo `append-only': um arquivo com este atributo pode ser acrescido, mas não pode ser apagado, e os conteúdos existentes do arquivo não podem ser sobrescritos. Se um diretório tiver este atributo, qualquer arquivo ou diretórios dentro dele podem ser modificados, mas nenhum arquivo pode ser apagado. O atributo `append-only' é estabelecido com:

$ chattr +a ARQUIVO...

Há também um atributo 'imutável', que só pode ser estabelecido ou retirado pelo superusuário. Um arquivo ou diretório com este atributo não pode ser modificado, renomeado, ou receber conexões diretas (links). Pode ser estabelecido como se segue:

# chattr +i ARQUIVO...

O ext2fs também provê o atributo 'não removível' (+u no chattr). A intenção aqui é que se um arquivo com este atributo for apagado, ao invés de ser de fato reutilizado, ele é simplesmente movido para um 'local seguro' para a eliminação em uma data posterior. Infelizmente esta característica não foi ainda implementada na linha principal dos kernels. Porém, vários ajustes de kernel existem para promover a habilidade de tornar a eliminação reversível. Veja <http://www.linuxhq.com/> se estiver interessado em ajustar esta facilidade ao kernel. A atualização mais recente que conheço é a de Rogier Wolff <R.E.Wolff@BitWizard.nl>, Darren J Moffat <darren@xarius.demon.co.uk> e Kurt Huwig <kurt@huwig.de>. Salientaria que enquanto este ajuste implementa a característica, ele não é uma 'solução para não apagar' no momento. Os arquivos não elimináveis são simplesmente movidos para um outro diretório, devendo haver um servidor para limpá-los periodicamente.

Algumas pessoas defendem a composição de um nome alternativo para o comando rm ou uma função distinta para rm -i (que pede confirmação para todos arquivos que você apaga). Realmente, as versões recentes da distribuição Red Hat fazem isso por padrão para todos os usuários, inclusive o superusuário. Pessoalmente, não suporto o software que não pode ser executado desatendido, por isso não o utilizo. E sempre há a possibilidade de mais cedo ou mais tarde, estar-se executando o sistema em modo monousuário, ou usando um ambiente de trabalho diferente, ou ainda uma máquina diferente, onde a função rm personalizada não existe. Caso se espere que a confirmação seja solicitada, pode ser fácil esquecer onde se está e especificar arquivos demais a serem apagados. Da mesma forma, os vários programas que substituem rm também são, em minha opinião, muito perigosos.

Uma solução levemente melhor é começar usando um pacote que administre a eliminação 'reciclável' fornecendo um comando diferente do rm. Para detalhes sobre estes, veja Peek, et al (1993) (veja a seção Bibliografia e Créditos).


Página seguinte Página anterior Índice