@@ -256,18 +256,65 @@ step "Configuring Touch ID for sudo"
256256# Check if Touch ID is already enabled
257257if sudo grep -q " ^auth.*pam_tid.so" /etc/pam.d/sudo_local 2> /dev/null; then
258258 info " Touch ID for sudo already enabled"
259- add_summary " Touch ID for sudo (already enabled)"
259+
260+ # Check if pam-reattach is also configured (needed for tmux)
261+ if sudo grep -q " ^auth.*pam_reattach.so" /etc/pam.d/sudo_local 2> /dev/null; then
262+ info " pam-reattach already configured for tmux support"
263+ add_summary " Touch ID for sudo (already enabled with tmux support)"
264+ else
265+ info " Adding pam-reattach for tmux support..."
266+ # Find the pam_reattach.so path
267+ if [ -f " /opt/homebrew/lib/pam/pam_reattach.so" ]; then
268+ PAM_REATTACH_PATH=" /opt/homebrew/lib/pam/pam_reattach.so"
269+ elif [ -f " /usr/local/lib/pam/pam_reattach.so" ]; then
270+ PAM_REATTACH_PATH=" /usr/local/lib/pam/pam_reattach.so"
271+ else
272+ warn " pam_reattach.so not found - install with: brew install pam-reattach"
273+ add_summary " Touch ID for sudo (tmux support needs pam-reattach)"
274+ fi
275+
276+ if [ -n " ${PAM_REATTACH_PATH:- } " ]; then
277+ # Add pam_reattach.so before pam_tid.so
278+ sudo sed -i ' ' " s|^auth.*sufficient.*pam_tid\.so|auth optional $PAM_REATTACH_PATH \nauth sufficient pam_tid.so|" /etc/pam.d/sudo_local
279+ success " pam-reattach configured - Touch ID now works in tmux"
280+ add_summary " Configured pam-reattach for Touch ID in tmux"
281+ fi
282+ fi
260283elif [ -t 0 ]; then
261284 # Only prompt if stdin is a terminal
262285 printf " \n"
263286 read -r -p " $( printf " ${CYAN} Enable Touch ID for sudo operations? [y/N]${RESET} " ) " response
264287 case " $response " in
265288 [yY][eE][sS] | [yY])
266- if sudo sh -c ' sed "s/^#auth.*pam_tid\.so/auth sufficient pam_tid.so/" /etc/pam.d/sudo_local.template > /etc/pam.d/sudo_local' 2> /dev/null; then
267- success " Touch ID enabled for sudo"
268- add_summary " Enabled Touch ID for sudo"
289+ # Find the pam_reattach.so path
290+ if [ -f " /opt/homebrew/lib/pam/pam_reattach.so" ]; then
291+ PAM_REATTACH_PATH=" /opt/homebrew/lib/pam/pam_reattach.so"
292+ elif [ -f " /usr/local/lib/pam/pam_reattach.so" ]; then
293+ PAM_REATTACH_PATH=" /usr/local/lib/pam/pam_reattach.so"
294+ else
295+ PAM_REATTACH_PATH=" "
296+ fi
297+
298+ if [ -n " $PAM_REATTACH_PATH " ]; then
299+ # Create sudo_local with both pam_reattach and pam_tid
300+ sudo sh -c " cat > /etc/pam.d/sudo_local <<EOF
301+ # sudo_local: local config file which survives system update and is included for sudo
302+ # pam_reattach.so enables Touch ID to work inside tmux sessions
303+ auth optional $PAM_REATTACH_PATH
304+ # pam_tid.so enables Touch ID for sudo
305+ auth sufficient pam_tid.so
306+ EOF"
307+ success " Touch ID enabled for sudo (with tmux support)"
308+ add_summary " Enabled Touch ID for sudo with tmux support"
269309 else
270- warn " Failed to enable Touch ID (may require manual setup)"
310+ # Fallback to just pam_tid if pam_reattach not found
311+ if sudo sh -c ' sed "s/^#auth.*pam_tid\.so/auth sufficient pam_tid.so/" /etc/pam.d/sudo_local.template > /etc/pam.d/sudo_local' 2> /dev/null; then
312+ success " Touch ID enabled for sudo"
313+ warn " Install pam-reattach for tmux support: brew install pam-reattach"
314+ add_summary " Enabled Touch ID for sudo (tmux support requires pam-reattach)"
315+ else
316+ warn " Failed to enable Touch ID (may require manual setup)"
317+ fi
271318 fi
272319 ;;
273320 * )
0 commit comments