Skip to content

macOS 终端 sudo 指纹认证(Touch ID)

macos, sudo, touchid, 终端

原理

sudo 的认证走系统 PAM(可插拔认证模块),指纹由 Secure Enclave 校验,和终端模拟器无关。所以 kitty、Terminal.app、iTerm2 全都支持,kitty 无需任何额外配置。

现代方法(macOS 14 Sonoma 及以后)

苹果官方提供 /etc/pam.d/sudo_local,系统更新不会覆盖(旧方法改 /etc/pam.d/sudo 每次升级都会重置)。

# 1. 复制模板
sudo cp /etc/pam.d/sudo_local.template /etc/pam.d/sudo_local

# 2. 编辑,去掉第 3 行行首的 #
sudo nano /etc/pam.d/sudo_local

最终内容:

# sudo_local: local config file which survives system update and is included for sudo
# uncomment following line to enable Touch ID for sudo
auth sufficient pam_tid.so

保存后开新终端窗口验证:

sudo ls

会弹指纹框;指纹连续失败 5 次或取消时回落为密码。

旧方法(macOS 13 Ventura 及更早)

直接改 /etc/pam.d/sudo,在文件最顶部加一行:

auth sufficient pam_tid.so

kitty + tmux 注意

tmux 会脱离 Aqua 图形会话,指纹框不弹。需要装 pam-reattach 转发:

brew install pam-reattach

然后把 sudo_local 改成两行:

auth sufficient pam_reattach.so
auth sufficient pam_tid.so

已知限制

  • SSH 远程登录到这台 Mac 时不支持指纹(提示框只在本地图形会话出现)。
  • 需要机器有 Touch ID 硬件,且已在「系统设置 → 触控 ID」录入指纹。
  • 大版本升级后偶尔指纹失效:检查 sudo_local 是否还在、内容是否被重置。

相关链接