Touch ID cho Mac Touch Bar có thể xác thực người dùng sudo và đặc quyền quản trị viên không?


53
  • Touch ID cho MacBook Pro Touch Bar có hỗ trợ nâng cao quyền quản trị viên trong macOS không?

  • Hơi khác một chút, Touch ID có thể cấp quyền truy cập sudo trong Terminal không?

Tôi tự hỏi điều này bởi vì tôi đang xem xét nhận một YubiKey có thể thực hiện nhập chuỗi vào các trường mật khẩu, nhưng Touch ID cho máy Mac có thể khiến nó không cần thiết.



@pathikrit - đóng nhưng có vẻ như mô-đun PAM sẽ là giải pháp tốt hơn nhiều so với sudo rẽ nhánh. Tôi chưa thấy cái nào được viết cả; Tôi có thể thử sức mình với nó
Brad Dwyer

Câu trả lời:


14
  1. TouchID không hỗ trợ nâng cao đặc quyền, nhưng cho đến nay, nó dường như chỉ được hỗ trợ trong các ứng dụng của chính Apple. Tôi đoán là các ứng dụng của bên thứ 3 sẽ phải được cập nhật để hỗ trợ nó, thật không may. Tôi vẫn kết thúc việc nhập mật khẩu của tôi rất nhiều.

  2. Xem câu trả lời của @ conorgriffin để biết hướng dẫn kích hoạt TouchID cho sudo.


1
Có ai thực sự làm điều này? Trông khá đáng sợ :)
Nic Cottrell

@NicCottrell có, hoạt động tốt vào cuối của tôi
swrobel

77

Để cho phép TouchID trên máy Mac của bạn xác thực bạn sudotruy cập thay vì mật khẩu, bạn cần thực hiện các thao tác sau.

  • mở Terminal
  • chuyển sang người dùng root với sudo su -
  • chỉnh sửa /etc/pam.d/sudotệp bằng trình chỉnh sửa dòng lệnh như vimhoặcnano
  • Nội dung của tập tin này sẽ trông như thế này

    # 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
    
  • bạn cần thêm một authdòng bổ sung vào đầu để bây giờ nó trông như thế này:

    # 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
    
  • lưu tệp ( Lưu ý: tệp này thường chỉ đọc để lưu các thay đổi của bạn có thể yêu cầu bạn buộc lưu, ví dụ: vimsẽ yêu cầu bạn sử dụng wq!khi lưu)
  • thoát khỏi người dùng root hoặc bắt đầu một phiên cuối mới
  • hãy thử sử dụng sudovà bạn sẽ được nhắc xác thực bằng TouchID như hình bên dưới Dấu nhắc TouchID
  • nếu bạn nhấp vào 'Hủy', bạn chỉ cần nhập mật khẩu của mình tại dấu nhắc thiết bị đầu cuối, nếu bạn nhấp vào 'Sử dụng mật khẩu', bạn có thể nhập mật khẩu của mình vào hộp thoại.
  • nếu bạn SSH vào máy của mình, nó sẽ quay trở lại chỉ sử dụng mật khẩu của bạn vì bạn không thể gửi dấu vân tay TouchID của mình qua SSH

Lưu ý: Xem câu trả lời của người dùng Pierz bên dưới nếu bạn đang sử dụng iTerm vì có cài đặt bạn cần thay đổi để bật tính năng này.


4
Có vẻ để làm việc! Có bất kỳ ý nghĩa bảo mật với điều này?
Znarkus

1
Đây phải là câu trả lời được chấp nhận - Rõ ràng điều gì xảy ra, cách thực hiện và không cần cài đặt phần mềm của bên thứ ba.
Jeppe Mariager-Lam

Có cách nào để thay thế tất cả các lời nhắc mật khẩu bằng TouchID không? Cho dù đó là trong thiết bị đầu cuối, hoặc trong Tùy chọn hệ thống, hoặc trong Keychain hoặc cho cài đặt Gói?
Tối đa Coplan

@MaxCoplan có lẽ đáng để hỏi như một câu hỏi riêng
conorgriffin

1
Điều này chỉ hoạt động sau khi tôi đã làm apple.stackexchange.com/a/355880/158188 (nhưng tôi đã làm điều này trước tiên)
aubreypwd

