macOSでsudo
コマンド実行時に、パスワード入力の代わりにTouch ID認証を使用する設定方法
- この設定は、システムの認証メカニズムを管理するPAM(Pluggable Authentication Modules)の設定ファイルを変更することで実現します。
- 具体的には、
sudo
コマンド用のPAM設定ファイルにTouch ID認証モジュールを追加します。
はじめに
-
目的:
sudo
コマンド実行時の認証を、パスワード入力からTouch IDによる指紋認証に変更する。 -
方法:
/etc/pam.d/sudo
というPAM設定ファイルを編集し、Touch ID認証モジュール (pam_tid.so
) を有効にする。 -
前提条件:
- Touch IDセンサーが動作すMacを使用している。
- macOS Sierra以降
- MacBook Pro 2016以降
- Touch IDに指紋が登録済みである。
- 管理者権限を持つユーザーアカウントで操作している。
- ターミナルとテキストエディタを操作できる。
- システムファイルの編集に伴うリスクを理解している。
- Touch IDセンサーが動作すMacを使用している。
設定手順
-
PAMについて:
- PAMは、macOS(および多くのUnix系OS)で、システムやアプリケーションが「ユーザー認証」を行う方法を柔軟に設定するための仕組みです。
- 設定ファイル(
/etc/pam.d/
ディレクトリ内にある)を編集することで、認証方法(パスワード、Touch ID、スマートカードなど)の追加や順序変更が可能です。
-
必ずバックアップを取ること:
- システムファイルを編集する前には、必ずバックアップを作成します。万が一編集に失敗した場合に、元の状態に戻せるようにするためです。ターミナルで以下のコマンドを実行します。
好きなターミナルとテキストエディタで実行
sudo cp /etc/pam.d/sudo /etc/pam.d/sudo.bak
- 管理者パスワードを求められたら入力します(入力中は表示されません)。
- システムファイルを編集する前には、必ずバックアップを作成します。万が一編集に失敗した場合に、元の状態に戻せるようにするためです。ターミナルで以下のコマンドを実行します。
-
PAM設定ファイルの編集:
- テキストエディタ(ここでは
nano
を使用)で/etc/pam.d/sudo
ファイルを開きます。管理者権限が必要なためsudo
を使用します。好きなターミナルとテキストエディタで実行sudo vim /etc/pam.d/sudo
- ファイルを開いたら
# sudo: auth account password session
というコメント行の直後に以下の1行を追加します。好きなターミナルとテキストエディタで実行# sudo: auth account password session auth sufficient pam_tid.so
-
説明:
-
auth
: 認証プロセスに関する設定であることを示します。 -
sufficient
: このモジュールによる認証が成功した場合、後続の認証モジュール(この場合はパスワード認証pam_unix.so
)はスキップされることを意味します。 - これにより、Touch IDが利用可能な場合はTouch ID認証が優先され、成功すればパスワード入力は不要になります。
- Touch IDが利用できない(センサーがない、指紋が登録されていない、蓋が閉じているなど)場合や認証に失敗した場合は、次の認証モジュール(パスワード)に進みます。
-
pam_tid.so
: Touch ID認証を行うPAMモジュールです。
-
-
説明:
-
編集後のファイルの例 (先頭部分):
好きなターミナルとテキストエディタで実行
# sudo: auth account password session auth sufficient pam_tid.so # この行を追加 auth required pam_opendirectory.so account required pam_nologin.so account required pam_sacl.so /etc/security/access.conf account required pam_opendirectory.so password required pam_opendirectory.so session required pam_launchd.so
-
ファイルの保存:
-
vim
エディタで、:wq!
とキー入力すれば保存して終了する。
-
- テキストエディタ(ここでは
-
動作確認:
- 新しいターミナルウィンドウを開くか、現在のターミナルで
sudo ls
のようなコマンドを実行する。 - パスワード入力プロンプトの代わりに、Touch IDの認証ダイアログ(またはTouch Barへの指示)が表示される。
- Touch IDセンサーに登録済みの指を置くと、認証が完了しコマンドが実行される。
- 認証ダイアログで「キャンセル」を押したり、認証に失敗したりした場合は、パスワード入力プロンプトが表示される。
- 新しいターミナルウィンドウを開くか、現在のターミナルで
-
注意点
-
システムのアップデートで巻き戻される:
- macOSのシステムアップデートにより、
/etc/pam.d/sudo
ファイルが上書きされ、設定が元に戻ることがある。 - アップデート後にTouch ID認証が機能しなくなった場合は、再度この手順を実行する必要がある。
- macOSのシステムアップデートにより、
-
編集ミスれば sudo コマンドが死ぬ:
- ファイルの編集を誤ると、
sudo
コマンドが使えなくなる可能性がある。 - 事前に、必ずバックアップを取り、慎重に編集すること。
- 問題が発生した場合は、リカバリーモードでバックアップファイルから元に戻すこと。
- ファイルの編集を誤ると、
-
セキュリティのトレードオフ:
- Touch IDはパスワードよりも素早く認証できるが、睡眠中などに第三者に指を使われるリスクや、登録された指の持ち主であれば誰でも認証できてしまう点が、複雑なパスワードによる認証と比較してセキュリティレベルが異なる。
- ゆえに、使用環境やセキュリティ要件によっては、パスワード認証の方が適切な場合がある。
*また、代替手段として、パスワードマネージャーや他の認証ソリューションを利用する方法もある。
-
故障や状況による問題:
- Touch IDセンサーの故障、または外部ディスプレイ接続などでMacBookの蓋を閉じている場合、この設定を行ってもTouch ID認証は利用できず、パスワード入力が必要になる。
-
OSバージョンや製品による差異:
- 古いmacOSバージョンでは
pam_tid.so
が存在しない、あるいは動作が異なる可能性がある。
- 古いmacOSバージョンでは