Mac Touch Bar의 Touch ID가 sudo 사용자 및 관리자 권한을 인증 할 수 있습니까?


51
  • MacBook Pro Touch Bar의 Touch ID는 macOS에서 관리자 권한 상승을 지원합니까?

  • 터치 ID가 터미널에서 sudo 액세스 권한을 부여 할 수 있습니까?

암호 필드에 문자열 입력을 수행 할 수 있는 YubiKey 를 얻는 것을 고려하고 있기 때문에 이것이 궁금 하지만 Mac 용 Touch ID는 필요하지 않을 수 있습니다.



@pathikrit-닫기하지만 PAM 모듈이 포크 sudo보다 훨씬 나은 솔루션 인 것처럼 보입니다. 나는 아직 쓰여진 것을 보지 못했다. 나는 그것을 시도 할지도 모른다
Brad Dwyer

답변:


14
  1. TouchID는 권한 상승을 지원하지만 현재로서는 Apple 자체 앱에서만 지원되는 것으로 보입니다. 내 생각에 불행히도 타사 앱을 지원하려면 업데이트해야합니다. 여전히 비밀번호를 많이 입력하게됩니다.

  2. sudo에 TouchID를 활성화하는 방법은 @conorgriffin의 답변 을 참조하십시오 .


1
실제로 이것을 한 사람이 있습니까? 꽤 무섭게 보인다 :)
Nic Cottrell

@NicCottrell 그래, 내 끝에서 잘 작동
swrobel

76

Mac에서 TouchID sudo가 암호 대신 액세스 권한 을 인증하도록하려면 다음을 수행해야합니다.

  • 터미널 열기
  • 로 루트 사용자로 전환 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!시 사용 )
  • 루트 사용자를 종료하거나 새 터미널 세션을 시작하십시오.
  • 사용하려고하면 sudo아래와 같이 TouchID로 인증하라는 메시지가 표시되어야합니다 TouchID 프롬프트
  • '취소'를 클릭하면 터미널 프롬프트에서 비밀번호를 입력 할 수 있습니다. '비밀번호 사용'을 클릭하면 대화 상자에 비밀번호를 입력 할 수 있습니다.
  • 컴퓨터에 SSH를 연결하면 SSH를 통해 TouchID 지문을 보낼 수 없으므로 비밀번호를 사용하기 만합니다.

참고 : 이 기능을 사용하려면 설정을 변경해야하므로 iTerm을 사용하는 경우 아래의 Pierz 사용자 답변을 참조하십시오 .


4
작동하는 것 같습니다! 이것에 대한 보안 관련 사항이 있습니까?
Znarkus

1
이것은 받아 들일만한 대답이어야합니다. 어떤 일이 발생하고 어떻게 이루어졌으며 타사 소프트웨어를 설치할 필요가 없습니다.
Jeppe Mariager-Lam

모든 비밀번호 프롬프트를 TouchID로 바꾸는 방법이 있습니까? 터미널 또는 시스템 환경 설정, 키 체인 또는 패키지 설치 중 어느쪽에 있습니까?
Max Coplan

@MaxCoplan은 아마도 별도의 질문으로 생각할 가치가 있습니다
conorgriffin

1
이것은 apple.stackexchange.com/a/355880/158188을 수행 한 후에 만 ​​작동했습니다 (그러나 먼저이 작업을 수행했습니다)
aubreypwd

28

iTerm2 (v3.2.8 +)를 사용하는 경우 pam_tid.so위와 같이 수정 했지만 이전 버전에서 작동 하더라도 터미널에서 Touch ID가 sudo와 작동하지 않는 것을 볼 수 있습니다 . 이것은 현재 기본적으로 활성화되어있는 것처럼 보이는 고급 기능 입니다. 여기서는 iTerm2-> 환경 설정> 고급> (세션 제목으로 이동)> 세션이 로그 아웃 한 후 다시 로그인 할 수 있도록 허용해야합니다 .

또는이 pam_reattach모듈을 사용 하여 세션 기능과 TouchID sudo를 동시에 유지할 수 있습니다 .

iTerm 환경 설정


1
그러나 세션 복원 기능을 유지하려면 사용자 지정 pam 모듈을 사용 하여이 리포지토리 를 사용해보십시오 .
레오

이 단계를 수행해야했지만 No설정이 완료된 직후에 작업했습니다 . "터치"를 검색해도 옵션이 나타납니다.
aubreypwd

방금 테스트 :를 사용할 때 pam_reattach설정을 변경하거나 iTerm을 다시 시작할 필요가 없습니다. 모든 것이 즉시 작동합니다! (어떻게 실마리가 없기 때문에 세션이 "실제로 생존"하는지 테스트하지는 않았지만 설정을 변경할 필요는 없었습니다).
Blaisorblade

터치 ID 프롬프트는 전체 화면 핫키 창을 숨 깁니다. 해결 방법이 있습니까?
HappyFace

당신은 내 생명을 구했습니다 ...
Andrew Ravus

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 in. gitlab.com/gnachman/iterm2/issues/7608#note_153123852
kossmoboleat

3

condoriffin이 설명하는대로 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 heredoc .
  5. 인라인을 awk보다 읽기 쉽게 만듭니다.

0

컴퓨터가 지원하는 경우 sudo 명령에 대한 터치 ID를 활성화하기 위해 다음과 같은 가능한 작업을 만들었습니다.

- 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.