在支持 Touch ID、且已录入指纹的 Mac 上,可以通过 PAM 的 pam_tid.so 模块为 sudo 增加指纹验证。下面两种方法选择一种执行。
一键修改 sudo 配置
在 macOS 的 Zsh 或 Bash 终端中执行:
| |
命令使用 macOS 自带的 BSD sed,在 /etc/pam.d/sudo 第二行前插入:
| |
原配置自动备份为 /etc/pam.d/sudo.bak。$'\n' 由 Zsh/Bash 转换为换行,不能直接照搬到不支持这种语法的 Shell。
此命令适用于尚未添加该规则的配置;重复执行会重复插入,并更新备份。直接修改的系统文件可能在 macOS 更新时被替换。
可选:使用系统的 sudo_local 配置
如果 /etc/pam.d/sudo 包含 auth include sudo_local,且系统提供 /etc/pam.d/sudo_local.template,可以使用下面的一键方法。系统模板将 sudo_local 定义为供本地配置使用、在系统更新后保留的文件:
| |
命令在 sudo_local 不存在时复制系统模板,然后自动取消模板中 Touch ID 规则的注释,备份为 /etc/pam.d/sudo_local.bak。已有文件会保留;该方法要求文件中包含模板的对应规则。
验证效果
| |
sudo -k 清除已有的授权缓存,再次执行时可测试指纹验证,成功后输出 root。Touch ID 需要本机支持的交互环境,SSH 等会话不能直接等同于本机终端的指纹验证。
配置依据:macOS 系统文件 /etc/pam.d/sudo 与 /etc/pam.d/sudo_local.template。