Desde que o Macbook Pro com Touch Bar foi lançado em 2016, uma feature que esperei por muito tempo foi o Touch ID (ou qualquer outro tipo de biometria) no Mac.

A praticidade de utilizar um mecanismo biométrico como senha em um notebook não se compara a outras estratégias de segurança como Yubikeys, Smartcards, ou tokens.

O Touch Id funciona muito bem no MacOS mas há uma situação em que ele não é utilizado: no terminal.

Uso o terminal do MacOS (mais precisamente o iTerm2) diariamente e isso me incomodava desde que troquei o antigo e cansado Macbook Pro 2011 pelo Macbook Pro 2016 com Touch Bar.

Esta semana sem querer encontrei o seguinte tweet do usuário @cabel:

Testei e realmente funciona (para a maioria dos casos).

Atenção

  1. Se você não tem certeza se quer ativar, melhor não ativar.
  2. Testei no MacOS High Sierra (10.13.1). Pelo que pesquisei não funciona no MacOS Sierra nativamente, é necessário compilar e instalar o arquivo pam (veja aqui).
  3. Não testei, mas há relatos de que o Touch Id não é transmitido por SSH, logo, se você acessa o Macbook Pro via SSH, e executa sudo’s, há uma grande possibilidade de não funcionar.

Passo-a-Passo

  1. Abra o terminal e execute o comando
sudo vim /etc/pam.d/sudo

Screen-Shot-2017-11-29-at-00.35.28

  1. Adicione uma nova linha ao arquivo
auth sufficient pam_tid.so

Screen-Shot-2017-11-29-at-00.35.32

  1. Salve o arquivo:
  2. Reiniciar terminal.

A partir de agora, toda vez que executar um comando sudo será solicitado o Touch Id:

Screen-Shot-2017-11-29-at-00.36.04

UPDATE (2017/11/29):

Quando o popup solicitando o touch id é exibido é possível clicar em “Use Password …” e inserir a senha no popup, ou cancelar o popup e digitar a senha no terminal normalmente.

Screen-Shot-2017-11-29-at-00.37.31

Quando utilizado o Touch Id para autorizar um sudo, a autorização permanece ativa por algum tempo (provavelmente 15 minutos como a App Store). Então os comandos sudo subsequentes já estarão pré aprovados sem necessidade de senha. Isso é ótimo para acelerar o trabalho, mas péssimo caso seja inserido um comando incorreto.