Suponho que você esteja vendo isso a partir do POV do programador utilitário. Isso é amplo o suficiente para que não haja (e não possa ser) uma única resposta certa, mas algumas coisas vêm à mente.
Acho que a maioria dos utilitários tem apenas um único sinalizador de "força" ( -f
), que substitui a maioria das verificações de segurança. Por outro lado, por ex. dpkg
tem uma opção --force-things
mais detalhada, em que coisas podem ser várias palavras-chave diferentes.
E apt-get
faz você escrever uma frase completa para verificar, em alguns casos, como remover pacotes "essenciais". Ver abaixo. (Acho que não é apenas uma opção de linha de comando aqui, pois pacotes essenciais são, por exemplo, aqueles que são necessários para instalar pacotes, então desfazer uma ação equivocada pode ser muito difícil. Além disso, toda a operação pode não ser conhecido de antemão, antes de apt
ter tido a chance de calcular as dependências do pacote.)
Então, acho que cdrecord
costumava fazer o usuário esperar alguns segundos antes de iniciar o trabalho, para que você tivesse a chance de verificar se as configurações estavam certas enquanto os números estavam acabando.
Veja o que você obtém se tentar apt-get remove bash
:
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
bash
0 upgraded, 0 newly installed, 2 to remove and 2 not upgraded.
After this operation, 2,870 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?] ^C
Qual escolher é com você como o autor do programa - você terá que basear a decisão no nível de perigo da ação e no seu próprio nível de paranoia. (Seja baseado no cuidado com seus usuários ou no medo de ser culpado pela bagunça.)
Algo que tem o potencial de fazer com que o processador literalmente (parar e) pegar fogo provavelmente fica na extremidade mais alta do eixo "perigo" e provavelmente garante algo como o tipo "Sim, faça o que eu digo" .
Dito isso, uma coisa é perceber que muitas das interfaces reais no nível do kernel não são protegidas por nenhum meio. Em vez disso, há arquivos em /sys
que podem alterar as coisas apenas por serem abertos e gravados, sem perguntas, além das permissões de acesso a arquivos. (ou seja, você precisa ser root).
Isso também vale para o conteúdo do disco rígido (como deveríamos saber) e, em um caso, dois anos atrás, para as variáveis de configuração do firmware da placa-mãe. Parece que era possível "tijolo" computadores com um rm -rf
mal posicionado.
Não, realmente. Veja artigo do lwn.net e o rastreador de problemas do systemd .
Assim, quaisquer proteções que você implementasse, você protegeria apenas as ações feitas usando essa ferramenta específica.