Mac Touch BarのTouch IDは、sudoユーザーと管理者権限を認証できますか?


53
  • MacBook Pro Touch BarのTouch IDは、macOSでの管理者権限の昇格をサポートしていますか?

  • 多少異なって、Touch IDはターミナルでsudoアクセスを許可できますか?

パスワードフィールドに文字列を入力できるYubiKeyを取得することを検討しているが、MacのTouch IDでは不要になる可能性があるため、これは疑問です。


2
これをチェックしてください:github.com/mattrajca/sudo-touchid
pathikrit

@pathikrit-近いが、PAMモジュールは分岐したsudoよりもはるかに優れたソリューションのようです。まだ書かれたものを見たことはありません。私はそれを試してみることができます
ブラッド・ドワイヤー

回答:


14
  1. TouchIDは特権の昇格をサポートしていますが、現在のところ、Apple自身のアプリでのみサポートされているようです。残念ながら、サードパーティのアプリをサポートするには更新する必要があると思います。それでもパスワードを何度も入力することになります。

  2. sudoのTouchIDを有効にする手順については、@ conorgriffinの回答を参照してください。


1
誰も実際にこれをやったことがありますか?かなり怖いように見える:)
ニックコットレル

@NicCottrellはい、私の終わりにうまくいきます
-swrobel

77

