概要
MacにはTouch IDがあり、インストールなど様々なところでこれまでパスワード入力が必要だった箇所がTouch IDによる指紋認証が使えるようになっています。
その中でターミナルでのsudoのパスワード入力もTouch IDに替えることができるので対応します。
環境
- macOS 10.15.3
- pam_reattach v1.2
PAM (Pluggable Authentication Modules)
UnixやLinuxではPAMというプラガブルな認証システムが用意されており、sudo
もPAMを利用しています。
PAMの詳細は以下で説明しています。
プラガブルとあるように、既存の設定を変更したり、独自のPAMモジュールを使うことで認証部分を柔軟に変更することが可能です。
通常のターミナル
Touch IDで認証したい場合はpam_tid.so
というPAMモジュールを使います。
/etc/pam.d/sudo
にpam_tid.so
を使うように設定します。
# 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
デフォルトだと↑のようになっていますが、
# sudo: auth account password session auth sufficient pam_tid.so # here 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
このように追記します。
追記したらターミナルを再起動します。
tmuxの場合
tmuxの場合は先程の設定だけではうまく動かないので、以下のPAMモジュールも利用します。
インストールはbrewでできます。
$ brew install pam-reattach
↑でpam_reattach.so
のインストールができたら設定を追記します。
# sudo: auth account password session auth optional pam_reattach.so # here 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
M1 Macの場合
M1 Macの場合はpathが異なるので以下のようにフルパスで設定してください。
# sudo: auth account password session auth optional /opt/homebrew/lib/pam/pam_reattach.so # here 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
を使ってみると
このようにパスワード入力でなくTouch IDでできるようになりました。
注意点
単に認証失敗であればsufficient
は無視されて次のモジュールへと進みますが、アップグレードなどによって
sudo: unable to initialize PAM: Invalid argument
といったPAMモジュール自体でエラーが出てしまうことがあるようです。
すると/etc/pam.d/sudo
の編集にsudo
が必要で編集できない、という詰んだ状態なりかねません。
sudoは重要なコマンドなので、こういった問題が起きても以下のように対処できるようにしておきましょう。
MacBook の pam.d sudo を復元 - よせなべ