Como exibir asteriscos ao digitar a senha do SUDO

Tradicionalmente, na linha de comando do Linux/UNIX, a linha de autenticação, onde digitamos nossa senha, não exibe qualquer feedback.
Como recurso de segurança, este comportamento impede que alguém veja, por sobre o seu ombro, quantos caracteres a sua senha possui.
Os ambientes gráficos, contudo, têm comportamento padrão diferente.
Quase todos, exibem uma bola, um ponto ou um asterisco para cada caractere digitado.
O KDE Plasma permite configurar facilmente a tela de autenticação (KDM) para exibir 3 símbolos para cada caractere digitado — o que dá à sua senha a aparência de ser bem maior do que realmente é.
Vale tudo para enganar os bisbilhoteiros.
Se você prefere obter uma visualização da quantidade de caracteres digitados no seu campo de senha, na autenticação do sudo, pode fazer este ajuste no arquivo sudoers.
O procedimento é simples. Acompanhe os passos, abaixo:
Abra o arquivo de configuração:


sudo visudo

Em seguida, encontre a linha


Defaults		env_reset

e acrescente o parâmetro ,pwfeedback.
A linha deve ficar assim:


Defaults		env_reset,pwfeedback

Se você preferir, pode criar uma linha Defaults adicional com o novo parâmetro, assim:


Defaults		pwfeedback

Fica a seu critério.
sudo visudo password


Leia mais dicas de configuração e uso do comando sudo em ambientes Linux e UNIX.

Altere o tempo máximo de cada sessão do SUDO

O comando sudo é o que permite a um usuário normal ou ao sysadmin administrar o sistema, sem precisar autenticar como root.
Com o sudo, você executa rapidamente uma tarefa – investido de superpoderes – e volta ao prompt de seu usuário normal em seguida.
Dar acesso a este recurso, pode ser uma forma mais segura de conceder poderes administrativos a usuários normais do seu sistema — sem revelar a senha do root.
Como comportamento padrão, uma sessão do sudo dura 15 minutos. Durante este período de tempo, não é pedido qualquer senha ao usuário.
Se você acredita que este tempo é muito curto ou muito longo, é fácil alterá-lo.

No meu caso, acredito que um tempo de sessão entre 1 e 5 minutos é o suficiente para realizar a maioria das pequenas tarefas administrativas do nosso dia a dia.

Quando é necessário executar vários comandos com privilégios administrativos (e que irão demorar mais do que 5 minutos para serem executados), prefiro digitar a minha senha algumas vezes a mais — sem problemas.


Por outro lado, este post ensina a executar vários comandos, em fila, usando o sudo, sem precisar se preocupar com a expiração do tempo. Recomendo a leitura.

Como configurar o tempo de expiração da sessão do sudo

A maneira adequada de ajustar os parâmetros do sudo é através do visudo.

O visudo edita o arquivo sudoers de maneira segura — protegendo-o contra alterações simultâneas e fazendo verificação básica de erros.

Nas grandes distribuições, como Debian e no Ubuntu, o programa irá abrir, por padrão, o editor de textos Nano.
Neste caso, quando terminar a edição, use as combinações de teclas ‘Ctrl-o’ e ‘Ctrl-x’, para gravar e sair do editor.
Se, na sua distro, o editor padrão for o vi ou o vim, tecle ‘Esc’ e, em seguida, ‘:wq’ e ‘Enter’, quando terminar de alterar o sudoers.
Você pode rodar o visudo com o próprio sudo:

sudo visudo

Em seguida, localize a linha (que deve estar no começo):


Defaults        env_reset

e altere-a para


Defaults        env_reset,timestamp_timeout=5

Como eu já disse, prefiro que o valor da minha variável timestamp_timeout seja menor ou igual a 5 (minutos). Você deve usar o valor que considerar mais adequado às suas necessidades.
sudo sudoers environment variables

Como evitar que a sessão do sudo expire

Se você precisa que a sua sessão fique ativa indefinidamente (ou pelo menos até você se desautenticar do sistema), use o sudo combinado com as seguintes opções:


sudo -s

[sudo] senha para justincase: 

Outros usuários preferem usar o sudo para logar-se diretamente como root:


sudo su

Em qualquer um dos casos, quando terminar, use ‘exit’ para sair:

root@inspiration:/home/justincase# exit
exit

