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

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

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

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



답변

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

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


답변

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 사용자 답변을
참조하십시오 .


답변

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

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

iTerm 환경 설정


답변

터미널이나 iTerm에서 sudo 액세스를 위해 지문을 사용할 수 있습니다 . 파일 auth sufficient pam_tid.so의 첫 줄에 추가 하면 /etc/pam.d/sudo됩니다.


답변

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보다 읽기 쉽게 만듭니다.

답변

컴퓨터가 지원하는 경우 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 != ''


답변