使用 TouchID 代替录入 sudo 密码 - macOS 软件小技巧

使用 TouchID 代替录入 sudo 密码 -  macOS 软件小技巧
Photo by TheRegisti / Unsplash

这篇文章将介绍如何使用 MacBook Pro/MacBook Air 上的指纹,代替录入 sudo 密码,密码长度越长效果越好。大概就是下图的效果:

如果密码不太长且使用外接键盘的话,手不离开键盘可能会更方便一些 ;)

使用软件的方法

以前要实现这个功能,我们需要通过软件来实现这个功能,github 上有一些开源的实现方式:

PAM TouchID 实现通过 TouchID 代替 sudo 密码的输入。

PAM WatchID 是上面 TouchID 的一个分支,实现通过 WatchID 代替 sudo 密码的输入,双击 AppleWatch 上的按钮就可完成校验。

原生支持的方法

目前 macOS 已经可以原生支持 TouchID 的验证,只需要修改 /etc/pam.d/sudo 文件,因为该文件权限为只读,所以在修改前需要修改文件权限。

cd /etc/pam.d
sudo chmod 666 sudo

使用 vim 等熟悉的编辑工具对文件进行编辑,在第一排后面追加 auth    sufficient    pam_tid.so,最终文件如下:

# sudo: auth account password session
auth       sufficient     pam_tid.so  # <- 新增加的一行
auth       sufficient     pam_smartcard.so
auth       required       pam_opendirectory.so
account    required       pam_permit.so
password   required       pam_deny.so
session    required       pam_permit.so

后面再使用 sudo 命令的时候,就会弹出录入 TouchID 的弹窗。最后恢复文件的权限

sudo chmod 444 /etc/pam.d/sudo

目前已经原生支持的 PAM(可插拔的认证模块),可以在目录下 /usr/lib/pam 查看。

附录

  1. Using Touch ID for sudo authentication on a MacBook