Este é um módulo PAM para se recolocar para o espaço para nome de bootstrap de bootstrap do usuário da autenticação no macOS. Isso permite que os usuários usem o módulo pam_tid (Touch ID) de dentro do TMUX.
Embora no MacOS um programa de usuário possa sobreviver em segundo plano nas sessões de login, vários serviços (principalmente relacionados à GUI, como Pasteboard e Touch ID) estão estritamente ligados à sessão de login de um usuário e, como tal, indisponível para programas na sessão em segundo plano. Usuários de programas como a tela TMUX e GNU que são executados em segundo plano para sobreviver nas sessões de login, descobrirão que vários serviços como o Touch ID estão indisponíveis ou não funcionam corretamente.
Este módulo PAM tentará mover o programa atual (por exemplo, sudo ) para a atual sessão de login ativo, após o qual os módulos PAM restantes terão acesso aos serviços por sessão como o Touch ID.
Se você instalou o programa adicional reattach-to-session-namespace(8) , também poderá executar programas arbitrários em segundo plano na sessão de login do usuário.
Consulte o TN2083 para obter mais detalhes sobre os namespaces de bootstrap no macOS.
Este módulo deve ser chamado antes do módulo que você deseja colocar no espaço para nome de bootstrap de inicialização do usuário da autenticação. O módulo é executado na fase de autenticação e deve ser marcado como optional ou required (sugiro usar optional para evitar ser bloqueado no caso de bugs)
Modifique o serviço direcionado em /etc/pam.d/ (como /etc/pam.d/sudo ) conforme explicado:
auth optional pam_reattach.so
auth sufficient pam_tid.so
...
Verifique se você está instalado no módulo. Observe que quando o módulo não estiver instalado em /usr/lib/pam ou /usr/local/lib/pam (por exemplo, em M1 Macs onde o homebrew é instalado em /opt/homebrew ), você deve especificar o caminho completo para o módulo no arquivo de serviço PAM, como mostrado abaixo:
auth optional /opt/homebrew/lib/pam/pam_reattach.so
auth sufficient pam_tid.so
...
O módulo pam_tid tentará evitar solicitar um toque quando conectado via SSH ou outro método de login remoto. No entanto, existem situações (por exemplo, uso de tmux e tela) em que o TTY atual pode ser gerado por uma sessão remota, mas não detectada como tal por pam_tid . Para ajudar a mitigar isso, a opção ignore_ssh pode ser adicionada à configuração de pam_reattach da seguinte maneira:
auth optional pam_reattach.so ignore_ssh
auth sufficient pam_tid.so
...
Isso detectará a presença de qualquer um dos $SSH_CLIENT , $SSH_CONNECTION ou $SSH_TTY no ambiente e fará com que esse módulo se torne um não-operatório.
Para mais informações, consulte reattach_aqua(3) , pam_reattach(8) e reattach-to-session-namespace(8) .
O módulo está disponível via Homebrew. Use o seguinte comando para instalá -lo:
$ brew install pam-reattachVocê também pode instalar este módulo com Macports usando o seguinte comando:
$ sudo port install pam-reattachComo alternativa, você pode construir manualmente o módulo. O módulo é construído usando o CMake 3. Digite os seguintes comandos em seu prompt de comando no diretório do projeto:
$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local
$ cmake --build buildPara criar um binário universal para uso com Apple Silicon e X86 (por exemplo, para suporte a Rosetta), use:
$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -DCMAKE_OSX_ARCHITECTURES= " arm64;x86_64 "
$ cmake --build build Se o cmake não puder encontrar libpam automaticamente (por exemplo, no nix), pode ser necessário especificar o caminho do prefixo manualmente:
$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -DCMAKE_PREFIX_PATH= " /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/ "
$ cmake --build buildEntão, para instalar o módulo, basta executar o seguinte comando:
$ cmake --install build Certifique -se de manter o arquivo gerado install_manifest.txt na pasta Build após a instalação.
Execute o seguinte comando em seu prompt de comando para remover a instalação do seu sistema:
$ xargs rm < build/install_manifest.txt Caso você tenha perdido install_manifest.txt , esta é a lista de arquivos instalados:
/usr/local/lib/libreattach.a
/usr/local/include/reattach.h
/usr/local/share/man/man3/reattach_aqua.3
/usr/local/lib/pam/pam_reattach.so
/usr/local/share/man/man8/pam_reattach.8
/usr/local/bin/reattach-to-session-namespace
/usr/local/share/man/man8/reattach-to-session-namespace.8
Além disso, você pode criar um utilitário de linha de comando reattach-to-session-namespace , especificando a opção -DENABLE_CLI=ON opção ao ligar para o cmake. Este comando permite que você se refira ao espaço para nome da sessão do usuário na linha de comando.
Consulte reattach-to-session-namespace(8) para obter mais informações.
Para ativar a autorização do Touch ID para sudo , consulte este artigo.
O código é liberado sob a licença do MIT. Veja License.txt.