क्या मैक टच बार के लिए टच आईडी sudo उपयोगकर्ताओं और विशेषाधिकारों को प्रमाणित कर सकता है?


53
  • क्या मैकबुक प्रो टच बार के लिए टच आईडी मैकओएस में व्यवस्थापक विशेषाधिकार को ऊपर उठाने का समर्थन करता है?

  • कुछ अलग तरीके से, क्या टच आईडी टर्मिनल में सुडो एक्सेस दे सकती है?

मुझे आश्चर्य होता है क्योंकि मैं एक YubiKey प्राप्त करने पर विचार कर रहा हूं जो पासवर्ड क्षेत्रों के लिए स्ट्रिंग इनपुट कर सकता है, लेकिन मैक के लिए टच आईडी इसे अनावश्यक रूप से प्रस्तुत कर सकता है।


2
इसे देखें: github.com/mattrajca/sudo-touchid
pathikrit

@pathikrit - नज़दीकी लेकिन ऐसा लगता है कि एक PAM मॉड्यूल एक कांटे हुए सुडो की तुलना में बहुत बेहतर समाधान होगा। मैंने अभी तक ऐसा कुछ नहीं देखा है जो लिखा गया हो; मैं इस पर अपना हाथ आजमा सकता हूं
ब्रैड ड्वायर

जवाबों:


14
  1. टचआईडी विशेषाधिकार बढ़ाने का समर्थन करता है, लेकिन अब तक, यह केवल ऐप्पल के स्वयं के ऐप में समर्थित माना जाता है। मेरा अनुमान है कि इसे समर्थन करने के लिए 3 पार्टी ऐप्स को अपडेट करना होगा, दुर्भाग्य से। मैं अभी भी अपने पासवर्ड में बहुत कुछ लिख रहा हूं।

  2. Sudo के लिए TouchID को सक्षम करने के निर्देशों के लिए @ conorgriffin का उत्तर देखें ।


1
क्या वास्तव में किसी ने ऐसा किया है? बहुत डरावना लग रहा है :)
निक कॉट्रेल 12

@NicCottrell हां, मेरे अंत में ठीक काम कर रहा है
15

77

अपने मैक पर टचआईडी को अनुमति देने के लिए आपको 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और आपको नीचे दिखाए गए अनुसार टचआईडी के साथ प्रमाणित करने के लिए प्रेरित किया जाना चाहिए टचआईडी प्रॉम्प्ट
  • यदि आप 'रद्द करें' पर क्लिक करते हैं, तो आप टर्मिनल प्रॉम्प्ट पर अपना पासवर्ड दर्ज कर सकते हैं, यदि आप 'पासवर्ड का उपयोग करें' पर क्लिक करते हैं, तो आप संवाद बॉक्स में अपना पासवर्ड दर्ज कर सकते हैं।
  • यदि आप अपनी मशीन में एसएसएच करते हैं तो यह आपके पासवर्ड का उपयोग करने के लिए वापस गिर जाएगा क्योंकि आप एसएसएच पर अपने टचआईडी फिंगरप्रिंट नहीं भेज सकते हैं

नोट: यदि आप iTerm का उपयोग कर रहे हैं तो नीचे उपयोगकर्ता पियर का उत्तर देखें क्योंकि इस सुविधा को सक्षम करने के लिए आपको एक सेटिंग बदलनी होगी।


4
काम करने लगता है! क्या इसके साथ कोई सुरक्षा निहितार्थ हैं?
ज़्नर्कस

1
यह स्वीकृत उत्तर होना चाहिए - यह स्पष्ट है कि क्या होता है, यह कैसे किया जाता है, और तीसरे पक्ष के सॉफ़्टवेयर को स्थापित करने की कोई आवश्यकता नहीं है।
जेपी मारीगर-लैम

क्या टचआईडी के साथ सभी पासवर्ड संकेतों को बदलने का एक तरीका है? चाहे वह टर्मिनल में हो, या सिस्टम प्रेफरेंस में, या किचेन में, या पैकेज इंस्टॉलेशन के लिए?
मैक्स कोपलान

@MaxCoplan शायद एक अलग प्रश्न के रूप में पूछने लायक है
कॉनरग्रिफिन

1
यह काम करने के बाद ही मैंने Apple.stackexchange.com/a/355880/158188 (लेकिन मैंने ऐसा पहले किया था)
aubreypwd

