這是一個PAM模塊,用於重新訪問MACOS上身份驗證用戶的每個會議bootstrap名稱空間。這允許用戶從TMUX內使用pam_tid模塊(觸摸ID)。
儘管在MACOS中,用戶程序可能會在跨登錄會話的背景中生存,但是幾種服務(主要與GUI有關,例如粘貼板和触摸ID相關)與用戶的登錄會話嚴格相關,並且對於背景會話中的程序而言無法使用。因此,在背景中運行的程序和GNU屏幕等程序的用戶將發現觸摸ID等多個服務不可用或無法正常工作。
該PAM模塊將嘗試將當前程序(例如sudo )移至當前活動登錄會話,然後其餘的PAM模塊將可以訪問諸如touch ID之類的每次課程服務。
如果您已經安裝了額外的reattach-to-session-namespace(8)程序,則也可以從用戶登錄會話中的背景中執行任意程序。
有關MACOS中的Bootstrap名稱空間的更多詳細信息,請參見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中安裝模塊時(例如,在M1 Mac上安裝在/opt/homebrew中的Homebrew)時,您必須在PAM服務文件中指定完整的通往模塊的路徑,如下所示:如下所示:如下所示:
auth optional /opt/homebrew/lib/pam/pam_reattach.so
auth sufficient pam_tid.so
...
pam_tid模塊將嘗試避免通過SSH或其他遠程登錄方法連接時提示觸摸。但是,在某些情況下(例如使用TMUX和屏幕)可以通過遠程會話產生當前TTY,但未通過pam_tid檢測到當前的TTY。為了幫助減輕這種情況,可以將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) 。
該模塊可通過Homebrew提供。使用以下命令安裝它:
$ 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 build要與Apple 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-to-session-namespace(8) 。
要啟用sudo的觸摸ID授權,請參閱本文。
該代碼是根據MIT許可發布的。請參閱LICENDE.TXT。