LoginSignup
40
24

macOSの sudo で TouchID が使えるようにする(tmux内の利用も対応)

Last updated at Posted at 2019-02-12

pam_tid.so と pam_reattach.so

  • pam_tid.so は TouchID 認証を利用するための macOS 付属の PAM モジュール。
  • pam_reattach.sopam_tid.so が tmux 内だと利用できない問題を解決してくれる PAM モジュール。

これら2つの設定を /etc/pam.d/sudo に追記してやることで、sudo で TouchID が使い放題になる。

設定スクリプト

新しい Macbook のセットアップの際に手順書だと面倒なのでワンライナーでセットアップできるようにした。
元コードを修正した際に Qiita に再貼り付けするのは面倒なのでソース確認したい人は Gist: macOSの sudo で TouchID が使えるようにする(tmux内の利用も対応) を参照。

curl -sL https://gist.githubusercontent.com/kawaz/d95fb3b547351e01f0f3f99783180b9f/raw/0edc285a737df1c8b5bd9b8db0fad8bae33d672b/install-pam_tid-and-pam_reattach.sh | bash

こいつは以下のことをやってくれる。

  • pam_tid.so が未設定なら /etc/pam.d/sudo に追記する。
  • pam_reattach.so が未インストールなら brew install を使ってインストールする。
  • pam_reattach.so が未設定なら /etc/pam.d/sudo に追記する。

Before/After

PAMモジュールのインストール実行前後で /etc/pam.d/sudo はこんな感じに変わる。

diff --git a/etc/pam.d/sudo.bak b/etc/pam.d/sudo
index 1869df8..3e6f2e2 100644
--- a/etc/pam.d/sudo.bak
+++ b/etc/pam.d/sudo
# sudo: auth account password session
+auth       optional       /path/to/pam_reattach.so
+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
  • pam_reattach.so のパスは Mac のアーキテクチャによって変わります。
    • Intel Mac なら /usr/local/lib/pam/
    • Apple Silicon Mac なら /opt/homebrew/lib/pam/
  • ファイル名のみを書く場合、/usr/local/lib/pam/ は探してくれるが /opt/homebrew/lib/pam/ は見てくれないので、アーキテクチャに寄らず利用出来るようフルパスで書くようにしてます。

問題が起きたら

もし何か問題が発生し /etc/pam.d/sudo が壊れて sudo が利用出来なくなると、sudo を利用して /etc/pam.d/sudo を編集する事も出来なくなってしまい困ります。万が一の際に備えて、sudo 以外の手段でこのファイルを編集する方法を知っておくことは重要です。

以下は実際に自分が試して上手くいった、Finder を使って回復する手順です。

  1. Finder で /etc/pam.d/ を開く(open -R /etc/pam.d/sudo
  2. sudo ファイルを選択してコンテキストメニューの「情報を見る」を開く
  3. 情報ダイアログの下の方にある「共有とアクセス」の + ボタンを押して自分のユーザで書き込み可能になるようアクセス権を追加する(アクセス権の変更の為には情報ダイアログの右下に表示された鍵マークをクリックして解除する必要があります)
  4. アクセス権を付けたら適当なエディタで編集出来るようになるので問題が起きる前の内容に書き換えて保存する
  5. sudo が無事使えるようになった事を確認し、問題なければ 3 の手順で追加した不要なアクセス権を削除しておく
40
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
24