在macOS中,可以利用PAM这一身份验证机制来让TouchID代替在终端提权时的认证。对于没有原生TouchID验证模块的Mac mini,也可以通过配置让Apple Watch代替验证。
如何让TouchID代替sudo密码认证?#
仅需三步:
Step 1 - 打开配置文件#
sudo vim /etc/pam.d/sudo_localplaintext输入你的密码进行权限验证(幸运的话这将是最后一次)。
Step 2 - 修改#
如果你看到
#auth sufficient pam_tid.soplaintext仅需删去前面的#即可。

Step 3 - 验证#
在vim中保存并退出后(输入:wq!),新开一个terminal,输入sudo whoami来进行验证。如果成功弹出认证窗口,便可以关掉原来带有root权限的终端。
如果你不小心破坏了配置文件,可以使用以下命令复原:
sudo cp /etc/pam.d/sudo_local.template /etc/pam.d/sudo_localplaintext为什么这能行?#
PAM(Pluggable Authentication Modules,可插拔认证模块),是一套最初为 Unix 系统设计的灵活的身份验证机制,macOS 也采用了这一标准。sudo在验证用户身份时,会调用PAM进行认证。认证过程中会先读取配置文件/etc/pam.d/sudo。其第一行包含了我们刚刚修改过的sudo_local配置文件。我们新增配置的含义是:对于每一次auth(用户身份认证),如果pam_tid.so(TouchID验证模块)验证成功,且前面没有任何required模块失败,PAM就会返回成功(sufficient)。随后sudo继续执行后面的验证(如检查/etc/sudoers)。
如何将Apple Watch也接入认证?#
根据上述原理,我们可以通过自行添加pam_xxx.so认证模块,来让手表也接入认证。
可以使用以下脚本一键编译并安装我们需要的认证模块,其来自于: https://github.com/mostpinkest/pam-watchid ↗
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/mostpinkest/pam-watchid/HEAD/install.sh)" -- enableplaintext这会添加pam_watchid.so认证模块。其通过调用kLAPolicyDeviceOwnerAuthenticationWithBiometricsOrCompanion(允许使用生物识别或配套设备来验证设备所有者)API来接入Apple Watch进行认证。

连按手表的侧边按钮即可通过认证。
其他事项#
为什么通过sudo能以root权限执行命令?#
$ ls -l /usr/bin/sudo
---s--x--x 1 root root 190832 Jul 3 2025 /usr/bin/sudoplaintextsudo带有的s属性代表Set Owner User ID,这意味着无论哪个普通用户执行这个文件,该程序在执行期间都会临时获得文件所有者(这里是root)的权限。在验证身份后,sudo利用已有的root权限派生出新的子进程,将其身份设定为root,然后在这个子进程中执行真正想执行的命令。