Mac

MacのTerminalでsudoを使った時に、TouchIDを使えるようにする!

mac-terminal-sudo-touchid

MacのTerminalでsudoを使った時に、TouchIDを使えるようにする!

MacでTerminalを使っている時に、sudoコマンドを使う時があると思いますが、 そこで毎回パスワードを入力するのは面倒です。
自分はMacBookProを使っているので、せっかくならパスワードではなく、
TouchIDで 認証できるようにしたいなと思い、その方法を調べました。

色々方法はあるかもしれないですが、自分が設定できた方法をまとめたいと思います。

Terminalでsudoを使った時に、TouchIDを使えるようにする設定

自分はMacのセットアップなどに使用する設定・コマンドは以下のリポジトリに全てまとめていて、 複数のMacで横断してしようできるようにしています。


Macの設定の自動化については、以下の記事にまとめています。

先にコードを記載します。

  # ①Enable user write permission
  sudo chmod u+w /etc/pam.d/
  # ②Add `auth       sufficient     pam_tid.so` to 2nd line of `/etc/pam.d/sudo`
  sed -i '2s/^/auth       sufficient     pam_tid.so\n/' /etc/pam.d/sudo

この認証に関わるファイルは、/etc/pam.d/にあります。
まず①では、このファイルへの書き込み権限を設定します。

初期状態では、このファイルは以下のようになっています。

# 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

このファイルのコメント行の次に以下を書き込みます。

auth sufficient pam_tid.so

vimを使用して、sudo vi /etc/pam.d/sudoで手動でコードを書くのが一番簡単ですが、
自分の場合、新しくMacをセットアップしたり、クリーンインストールする時に再度設定するのはめんどうなので、
コマンドで設定できるようにしています。 それが②のコマンドです。

ただ初めて知ったのですが、指定行に文字列を追加する時に使用したsedはLinuxとMacOSで挙動が異なるらしく、
-iオプションが使用できなかったので、 Homebrewを使用して、
brew install gnu-sedで、GNU sedをインストールして、-iオプションを使用できるようにします。
またalias sed='gsed'のエイリアスを設定し、sedとして呼び出せるようにしています。

これで上記の②のコマンドを実行することで、手動で入力しなくても、指定の文言を該当ファイルの指定の場所に追加することができます。
なお上記のインストールの設定などは、上記のMacの環境構築のリポジトリでは、最初に実行する一連のhomebrewのツールのインストール時に
実行するようになっており、 エイリアスも設定済みなので、新しくMacをセットアップする際は特に追加の作業は不要になるようにしています。

以下のファイルにsetBiometricsAuthAsTouchIDという関数で定義してあります(ちゃんと動くはず。。)

これで、sudo実行時にパスワードをいちいち入力しなくても、よくなりました🎉

参考

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

+1

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA