rch850 の上澄み

技術的な話題とか、雑談とか。タイトルを上澄みに変えました @ 2020/09/02

ふくもく会その95 - macOS の sudo で音声認識をしたかった

土曜日はふくもく会 その95 〜もっく・ざ・もっく〜に参加してきました。そこで調べてたことの話。

macOS の sudo で TouchID を使えるようにする方法があります(MacのTerminalでsudo実行時にタッチIDを使用する方法 | DevelopersIO)。これを応用して、本人の声なら認証するようにできないか?そんな発想で調べ物を始めました。

まず /etc/pam.d/sudo って何者か?ということで「PAM設定ファイルの意味と書き方メモ - Qiita」を読んで勉強。なるほど完全に理解した。

要はこの PAM モジュールってやつを書けるようになって、そこで音声認識のコードを書けばいいんでしょう。

PAM モジュールを書くために非常に参考になったのがこちらの Stack Overflow の回答。

linux - how to create a pam module? - Stack Overflow

ざっくりまとめると次の通り。

  • Write a Linux PAM module という記事が参考になる。
    • もうひとつ記事が紹介されてるけど、これは先述した Qiita の記事を読んでいれば十分そう。
  • モジュールは、アプリケーションが認証しようとしたときに PAM によって呼び出される共有オブジェクト。
  • auth, account, session, password の4つのステージがあって、それぞれで対応する関数が呼び出される。モジュールではその関数を実装することになる。
    • pam_sm_authenticate
    • pam_sm_acct_mgmt
    • pam_sm_setcred
    • pam_sm_open_session
    • pam_sm_close_session
    • pam_sm_chauthtok

そしてサンプルコードまである!

github.com

これはなんとかなりそう。と思ったのが15時過ぎ。そこから紆余曲折して、.so ファイルのビルドまでいくものの、それを /usr/lib/pam.d に設置できずタイムアップというのが、ふくもく会の時間内での出来事でした。

別途、今年学んだ技術のスライドを書いてたりもしてたし。

speakerdeck.com

このあとちょっと調べて、このサンプルの PAM モジュールを使って sudo が通るところまでいったのですが、それはまた別の記事として書きます。それでは。