注目の記事

MacのTerminalでsudo実行時にタッチIDを使用する方法

2020.02.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部の夏目です。

MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。

使う方法

/etc/pam.d/sudoauth sufficient pam_tid.soを追加します。

書き込みには管理者権限が必要になるので次のようにして編集します。

# 自分の環境では最初管理者でも書き込みができないようになってたので、できるようにする
$ sudo chmod +w /etc/pam.d/sudo

$ sudo vi /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

こんな感じにします。

# 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

2行目に追加しています。

あとはTerminalを一度終了させて再度起動すれば、sudo実行時にタッチIDが使えるようになります。

iTermを使っている人は

iTermを使ってる人は次の設定をする必要があります。

iTermのPreferencesのAdvancedタブでsudoと入れて検索すると、
Allow session to survice logging out and back in.という設定項目が出てきます。

コレをNoにします。

あとはiTermを一度終了させてから、再度起動するとsudo実行時にタッチIDを使用することができます。

tmuxを使っている人は

tmuxなどのターミナルマルチプレクサを使用している場合はこれだけでは動かせません。

これに対処するために、pam_reattachというPAMモジュールを作った人がいます。

次の手順でインストールします。

# インストール(ビルド)にはcmakeが必要なのでHomeBrewでインストールします
$ brew install cmake
$ git https://github.com/fabianishere/pam_reattach
$ cd pam_reattach
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local
$ make install

これで /usr/local/lib/pam/pam_reattach.soにインストールされます。

後は /etc/pam.d/sudoauth optional pam_reattach.soを追記します。

だいたいこんな感じです。

# sudo: auth account password session
auth       optional       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

あとはシェルにログインしなおせば、sudo実行時にタッチIDを使用することができます。

/etc/pam.d/sudoのアップデートをスクリプト化した人がいました

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

これを実行すると、pam_reattach.soのインストールと/etc/pam.d/sudoの更新までしてくれます。

まとめ

Macの便利なタッチIDをsudo実行時にも使用できるようにしてみました。

sudoでパスワード打つの面倒な人は仕込んでみてください。