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.