29

Nếu bạn đang sử dụng iTerm2 (v3.2.8 +), bạn có thể đã thấy Touch ID không hoạt động với sudo trong thiết bị đầu cuối mặc dù đã thực hiện pam_tid.sosửa đổi như trên và nó hoạt động trong các phiên bản trước. Đây là một tính năng nâng cao dường như được bật theo mặc định - điều này cần được tắt ở đây: iTerm2-> Preferences> Advanced> (Goto tiêu đề Phiên)> Cho phép các phiên tồn tại và đăng nhập .

Ngoài ra, bạn có thể sử dụng pam_reattachmô-đun này để giữ lại tính năng phiên và TouchID sudo cùng một lúc.

sở thích của iTerm


1
Nhưng nếu bạn muốn duy trì tính năng khôi phục phiên, bạn có thể thử repo này với mô-đun pam tùy chỉnh.
Leo

Tôi đã phải làm bước này, nhưng làm việc ngay sau khi tôi đảm bảo Nođược đặt trong cài đặt. Bạn cũng có thể tìm kiếm "chạm" và tùy chọn sẽ bật lên.
aubreypwd

Chỉ cần thử nghiệm: Khi sử dụng pam_reattach, người ta không cần thay đổi cài đặt hoặc khởi động lại iTerm - mọi thứ đều hoạt động ngay lập tức! (Tôi đã không kiểm tra nếu các phiên "thực sự tồn tại" vì tôi không biết làm thế nào, nhưng tôi không cần thay đổi cài đặt).
Blaisorblade

Dấu nhắc ID cảm ứng ẩn cửa sổ phím nóng toàn màn hình. Có một cách giải quyết?
HappyFace

Bạn đã cứu mạng tôi ...
Andrew Ravus

3

Bạn có thể sử dụng dấu vân tay để nhận quyền truy cập sudo trong thiết bị đầu cuối hoặc iTerm, chỉ cần thêm auth sufficient pam_tid.sovào dòng đầu tiên vào /etc/pam.d/sudotệp của bạn .


4
Thật thú vị khi người khác biết rằng phiên bản iTerm hiện tại v3.2.8 không cho phép điều này khi một tùy chọn mặc định khác được đặt. Bạn phải truy cập Tùy chọn -> Nâng cao và hủy kích hoạt Allow sessions to survive logging out and back in: gitlab.com/gnachman/iterm2/issues/7608#note_153123852
kossmoboleat

3

Tôi đã tạo một tập lệnh đơn giản cho phép sudo sử dụng mô-đun TouchID PAM chính xác như conorgriffin giải thích. Nó thực hiện nó trong một tập lệnh duy nhất mà bạn có thể sao chép-dán vào một thiết bị đầu cuối trong toàn bộ hoặc sử dụng phím tắt " curlpipe bash":

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

Kịch bản hoàn chỉnh :

#!/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

Kịch bản này thể hiện một vài mẫu thú vị mà tôi yêu thích để dạy cho những người mới biết về bash hoặc DevOps.

  1. Tạo một tập tin sao lưu được đánh số thay vì chỉ đơn giản là .bakở cuối. (Nó trông có vẻ hầm hố, nhưng mô hình đó hoạt động với bất cứ thứ gì trong $filevà có thể tái sử dụng.
  2. Để làm cho nó an toàn để làm curl ... | bash, bọc tất cả mọi thứ trong một chức năng và gọi nó trên dòng cuối cùng. Bằng cách đó, nếu quá trình tải xuống bị gián đoạn, không có gì (một phần) được thực hiện.
  3. Thực hiện cuộc gọi sudo bash -eutrong tập lệnh của bạn để bạn không yêu cầu người dùng thực hiện. ( -euviết tắt của errexit và danh từ và bạn nên sử dụng chúng!)
  4. Single trích dẫn bash heredoc 'EOF'để ngăn chặn sự mở rộng vỏ sớm.
  5. Làm cho nội tuyến awkdễ đọc hơn.

0

Tôi đã tạo các tác vụ có thể tìm thấy sau đây để bật id cảm ứng cho các lệnh sudo nếu máy tính của bạn hỗ trợ nó:

- 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 != ''
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.