Macのsudo、まだパスワード打ってる?Touch IDで指1本にした設定とtmuxでハマった話
🙌 結論から
Macのターミナルで sudo を打ったとき、パスワードの代わりにTouch IDで通せるようにしました。
やることは、/etc/pam.d/sudo_local というファイルに1行書くだけです!
macOS Sonoma 以降は Apple がこの sudo_local を用意してくれていて、OSのアップデートで上書きされない置き場所になっています👍
ただ、tmux の中だけは指紋の画面が出なくて、ここで少しハマりました(・_・;)
pam_reattach というモジュールを1行足したら解決したので、その手順もまとめておきます(^o^)
もう当たり前感あるけど、まだパスワードを打っている人はマジで5分で終わるのでやったほうがいいです。
一度慣れると、sudo のたびにパスワードを打つ生活には戻れなくなりました。
👀 sudoのパスワード、1日に何回打ってるか数えてみた
正直、最初は「パスワードくらい打てばいいか」と思っていました。
でもある日、意識して数えてみたら思った以上に多かったんですよね・・・(・∀・)
私が仕事で sudo を使うのは、だいたいこんな場面です。
- Laravel のローカル環境用に
/etc/hostsへドメインを足すとき /etc/hostsを書き換えたあとにsudo killall -HUP mDNSResponderでDNSのキャッシュを消すとき- 80番ポートを何が掴んでいるか
sudo lsof -i :80で調べるとき
1回1回は数秒ですが、在宅でトリプルモニターだとMacBookの画面が横にあって、パスワードを打つたびに視線と手がキーボードの上をうろうろします。。
しかも長めのパスワードだと、打ち間違えてもう一回、というのがけっこうあるんです(´・ω・`)
Touch IDなら、MacBookの右上のキーに指を置くだけ👍
パスワードを打つ回数がほぼゼロになったのが、思っていたより快適でした!
🔧 私の設定はこれ(sudo_localに1行だけ)
ここはそのまま真似できるように書いておきます✨
まず、Appleが用意しているテンプレートをコピーします。
sudo cp /etc/pam.d/sudo_local.template /etc/pam.d/sudo_local
次に、コピーしたファイルを管理者権限で開きます。
sudo vim /etc/pam.d/sudo_local
中身はこうなっているので、3行目の先頭の # を消して保存するだけです!
# sudo_local: local config file which survives system update and is included for sudo
# uncomment following line to enable Touch ID for sudo
auth sufficient pam_tid.so
1行目のコメントに「survives system update」と書いてあるとおり、OSのアップデートで消えない置き場所です😊
保存したら、新しいターミナルのウィンドウを開いて確認します。
sudo -k # 覚えている認証を一度消す
sudo -v # Touch IDのダイアログが出ればOK
sudo -k を先に打たないと、直前に通した認証が残っていてダイアログが出ないことがあります👀
私はここで「あれ、反映されてない?」と一瞬焦りました。笑
sufficient という指定なので、指紋がうまく読めなかったときやキャンセルしたときは、いつものパスワード入力に戻ります。
締め出される心配がないのは安心ですね(^^)
ちなみに、ネットで古い記事を探すと /etc/pam.d/sudo を直接編集する方法がよく出てきます。
こちらは macOS 標準のファイルなので、アップデートのたびに上書きされて設定が消えてしまいます(´;ω;`)
macOS 27 Golden Gate の標準の /etc/pam.d/sudo も、1行目が auth include sudo_local になっていると紹介されていました。
sudo 本体のファイルは触らず、sudo_local だけに書く、と覚えておけば大丈夫です。
🤔 tmuxの中だと指紋の画面が出なかった
設定してしばらくは快適だったんですが、tmux の中で sudo を打ったら普通にパスワードを聞かれました(T_T)
原因は、tmux のセッションがログイン中の画面(GUIのセッション)から切り離されていて、pam_tid.so が指紋のダイアログを出せないからです。
これを解決してくれるのが pam_reattach で、Homebrew から入ります!
brew install pam-reattach
Homebrew の formula では、執筆時点の stable は 1.3 でした(´・∀・)
入れたら sudo_local を開いて、pam_tid.so の上に1行足します。
auth optional /opt/homebrew/lib/pam/pam_reattach.so ignore_ssh
auth sufficient pam_tid.so
書くときに気をつけるのはこのあたりです💡
- 順番は
pam_reattachが先。pam_tid.soより後ろに書くと意味がありません - Apple シリコンの Mac は Homebrew が
/opt/homebrewに入るので、フルパスで書く必要があります(Intel Mac は/usr/local側) - 公式の README でも、バグで締め出されないように
optionalを勧めています
ignore_ssh は、SSH で入ったときは何もしないようにするオプションです。
リモートから立ち上げた tmux を、pam_tid が SSH だと見分けられないケースの対策として README に書かれていました。
もう1つ、iTerm2 を使っている人は設定の Advanced にある「Allow sessions to survive logging out and back in」をオフにしないと Touch ID が出ない、という報告が多いです👀
私は今 Ghostty なので当てはまりませんでしたが、iTerm2 派の人は先にここを見たほうが早いかも・・・!
編集するときは、sudo が通る状態のターミナルを1枚残したまま作業するのがおすすめです。
万が一書き間違えても、そのウィンドウから元に戻せます(`・ω・´)
🔒 SSH越しと蓋を閉じた運用ではパスワードに戻ります
満足している前提ですが、万能ではありません。
SSH でこのMacに入って sudo を打った場合は、指紋を送る手段がないのでパスワード入力になります。
これは仕様なので、設定で何とかするものではないですね( .. )
それと、MacBook の蓋を閉じて外部モニターだけで使っている人は、本体の Touch ID に指が届きません🤔
そういう人は Apple シリコン用の「Touch ID搭載Magic Keyboard」が選択肢になりますが、蓋を閉じた状態で使えるかは環境によって報告が分かれていたので、買う前に確認したほうがいいと思います!
逆に、こんな人にはかなり合うと思います🔥
/etc/hostsやローカルの証明書まわりで、sudoをちょこちょこ打つ方- パスワードが長くて、打ち間違えが多い方
- tmux でペインを分けて作業している方(
pam_reattachまでセットで) - 会社の貸与Macでも、管理者権限の範囲で手元の設定を軽くしたい方
🔗 関連記事と使い分け
- Ghosttyの記事:今使っているターミナルです。今回の Touch ID もこの上で設定しました
- brew bundleの記事:
pam-reattachは Brewfile にbrew "pam-reattach"と1行足しておくと、新しいMacでも入れ忘れません。ただしsudo_local自体は Brewfile では戻らないので、私は dotfiles に手順をメモしています
パパ系Webエンジニア〜愛用ガジェット一覧 🛍️
Macとあわせて使っている周辺機器を楽天ROOMにまとめています ✨ 在宅Macデスクの参考にどうぞ 🙌
👍 まとめ
sudo_local に1行書くだけで、sudo のたびのパスワード入力がTouch IDに置き換わります。
tmux を使う人は、pam_reattach を pam_tid.so の上に足すところまでセットでやっておくと、つまずかずに済みます😊
正直、もっと早くやっておけばよかったです・・・!
これ、意外と知らないままパスワードを打ち続けている人が多い気がするんですが、みんなどうしてます?
5分で終わる設定なので、気になった方は次に sudo を打つ前に試してみてください🙌
※ バージョン番号・料金・機能は今後も変わる可能性があります。最新情報は公式サイトをご確認ください👀