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を使用する方法