Defina HISTIGNORE como " sudo -S "
$ export HISTIGNORE='*sudo -S*'
Em seguida, passe sua senha com segurança para o sudo:
$ echo "your_password" | sudo -S -k <command>
"HISTIGNORE" significa não salvar este comando no histórico. Esse é o histórico na memória ou no arquivo "~ / .bash_history".
Por exemplo, o abaixo irá canalizar sua senha com segurança para o comando sudo, sem manter um histórico da sua senha.
"-S" significa usar stdin para a senha,
"-K" significa ignorar credenciais em cache para forçar o sudo a sempre perguntar. Isso é para um comportamento consistente.
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -k whoami
$ echo "<your_password>" | sudo -S -k cat /etc/shadow
$ echo "<your_password>" | sudo -S -k bash /tmp/myscript.sh
A desvantagem do método acima é que, se você quiser ver os comandos executados no histórico posteriormente, eles não estarão lá. Outro método é atualizar o cache de credenciais de autenticação do sudo (o padrão é ativado com tempo limite de 5 minutos) e, em seguida, execute o sudo separadamente. Mas a desvantagem disso é que você precisará estar ciente do cache de 5 minutos.
Por exemplo:
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -v
$ sudo whoami
$ echo "<your_password>" | sudo -S -v
$ sudo cat /etc/shadow
$ echo "<your_password>" | sudo -S -v
$ sudo /tmp/myscript.sh
Nota: Eu executei um sudo antes de cada comando para garantir que o cache do sudo seja atualizado, pois o padrão é 5 minutos. Sim, whoami não deve demorar 5 minutos, mas acho que é melhor executá-lo antes de cada comando para garantir a consistência. Você também pode colocar "export HISTIGNORE = ' sudo -S'"no seu arquivo ~ / .bashrc e carregue-o com". ~ / .bashrc "ou faça logoff e faça o login. No entanto, estou pensando em usá-lo para fins de script, por isso vou mantê-lo no topo de todos os meus scripts para obter melhores práticas de segurança. Definindo" echo "" | sudo -S -v "para uma variável também pode ser uma boa idéia; basta executar a variável antes de cada comando que precise de privilégios de root, consulte o comentário de Janar. O comentário de John T" também deve incluir o parâmetro "-k" , como se você executasse "sudo -S" sem "-k" e o cache de autenticação sudo já possua suas credenciais (e ainda é válido, o cache de autenticação sudo padrão é de 5 minutos), o bash executará sua senha como um comando, que é ruim.
halt
executar como root.