Se você precisa executar uma sequencia de comandos e não deseja ter que ficar voltando para digitar a senha, siga esta dica.

Como tornar o sudo mais seguro

Há alguns riscos em potencial, a considerar, quando estiver usando o comando sudo.
Podem ser evitados com algumas configurações no sudoers.
Como padrão, o sudo manterá sua senha por 5 minutos.
Dentro desta janela de tempo, caso você se ausente fisicamente da máquina, alguém pode adquirir o controle dela usando o sudo.
Para isto, bastaria abrir uma nova shell, ainda antes de expirar a validade da sessão aberta:


sudo /bin/bash

Reduzir o tempo de cada sessão é uma medida eficaz. Mas é mais seguro ajustar o sudo para expirar logo após o comando dado. Desta forma, o usuário será obrigado a fornecer sua senha a cada comando administrativo.
Para isto, basta reduzir a zero o tempo de espera do timestamp:


Defaults    timestamp_timeout=0

Desta forma, você se mantém do lado mais seguro.

Como rodar múltiplos comandos usando o sudo, no Linux e UNIX

Você pode usar uma técnica muito simples, para rodar múltiplos comandos — que precisem de privilégios administrativos.
Se você já sabe como rodar um comando atrás do outro, em fila, como no exemplo abaixo, talvez saiba que, ao fazer isto com o sudo, frequentemente a senha dada “perde a validade”, deixando a sequencia de comandos em espera.
teclado dell
Para rodar uma sequencia de comandos, use o ‘&&’, desta forma:

comando1 &&; comando2 && comando3

Se quiser que eles tenham privilégios de root, em tese, bastaria isso:

sudo comando1 && sudo comando2 && sudo comando3

Depois disto, você vai embora pra casa, tomar um café ou fazer qualquer outra coisa, confiante de que as 3 tarefas serão realizadas, sem interrupção — uma logo após a outra.
O problema, nesta linha de raciocínio, surge quando a gente se lembra que o tempo padrão de “validade” do comando sudo é 15 minutos.
Decorrido este prazo, o sudo volta a pedir a senha do usuário.
Desta forma, transcorridos os 15 minutos, a sua linha de comandos poderá ainda estar parada e sem conclusão — esperando pela senha.
Para evitar esta chatice, rode a sequência com o sudo, usando o interpretador de comandos sh com a opção ‘-c’:

sudo sh -c 'comando1 && comando2'

Com esta formação, você também pode usar o bash, se quiser:

sudo bash -c 'comando1 && comando2'

Pode ser útil usar esta técnica quando se quer deixar o sistema sendo atualizado — tarefa na qual, comumente, se usa 2 comandos (no Debian/Ubuntu):


sudo sh -c 'apt update && apt -y full-upgrade'

O que este comando faz:

  • sudo — como você já sabe, confere superpoderes a tudo o que vem depois, nesta mesma linha de comando.
  • sh — abre uma shell do interpretador de comandos Dash padrão do Linux/Unix.
  • -c — executa os comandos, que seguem entre as aspas.

Ainda, com o comando apt, o exemplo abaixo roda a opção de atualização com os repositórios, antes de instalar um programa:


sudo -- sh -c 'apt update && apt install -y thermald'

Front-ends gráficos para QEMU — parte 2: o aqemu

O aqemu é um front-end gráfico para QEMU e KVM.
Com o uso da biblioteca Qt (versão 5 ou 4), oferece uma interface gráfica ou GUI para gerenciar máquinas virtuais KVM ou QEMU.
A partir da GUI, é possível fazer os ajustes mais comuns às máquinas virtuais.
Veja as instruções de instalação para Fedora e Debian (Ubuntu) — que são (quase) as mesmas para qualquer outra distro GNU/Linux.
Não se esqueça de dar uma olhada na parte 1 desta série de artigos.

Como instalar o aqemu no fedora

Usuários do Fedora, podem inquirir os repositórios e obter informações sobre os pacotes através do aplicativo gestor dnf.
Para encontrar o pacote a ser instalado no Fedora, use o ‘search’:

dnf search aqemu
Last metadata expiration check: 1 day, 2:13:25 ago on Tue Dec 20 18:30:48 2016.
================================================= N/S Matched: aqemu ==================================================
aqemu.x86_64 : A QT graphical interface to QEMU and KVM
[root@fedora /]# 

Para obter informações sobre a versão disponível, espaço ocupado pelo software após a instalação etc. use o ‘info’:

