이것은 MACOS에서 사용자의 세션당 부트 스트랩 네임 스페이스를 인증하기위한 PAM 모듈입니다. 이를 통해 사용자는 TMUX 내에서 pam_tid 모듈 (터치 ID)을 사용할 수 있습니다.
MacOS에서는 사용자 프로그램이 로그인 세션에서 백그라운드에서 생존 할 수 있지만, 여러 서비스 (주로 GUI와 관련하여 Pasteboard 및 T 로그인 세션에서 생존하기 위해 백그라운드에서 실행되는 TMUX 및 GNU 화면과 같은 프로그램 사용자는 Touch ID와 같은 여러 서비스를 사용할 수 없거나 제대로 작동하지 않는다는 것을 알게됩니다.
이 PAM 모듈은 현재 프로그램 (예 : sudo )을 현재 활성화 로그인 세션으로 이전하려고 시도하며 나머지 PAM 모듈은 Touch ID와 같은 세션 당 서비스에 액세스 할 수 있습니다.
추가 reattach-to-session-namespace(8) 프로그램을 설치 한 경우 사용자 로그인 세션에서 배경에서 임의의 프로그램을 실행할 수도 있습니다.
MacOS의 부트 스트랩 네임 스페이스에 대한 자세한 내용은 TN2083을 참조하십시오.
이 모듈은 인증 사용자의 세션 별 부트 스트랩 네임 스페이스에 넣을 모듈 앞에서 호출해야합니다. 모듈은 인증 단계에서 실행되며 optional 또는 required 로 표시되어야합니다 (버그의 경우 잠금을 방지하기 위해 optional 사용하는 것이 좋습니다).
설명대로 /etc/pam.d/ (예 : /etc/pam.d/sudo )에서 대상 서비스를 수정하십시오.
auth optional pam_reattach.so
auth sufficient pam_tid.so
...
모듈이 설치되어 있는지 확인하십시오. 모듈이 /usr/lib/pam 또는 /usr/local/lib/pam (예 : 홈 브루가 /opt/homebrew 에 설치되는 M1 Mac)에 설치되지 않은 경우 아래와 같이 PAM 서비스 파일의 모듈에 대한 전체 경로를 지정해야합니다.
auth optional /opt/homebrew/lib/pam/pam_reattach.so
auth sufficient pam_tid.so
...
pam_tid 모듈은 SSH 또는 다른 원격 로그인 메소드를 통해 연결할 때 터치를위한 프롬프트를 피하려고합니다. 그러나 현재 TTY가 원격 세션에 의해 스폰 될 수 있지만 pam_tid 에 의해 감지되지 않는 상황 (예 : TMUX 및 화면 사용)이 있습니다. 이를 완화하기 위해 ignore_ssh 옵션을 다음과 같이 pam_reattach 의 구성에 추가 할 수 있습니다.
auth optional pam_reattach.so ignore_ssh
auth sufficient pam_tid.so
...
이것은 환경에서 $SSH_CLIENT , $SSH_CONNECTION 또는 $SSH_TTY 의 존재를 감지 하고이 모듈이 No-OP가됩니다.
자세한 내용은 reattach_aqua(3) , pam_reattach(8) 및 reattach-to-session-namespace(8) 참조하십시오.
이 모듈은 홈브류를 통해 사용할 수 있습니다. 다음 명령을 사용하여 설치하십시오.
$ brew install pam-reattach다음 명령을 사용하여 Macports 로이 모듈을 설치할 수도 있습니다.
$ sudo port install pam-reattach또는 모듈을 수동으로 빌드 할 수 있습니다. 모듈은 CMAKE 3을 사용하여 구축되었습니다. 프로젝트 디렉토리의 명령 프롬프트에 다음 명령을 입력하십시오.
$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local
$ cmake --build buildApple Silicon 및 X86 (예 : Rosetta 지원을위한)과 함께 사용할 범용 바이너리를 만들려면 다음을 사용하십시오.
$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -DCMAKE_OSX_ARCHITECTURES= " arm64;x86_64 "
$ cmake --build build Cmake가 libpam 자동으로 찾을 수없는 경우 (예 : NIX에서) 접두사 경로를 수동으로 지정해야 할 수도 있습니다.
$ 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 build그런 다음 모듈을 설치하려면 다음 명령을 실행합니다.
$ cmake --install build 설치 후 생성 된 install_manifest.txt 파일을 빌드 폴더에 유지 하십시오.
시스템에서 설치를 제거하려면 명령 프롬프트에서 다음 명령을 실행하십시오.
$ xargs rm < build/install_manifest.txt install_manifest.txt 잃어버린 경우 설치된 파일 목록입니다.
/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
또한 cmake -DENABLE_CLI=ON 호출 할 때 옵션을 지정하여 reattach-to-session-namespace 명령 줄 유틸리티를 구축 할 수 있습니다. 이 명령을 사용하면 명령 줄에서 사용자의 세션 네임 스페이스로 다시 ReatTach를 사용할 수 있습니다.
자세한 내용은 reattach-to-session-namespace(8) 참조하십시오.
sudo 의 Touch ID 승인을 활성화하려면이 기사를 참조하십시오.
코드는 MIT 라이센스에 따라 릴리스됩니다. license.txt를 참조하십시오.