suin.io

MacBook ProのTouch IDでsudoの認証を可能にする方法(pam_touchid利用)

suin2016年12月23日

TouchBar搭載のMacBook Proがリリースされてから、「Touch ID」でsudoのパスワード入力を省く方法がいくつか発表されており、sudoを置き換える「sudo-touchid」PAMモジュールを使う「pam_touchid」などがあります。ここでは後者の方法でsudoコマンドの認証を可能にする方法を紹介します。

System Integrity Protectionを無効にする

pam_touchidをインストールするにあたって、macOSのSystem Integrity Protection(SIP)を無効にしておく必要があります。インストールが完了したらSIPは有効にしなおして構いません。

SIPを無効化する方法

  • ステップ1: Mac終了後、Command+Rを押しながらリカバリシステムを起動する
  • ステップ2: 「ユーティリティ」→「ターミナル」を開く
  • ステップ3: csrutil disableを実行
  • ステップ4: Macを再起動する

※SIPを再度有効化するには、上と同じステップでステップ3にてcsrutil enableを実行してください。

pam_touchidのインストール

pam_touchidのソースコードをダウンロードしてXcodeの「Product」→「Build」でビルドします。

git clone git@github.com:hamzasood/pam_touchid.git
open pam_touchid/pam_touchid.xcodeproj

ビルドすると「Products」に「pam_touchid.so.2」が作られるので、そのパスをコピーします。

できあがった「pam_touchid.so.2」を「/usr/local/lib/pam/」にコピーし、パーミッションなどを設定します。

mkdir -p /usr/local/lib/pam/
cp /Users/(略)/pam_touchid.so.2 /usr/local/lib/pam/
chmod 444 /usr/local/lib/pam/pam_touchid.so.2
sudo chown root:wheel /usr/local/lib/pam/pam_touchid.so.2

最後に「/etc/pam.d/sudo」の先頭に次の行を追加して完了です。

/etc/pam.d/sudoに追加する行
auth sufficient pam_touchid.so reason="execute a command as another user"
sudo chmod 644 /etc/pam.d/sudo
sudo vim /etc/pam.d/sudo

編集後の「/etc/pam.d/sudo」は次のようになります。ちなみに「# sudo: auth account password session」はコメントではないので削除しないように。

/etc/pam.d/sudo
auth sufficient pam_touchid.so reason="execute a command as another user"
# sudo: auth account password session
auth       required       pam_opendirectory.so
account    required       pam_permit.so
password   required       pam_deny.so
session    required       pam_permit.so

最後にパーミッションをもとに戻しておきます。

sudo chmod 444 /etc/pam.d/sudo
RELATED POSTS