MacのTouchIDがsudoパスワードの代わりにアクセスのために認証されるようにするには、以下を実行する必要があります。

  • ターミナルを開く
  • でrootユーザーに切り替えます sudo su -
  • または/etc/pam.d/sudoなどのコマンドラインエディタでファイルを編集しますvimnano
  • このファイルの内容は次のようになります。

    # sudo: auth account password session
    auth       required       pam_opendirectory.so
    account    required       pam_permit.so
    password   required       pam_deny.so
    session    required       pam_permit.so
    
  • auth上部に追加の行を追加して、次のようになります。

    # sudo: auth account password session
    auth       sufficient     pam_tid.so
    auth       required       pam_opendirectory.so
    account    required       pam_permit.so
    password   required       pam_deny.so
    session    required       pam_permit.so
    
  • ファイルを保存します(注:このファイルは通常読み取り専用なので、変更を保存するには保存を強制する必要がある場合があります。たとえば、保存時vimに使用する必要がありますwq!
  • rootユーザーを終了するか、新しいターミナルセッションを開始します
  • 使用しようとするsudoと、以下に示すようにTouchIDで認証するように求められます TouchIDプロンプト
  • [キャンセル]をクリックすると、ターミナルプロンプトでパスワードを入力できます。[パスワードを使用]をクリックすると、ダイアログボックスにパスワードを入力できます。
  • SSHでTouchIDフィンガープリントを送信できないため、マシンにSSHで接続すると、パスワードを使用するようにフォールバックします

注:この機能を有効にするには変更が必要な設定があるため、iTermを使用している場合は、以下のユーザー Pierz による回答を 参照してください。


4
動作しているようです!これにセキュリティ上の影響はありますか?
Znarkus

1
これは受け入れられた答えであるはずです-何が起こるか、それがどのように行われるかは明らかであり、サードパーティのソフトウェアをインストールする必要はありません。
ジェッペマリアガーラム

すべてのパスワードプロンプトをTouchIDに置き換える方法はありますか?ターミナルにあるのか、システム環境設定にあるのか、キーチェーンにあるのか、パッケージのインストール用なのか?
マックスコプラン

別の問題として@MaxCoplanおそらく価値の提示
conorgriffin

1
これは、apple.stackexchange.com / a / 355880/158188を実行した後にのみ機能しました(ただし、最初にこれを実行しました)
aubreypwd

29

iTerm2(v3.2.8 +)を使用している場合はpam_tid.so、上記のように変更を加えたにもかかわらず、Touch IDが端末でsudoを使用できず、以前のバージョンで機能することがあります。これはにダウンしている高度な機能:このニーズは、ここでオフにする-デフォルトで有効になっているようだセッションがでログアウトして戻って生き残るために許可> iTerm2->設定>詳細設定>(後藤セッションの見出し)

または、このpam_reattachモジュールを使用して、セッション機能とTouchID sudoを同時に保持できます。

iTerm設定


1
ただし、セッションの復元機能を維持したい場合は、カスタムpamモジュールでこのレポを試すことができます。
レオ

私はこのステップを実行しなければなりませんNoでしたが、設定で確実に設定された直後に動作しました。「タッチ」を検索しても、オプションが表示されます。
aubreypwd

テスト済み:を使用する場合pam_reattach、設定を変更したりiTermを再起動したりする必要はありません。すべてがすぐに機能します。(セッションが「実際に生き残る」かどうかは、どのように手掛かりがないのかテストしていませんが、設定を変更する必要はありませんでした)。
ブレイザーブレード

タッチIDプロンプトは、フルスクリーンのホットキーウィンドウを非表示にします。回避策はありますか?
HappyFace

あなたは私の命を救いました...
アンドリュー・ラバス

3

端末またはiTermでsudoアクセスを取得するために指紋を使用できます。ファイルのauth sufficient pam_tid.so最初の行に追加するだけ/etc/pam.d/sudoです。


4
別のデフォルトオプションが設定されている場合、現在のiTermバージョンv3.2.8ではこれが許可されないことを他の人が知るのは興味深いかもしれません。[設定]-> [詳細設定]および[無効化]に移動する必要がありますAllow sessions to survive logging out and back ingitlab.com/gnachman/iterm2/issues/7608#note_153123852
kossmoboleat

3

conorgriffinが説明するとおりに、sudoがTouchID PAMモジュールを使用できるようにする簡単なスクリプトを作成しました。単一のスクリプトでそれを行い、端末全体にコピーアンドペーストするか、「curlパイプbash」ショートカットを使用できます。

curl -sL https://gist.githubusercontent.com/RichardBronosky/31660eb4b0f0ba5e673b9bc3c9148a70/raw/touchid_sudo.sh | bash

完全なスクリプト

#!/bin/bash

# curl -sL https://gist.githubusercontent.com/RichardBronosky/31660eb4b0f0ba5e673b9bc3c9148a70/raw/touchid_sudo.sh | bash
# This script is ready to copy-paste in whole, or just the line above (without the leading #)

# Use TouchID for sudo on modern MacBook Pro machines
# This script adds a single line to the top of the PAM configuration for sudo
# See: https://apple.stackexchange.com/q/259093/41827 for more info.

touchid_sudo(){
  sudo bash -eu <<'EOF'
  file=/etc/pam.d/sudo
  # A backup file will be created with the pattern /etc/pam.d/.sudo.1
  # (where 1 is the number of backups, so that rerunning this doesn't make you lose your original)
  bak=$(dirname $file)/.$(basename $file).$(echo $(ls $(dirname $file)/{,.}$(basename $file)* | wc -l))
  cp $file $bak
  awk -v is_done='pam_tid' -v rule='auth       sufficient     pam_tid.so' '
  {
    # $1 is the first field
    # !~ means "does not match pattern"
    if($1 !~ /^#.*/){
      line_number_not_counting_comments++
    }
    # $0 is the whole line
    if(line_number_not_counting_comments==1 && $0 !~ is_done){
      print rule
    }
    print
  }' > $file < $bak
EOF
}

touchid_sudo

このスクリプトは、bashまたはDevOpsを初めて使用する人々に教えるのが大好きな、いくつかのクールなパターンを示しています。

  1. 単に末尾ではなく番号が付けられたバックアップファイルを作成します.bak。(見苦しいが、そのパターンは中に$fileあり、再利用可能なものなら何でも動作する。
  2. 安全に実行するにはcurl ... | bash、すべてを関数でラップし、最後の行で呼び出します。そうすれば、ダウンロードが中断されても、(部分的に)何も実行されません。
  3. sudo bash -euスクリプトにを呼び出して、ユーザーに実行を指示しないようにします。(-euのために短いERREXITとnounset、あなたはそれらを使用する必要があります!)
  4. 'EOF'早すぎるシェル拡張を防ぐための、単一引用符付きbashヒアドキュメント。
  5. インラインawkを読みやすくします。

0

コンピューターがサポートしている場合、sudoコマンドのタッチIDを有効にする次のansibleタスクを作成しました。

- name: detect touch id support
  shell: pgrep ControlStrip
  ignore_errors: true
  register: touch_id_result

- name: enable touch id for sudo commands
  lineinfile:
    path: /etc/pam.d/sudo
    line: 'auth       sufficient     pam_tid.so'
    insertbefore: '^auth       sufficient     pam_smartcard.so$'
  become: yes
  when: touch_id_result.rc == 0 and touch_id_result.stdout != ''
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.