dnf info aqemu

Para fazer a instalação, rode o “dnf install”:

dnf install aqemu

Como instalar o aqemu no Debian e Ubuntu

Instale o aqemu seguindo procedimento semelhante ao anterior.
Use o apt:

sudo apt install aqemu

FreeBSD virtual machine qemu

Conheça estes 7 motivos para abandonar o comando grep e passar a usar o ack.

Tecnicamente, o ack foi projetado como ferramenta de busca dentro de arquivos texto — tendo como público-alvo os programadores.
Entre estes, o utilitário é mais eficiente do que o comando grep.
Neste texto, vou mostrar algumas vantagens de uso do ack e como instalar a ferramenta no Linux (caso ela já não esteja instalada aí).
Entre as vantagens de usar o ack — para fazer pesquisa dentro do código fonte — a documentação oficial cita:

  1. É rápido — por que se restringe a strings que “façam sentido” retornar. As expressões regulares em Perl tem alto índice de otimização.
  2. É portável — por ser escrito em Perl e não ter outras dependências além do Perl 5, pode rodar no Windows, MAC, UNIX e nos vários sabores do BSD e do Linux.
  3. Ignora automaticamente diretórios irrelevantes para a sua busca — a recursividade é seu comportamento padrão, mas ele ignora arquivos .git, .svn e diretórios CVS e VCS. Lógico que você pode mudar isto manualmente.
    Como exemplo da praticidade, a documentação compara os dois comandos de busca, a seguir, que tem resultados semelhantes:

    grep pattern $(find . -type f | grep -v '\.git')
    

    ou

    ack pattern
    

    Qual você prefere?

  4. Melhores resultados — como ele prioriza arquivos de código fonte, você obtém menos resultados irrelevantes. Ele pula até arquivos de backup.
  5. Separa fácil os arquivos — para quem tem um projeto envolvendo mais de uma linguagem de programação (muito comum entre web developers).
    É fácil adicionar –python, para restringir as buscas dentro de arquivos da linguagem Python, ou –nohtml evitar arquivos HTML.

    O ack tem detecção de tipos de arquivos, muito além da leitura da extensão do nome.

    Veja outra comparação entre comandos grep e ack, para realizar buscas dentro de arquivos Perl:

    grep pattern $(find . -name '*.pl' -or -name '*.pm' -or -name '*.pod' | grep -v .git)
    
    ack --perl pattern 
    

    Novamente, qual dos dois comandos, acima, você prefere usar?
    Note que o sucesso do grep, no primeiro exemplo, depende do uso do comando find (leia mais sobre ele aqui). O ack é visivelmente mais eficiente, neste caso.

  6. Listas de arquivos — podem ser criadas, antes mesmo de qualquer busca.
    Esta utilidade vai agradar até quem não é programador. Com o comando, abaixo, o ack relaciona todos os arquivos da linguagem PHP, em um diretório, recursivamente:

    ack -f --php
    

    Você gastaria um pouco mais de seus dedos para realizar esta tarefa com o find…

  7. O ack tem highlighting, que permite realçar palavras-chave nos resultados das buscas.

linux terminal ack command
Por fim, A palavra “ack” é menor do que “grep”, o que te poupa alguns preciosos milésimos de segundos na digitação a cada vez que precisar realizar uma busca.

Como instalar o ack no sistema

O ack está disponível nos repositórios das principais distribuições (se não todas) Linux e UNIX (BSD).
Infelizmente, no momento em que escrevo este texto, ele ainda não faz parte do conjunto de programas utilitários padrão, que já “estão lá”, logo após a instalação.
Contudo, ele é super fácil de instalar.
Quem usa o Debian, pode usar o apt, para fazer o trabalho:

sudo apt update
sudo apt install ack

No Ubuntu 16.04 LTS, o nome do pacote (transitório) é ack-grep. Nas futuras atualizações ele deve ser renomeado para apenas “ack”.
O pessoal do Fedora, pode instalar com o dnf:

sudo dnf install ack

No FreeBSD, use os ports e instale o pacote p5-ack.
Leia outros textos sobre o assunto, tocando ou clicando na tag ack, para conhecer melhor a ferramenta.
Além disto, não esqueça de compartilhar o texto nas redes sociais. 😉

Referências

https://beyondgrep.com/.
http://www.activestate.com/blog/2016/12/grep-losing-its-grip.