Touch ID搭載のMacでsudo実行時のパスワード入力をTouch ID化


近年のApple製品には指紋センサー(通称: Touch ID)が搭載されていますが、Macの場合デフォルトではロックの解除や一部設定変更のみでTouch IDが利用出来るのみです。Touch IDsudo実行時に使用出来る様にする設定は参考記事を参考に設定しました。但し、参考記事ではファイル権限に関する設定については一切触れられていなかったので、ファイル権限の設定についても説明を行った記事を投稿しました。以下の操作は全てターミナル上で実施します。

設定ファイルの権限の確認

sudoTouch IDを利用出来る様にする為に/etc/pam.d/sudoというファイルに設定を追記します。まずは、このファイルの権限を確認します。

$ ls -l /etc/pam.d/sudo
-r--r--r--  1 root  wheel   246B  2 23  2019 /etc/pam.d/sudo

書き込み権限が無い為、このままでは設定を追記出来ません。

書き込み権限の追加

chmodコマンドで権限を追記します。

sudo chmod +w /etc/pam.d/sudo
$ ls -l /etc/pam.d/sudo 
-rw-r--r--  1 root  wheel   283B  5  1 11:40 /etc/pam.d/sudo

ファイルに設定を追記

/etc/pam.d/sudoを開き、設定を追記します。(2020/7/14修正)
@chajka@github さんからコメントを頂いた内容を反映しました。御指摘頂きありがとう御座いました。
以下の行程は慎重に実施して下さい。最悪sudoコマンドが動作しなくなってしまいます。
以下の行程はMac標準のTerminalで実施しています。一部の外部アプリのTerminalでは有効化出来ない場合が有るようです。

sudo vim /etc/pam.d/sudo
  • 以下が編集前(デフォルト)の/etc/pam.d/sudoの内容です。
編集前
# sudo: auth account password session
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
  • TouchIDによるsudoを有効化する為に、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

追記が完了したら、ファイルを上書きします。この時エディタを閉じずに/etc/pam.d/sudo/を開いたままにしておきます。以下の動作検証が完了してからファイルを閉じて下さい。

動作検証

新しいターミナルを起動してsudoコマンドを実行します。

実行例(rootユーザーに切り替え)
sudo su -

以下の様なウィンドウが表示されたら成功です。

検証が完了したら、エディタを終了します。(/etc/pam.d/sudoを閉じる。)

書き込み権限の削除

本来書き込み権限は無いファイルなので権限を取り除きます。

sudo chmod -w /etc/pam.d/sudo
$ ls -l /etc/pam.d/sudo 
-r--r--r--  1 root  wheel   283B  5  1 11:40 /etc/pam.d/sudo

本記事で編集した/etc/pam.d/sudoファイルはOSアップデート毎に初期化されてしまいます。編集済のファイルはコピーを取っておくと、OSアップデート後に復旧出来ます。