Digamos que alguém se sente atrás do meu laptop por um segundo e execute:
alias cd='Ha Ha, Got You :))'
ou executamos um software/script/etc desconhecido e ele acrescenta algo a ~/.bashrc
. Curti:
alias sort='rm -rf ~'
Estes são apenas exemplos de aliases
; Como você sabe, essas coisas também podem ser feitas usando funções:
cd(){ echo "Removing everything you've got :D"; }
Essas situações são apenas exemplos imaginários, considere qualquer coisa semelhante.
Que tal um pequeno roteiro?
sudo -n ls &>/dev/null
if [ "$?" -eq "0" ]
then
sudo "Some dangerous command"
else
cd $1
fi
Então alias cd="/home/user/.config/gtk/.cd.sh"
.
Para os comandos que foram executados no bash, podemos simplesmente fechar e reabrir nosso terminal, mas e os que foram definidos nos arquivos de inicialização, não podemos verificar os arquivos ou a lista de aliases/funções toda vez que executamos um terminal .
Introdução
Arquivos de configuração Bash
O Bash possui vários arquivos de configuração (também conhecidos como inicialização), ele usa esses arquivos para configurar um ambiente específico para cada usuário.
Alguns desses arquivos estão localizados em
/etc
, um deles que eu conheço é/etc/profile
, é um arquivo de configuração global e suas configurações serão aplicadas em todas as sessões, outro é/etc/bash.bashrc
; Não precisamos contornar esses arquivos por causa de sua localização, eles já estão protegidos e apenas o root tem direitos para editá-los.Um diretório muito importante que pode nos ajudar muito é:
/etc/skel
; Sempre que você criar um novo usuário com o diretório inicial, os arquivos dentro desse diretório serão usados como um esqueleto para o diretório inicial do seu novo usuário.Também podemos usar
dpkg
para encontrar esses arquivos:podemos ver que todos eles são instalados por
bash
.Como as coisas funcionam no bash
Um alias ou função pode ser definido em qualquer um desses arquivos, então vamos ver como esses arquivos serão usados por
bash
.Da
bash
página man:então a ordem é:
~/.bash_profile > ~/.bash_login > ~/.profile
este será executado toda vez que sairmos de um shell de login, não consigo ver como este pode ter algum efeito em nossa situação.
portanto, o campo mais importante é
~/.bashrc
, porque quase 90% dos shells bash que executamos estão no modo interativo e sem login. e se dermos uma olhada neste arquivo, podemos ver que ele procurará outro arquivo chamado~/.bash_aliases
, se conseguiu localizá-lo, também localizarásource
esse arquivo.Comece a cuidar desses arquivos
Em primeiro lugar, devemos mudar
~/.profile
para~/.bash_profile
caso contrário, não importa se protegemos~/.profile
o arquivo, alguém pode criar um~/.bash_profile
e ele substituirá nossas configurações, então:Depois disso, se você não estiver usando um
~/.bash_aliases
arquivo, crie-o, novamente como acima, alguém pode simplesmente criar esse arquivo e há uma chance de que ele possa alterá-lo ou criar um alias dentro dele.Por fim, use
chattr
para proteger esses arquivos contra edição e remoção.Da
chattr
página man:Pronto, não esqueça que sempre que quiser editar esses arquivos, primeiro remova o
-i
atributo.Reiniciar tudo sem fechar/reabrir terminal
Outra solução alternativa é criar um arquivo:
Coloque seus apelidos lá:
Certifique-se de que ninguém pode escrever nesse arquivo:
Agora, toda vez que você quiser recarregar tudo, execute:
Reversão
E se você mudou de ideia:
Se você fizer coisas estúpidas (sair sem bloquear a tela, executar cegamente scripts não inspecionados de fontes não confiáveis, etc.), obterá resultados ruins.
Tentar ser inteligente o suficiente para se recuperar de más práticas nunca funcionou antes.