29

यदि आप iTerm2 (v3.2.8 +) का उपयोग कर रहे हैं, तो आपने टच आईडी pam_tid.soको ऊपर के रूप में संशोधन करने के बावजूद टर्मिनल में सुडो के साथ काम करने में विफल देखा होगा , और यह पिछले संस्करणों में काम कर रहा है। यह एक उन्नत सुविधा के लिए है जो अब डिफ़ॉल्ट रूप से सक्षम होने लगती है - इसे यहां बंद करने की आवश्यकता है: iTerm2-> वरीयताएँ> उन्नत> (सत्र शीर्षक प्राप्त करना)> सत्रों को लॉग आउट होने से बचाने के लिए अनुमति दें

वैकल्पिक रूप से आप इस pam_reattachमॉड्यूल का उपयोग एक ही समय में सत्र सुविधा और TouchID sudo को बनाए रखने के लिए कर सकते हैं ।

iTerm प्राथमिकताएँ


1
लेकिन अगर आप सेशन रिस्टोरिंग फीचर को रखना चाहते हैं, तो आप इस रेमो को कस्टम पाम मॉड्यूल के साथ आजमा सकते हैं ।
सिंह

मुझे यह कदम उठाना पड़ा, लेकिन Noसेटिंग में सेट होने के बाद मैंने सही काम किया । आप "टच" भी खोज सकते हैं और विकल्प चालू हो जाएगा।
जुबेरवाड

बस परीक्षण किया गया: उपयोग करते समय pam_reattach, किसी को सेटिंग बदलने या iTerm को पुनरारंभ करने की आवश्यकता नहीं है - सब कुछ तुरंत काम करता है! (मैं परीक्षण नहीं किया है अगर सत्र "वास्तव में जीवित रहते हैं" क्योंकि मेरे पास कोई सुराग नहीं है, लेकिन मुझे सेटिंग बदलने की आवश्यकता नहीं थी)।
ब्लेसरॉब्लेड

टच आईडी प्रॉम्प्ट पूर्ण स्क्रीन वाले हॉटकी-विंडो को छुपाता है। क्या आसपास कोई काम है?
HappyFace

आपने मेरी जान बचाई ...
एंड्रयू रावस

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

मैंने एक साधारण स्क्रिप्ट बनाई है जो सुडो को टचिड पीएएम मॉड्यूल का उपयोग करने में सक्षम बनाती है, जैसा कि कोन्ग्रिफिफिन बताते हैं। यह एक ही लिपि में होता है कि आप एक टर्मिनल में कॉपी-पेस्ट कर सकते हैं यह संपूर्ण है या " 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

यह स्क्रिप्ट कुछ शांत पैटर्न प्रदर्शित करती है जो मुझे उन लोगों को पढ़ाने के लिए पसंद है जो नए हैं जो बैश या देवओप्स हैं।

  1. एक बैकअप फ़ाइल बनाएँ, जो सिर्फ़ .bakअंत में होने के बजाय क्रमांकित हो। (यह बहुत अच्छा लग रहा है, लेकिन यह पैटर्न जो कुछ भी है $fileऔर पुन: प्रयोज्य है, के साथ काम करता है।
  2. इसे करने के लिए सुरक्षित बनाने के लिए curl ... | bash, एक फ़ंक्शन में सब कुछ लपेटें और अंतिम पंक्ति पर कॉल करें। इस तरह अगर डाउनलोड बाधित होता है, तो कुछ भी नहीं (आंशिक रूप से) किया जाता है।
  3. sudo bash -euअपनी स्क्रिप्ट में कॉल करें ताकि आपको उपयोगकर्ता को यह करने के लिए न कहना पड़े। ( एरेक्सिट और संज्ञा के-eu लिए कम हैं और आपको उनका उपयोग करना चाहिए!)
  4. 'EOF'समयपूर्व खोल विस्तार को रोकने के लिए सिंगल कोटिंग बैश हेरेडोक ।
  5. इनलाइन को awkअधिक पठनीय बनाना ।

0

अगर आपका कंप्यूटर इसका समर्थन करता है, तो मैं sudo कमांड के लिए टच आईडी को सक्षम करने के लिए निम्नलिखित कार्य करता हूं:

- 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 != ''
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.