MacBook Pro Touch BarのTouch IDは、macOSでの管理者権限の昇格をサポートしていますか?
多少異なって、Touch IDはターミナルでsudoアクセスを許可できますか?
パスワードフィールドに文字列を入力できるYubiKeyを取得することを検討しているが、MacのTouch IDでは不要になる可能性があるため、これは疑問です。
MacBook Pro Touch BarのTouch IDは、macOSでの管理者権限の昇格をサポートしていますか?
多少異なって、Touch IDはターミナルでsudoアクセスを許可できますか?
パスワードフィールドに文字列を入力できるYubiKeyを取得することを検討しているが、MacのTouch IDでは不要になる可能性があるため、これは疑問です。
回答:
TouchIDは特権の昇格をサポートしていますが、現在のところ、Apple自身のアプリでのみサポートされているようです。残念ながら、サードパーティのアプリをサポートするには更新する必要があると思います。それでもパスワードを何度も入力することになります。
sudoのTouchIDを有効にする手順については、@ conorgriffinの回答を参照してください。
MacのTouchIDがsudo
パスワードの代わりにアクセスのために認証されるようにするには、以下を実行する必要があります。
sudo su -
/etc/pam.d/sudo
などのコマンドラインエディタでファイルを編集しますvim
nano
このファイルの内容は次のようになります。
# 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!
)sudo
と、以下に示すようにTouchIDで認証するように求められます
注:この機能を有効にするには変更が必要な設定があるため、iTermを使用している場合は、以下のユーザー Pierz による回答を 参照してください。
iTerm2(v3.2.8 +)を使用している場合はpam_tid.so
、上記のように変更を加えたにもかかわらず、Touch IDが端末でsudoを使用できず、以前のバージョンで機能することがあります。これはにダウンしている高度な機能:このニーズは、ここでオフにする-デフォルトで有効になっているようだセッションがでログアウトして戻って生き残るために許可> iTerm2->設定>詳細設定>(後藤セッションの見出し)。
または、このpam_reattach
モジュールを使用して、セッション機能とTouchID sudoを同時に保持できます。
No
でしたが、設定で確実に設定された直後に動作しました。「タッチ」を検索しても、オプションが表示されます。
pam_reattach
、設定を変更したりiTermを再起動したりする必要はありません。すべてがすぐに機能します。(セッションが「実際に生き残る」かどうかは、どのように手掛かりがないのかテストしていませんが、設定を変更する必要はありませんでした)。
端末またはiTermでsudoアクセスを取得するために指紋を使用できます。ファイルのauth sufficient pam_tid.so
最初の行に追加するだけ/etc/pam.d/sudo
です。
Allow sessions to survive logging out and back in
:gitlab.com/gnachman/iterm2/issues/7608#note_153123852
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を初めて使用する人々に教えるのが大好きな、いくつかのクールなパターンを示しています。
.bak
。(見苦しいが、そのパターンは中に$file
あり、再利用可能なものなら何でも動作する。curl ... | bash
、すべてを関数でラップし、最後の行で呼び出します。そうすれば、ダウンロードが中断されても、(部分的に)何も実行されません。sudo bash -eu
スクリプトにを呼び出して、ユーザーに実行を指示しないようにします。(-eu
のために短いERREXITとnounset、あなたはそれらを使用する必要があります!)'EOF'
早すぎるシェル拡張を防ぐための、単一引用符付きbashヒアドキュメント。awk
を読みやすくします。コンピューターがサポートしている場合、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 != ''