題:
Mac Touch Bar的Touch ID可以驗證sudo用戶和管理員權限嗎?
PAN
2016-10-28 19:11:55 UTC
view on stackexchange narkive permalink
  • MacBook Pro Touch Bar的Touch ID是否支持提升macOS中的管理員權限?

  • Touch ID是否可以在終端中提供sudo訪問權限?

我想知道這是因為我正在考慮使用 YubiKey,它可以在密碼字段中輸入字符串,但是Mac的Touch ID可能不需要它。

檢查一下:https://github.com/mattrajca/sudo-touchid
@pathikrit-接近,但是看起來PAM模塊比分叉的sudo更好。我還沒有看過任何寫過的東西。我可以試試看
七 答案:
conorgriffin
2017-11-20 15:12:44 UTC
view on stackexchange narkive permalink

要允許Mac上的TouchID驗證您的 sudo 訪問權限(而不是密碼),您需要執行以下操作。

  • 打開終端

  • 使用 sudo su-

    切換到root用戶
  • 使用命令行編輯器(例如 vim nano

  • 此文件的內容應類似於以下示例之一:

    •  #sudo:身份驗證帳戶密碼會話
      需要驗證pam_opendirectory.so
      所需帳戶pam_permit.so
      需要密碼pam_deny.so
      所需的會話pam_permit.so
       
    •  #sudo:身份驗證帳戶密碼會話
      驗證足夠的pam_smartcard.so
      需要驗證pam_opendirectory.so
      所需帳戶pam_permit.so
      需要密碼pam_deny.so
      所需的會話pam_permit.so
       
  • 您需要在頂部添加一條附加的 auth 行,因此現在看起來像這樣:

     #sudo:身份驗證帳戶密碼會話
    驗證足夠的pam_tid.so
    驗證足夠的pam_smartcard.so
    需要驗證pam_opendirectory.so
    所需帳戶pam_permit.so
    需要密碼pam_deny.so
    所需的會話pam_permit.so
     
  • 保存文件。 (注意:該文件通常是只讀的,因此保存更改可能需要您強制保存,例如 vim 將要求您在保存時使用 wq!

  • 還要注意, pam_smartcard.so 在較舊的MacOS版本上可能不存在。

  • 從root用戶退出或開始新的終端會話。

  • 嘗試使用 sudo ,並且系統會提示您使用TouchID進行身份驗證,如下所示。

    TouchID prompt

  • 如果單擊“取消”,則只需在終端提示符下輸入密碼。如果單擊“使用密碼”,則可以在對話框中輸入密碼。

  • 如果您通過SSH進入計算機,由於無法通過SSH發送TouchID指紋,因此它只能使用密碼。

注: 如果您使用的是iTerm,請參見用戶Pierz的回答,因為您需要顯式更改設置才能啟用此功能。

注: 最近的MacOS更新可能會刪除該條目。如果TouchID對於 sudo 停止工作,請再次按照以下說明檢查條目是否已刪除並重新添加。

似乎可以工作!這有任何安全隱患嗎?
這應該是公認的答案-很清楚會發生什麼情況,如何完成,並且不需要安裝第三方軟件。
有沒有一種方法可以用TouchID替換所有密碼提示?它是在終端機中,在系統偏好設置中,在鑰匙串中還是在軟件包安裝中?
@MaxCoplan可能值得作為一個單獨的問題提出
/etc/pam.d中還有許多其他文件。將這行添加到這些行的頂部怎麼辦?例如,將其添加到/etc/pam.d/su是否可行?其他文件做什麼? (這是否也值得提出自己的問題?)
試圖為su做事,但我認為這沒有用。我不知道這是為什麼...
如果您對此問題提出新的問題,則更有可能獲得答案
這僅在我執行https://apple.stackexchange.com/a/355880/158188(但我先這樣做後)之後才起作用
@conorgriffin嗨,老兄,我不小心將其投票否決,想進行少量編輯,以便我可以將投票更改為當之無愧的投票?
那就是你!編輯完成
@conorgriffin謝謝!投票否定:)
蘋果手錶提供了與TouchID相似的提示。看起來好像是相同的機制。有沒有人設法使其與手錶兼容?
@Znarkus的潛在安全隱患是,至少在美國,不能強迫您放棄法院的密碼(這被認為違反了第五修正案),但是您的生物識別信息不是秘密的,因此您絕對可以被迫由法院進行生物特徵認證。我不確定大多數人是否會擔心,但這是一門好知識。
pam_tid.so是否最近被稱為pam_smartcard.so?我以前在我的`pam.d / sudo`文件中有`auth足夠的pam_tid.so`,但是由於某種原因,我現在看到`auth足夠的pam_smartcard.so`。Touch ID似乎不再適用於sudo,這就是為什麼我在文件中查找的原因。
似乎在最近的MacOS更新中刪除了“ pam_tid.so”。您只需將其與`pam_smartcard.so`條目一起添加回去,我將更新答案
Pierz
2019-04-03 01:47:45 UTC
view on stackexchange narkive permalink

如果您使用的是iTerm2(v3.2.8 +),則可能會發現Touch ID在終端中無法與sudo一起使用,儘管已如上所述進行了 pam_tid.so 修改,但它仍然可以在以前的版本中。這是由於高級功能似乎現在已默認啟用-需要在此處將其關閉:iTerm2->首選項>高級>(轉到會話標題)>允許會話保留日誌進出

或者,您可以使用此 pam_reattach 模塊同時保留會話功能和TouchID sudo。

iTerm preferences

但是,如果要保留會話恢復功能,則可以嘗試使用自定義pam模塊進行[this repo](https://github.com/fabianishere/pam_reattach)。
我必須執行此步驟,但是在確保在設置中設置為“否”後立即開始工作。您也可以搜索“觸摸”,然後該選項就會出現。
剛剛測試過:使用`pam_reattach`時,無需更改設置或重新啟動iTerm-一切立即生效!(因為我不知道如何進行,所以我沒有測試過會話是否“實際上可以存活”,但是我不需要更改設置)。
觸摸ID提示會隱藏全屏熱鍵窗口。有解決方法嗎?
你救了我的命...
PSA:__不要__在`/ etc / pam.d / sudo`中打錯任何內容。如果這樣做,則必須加載單用戶模式才能將其更改回原來的狀態。
swrobel
2016-11-29 21:46:03 UTC
view on stackexchange narkive permalink
  1. TouchID確實支持提升特權,但是到目前為止,它似乎僅在Apple自己的應用程序中受支持。我的猜測是,很遺憾,必須更新第三方應用程序才能支持它。我仍然要輸入很多密碼。

  2. 有關為sudo啟用TouchID的說明,請參見 @conorgriffin的答案

  3. ol>
有人真的這樣做過嗎?看起來很嚇人:)
@NicCottrell是的,我的工作正常
0TshEL_n1ck
2017-11-18 22:26:13 UTC
view on stackexchange narkive permalink

您可以使用指紋在終端或iTerm中獲取sudo訪問權限,只需在 /etc/pam.d/sudo的第一行中添加 auth足夠的pam_tid.so 代碼>文件。

其他人可能會很感興趣,因為當設置了另一個默認選項時,當前的iTerm版本v3.2.8不允許這樣做。您必須進入“偏好設置”->“高級”並停用“允許會話以退出註銷並重新登錄”:https://gitlab.com/gnachman/iterm2/issues/7608#note_153123852
Bruno Bronosky
2018-12-10 13:21:57 UTC
view on stackexchange narkive permalink

我創建了一個簡單的腳本,使sudo能夠完全按照conorgriffin的說明使用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 |重擊
#此腳本可用於全部或僅複製粘貼在上面的行(沒有前導#)

#在現代MacBook Pro機器上將TouchID用於sudo
#此腳本在sudo的PAM配置頂部添加一行
#請參閱:https://apple.stackexchange.com/q/259093/41827了解更多信息。

touchid_sudo(){
  sudo bash -eu <<'EOF'
  文件= / etc / pam.d / sudo
  #將以/etc/pam.d/.sudo.1模式創建一個備份文件
  #(其中1是備份數,因此重新運行它不會使您失去原始文件)
  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足夠的pam_tid.so''
  {
    #$ 1是第一個字段
    #!〜表示“不匹配模式”
    if($ 1!〜/^#.*/){
      line_number_not_counting_comments ++
    }
    #$ 0是整行
    if(line_number_not_counting_comments == 1 && $ 0!〜is_done){
      打印規則
    }
    打印
  }'> $ file < $ bak
緊急行動
}

touchid_sudo
 

該腳本演示了一些我喜歡教給bash或DevOps初學者的酷模式。

  1. 創建一個編號為最後一個而不是簡單地為 .bak 的備份文件。 (它看起來很粗糙,但是該模式適用於 $ file 中的任何內容,並且可以重複使用。
  2. 為了使其安全地執行 curl ... |bash ,將所有內容包裝在一個函數中,並在最後一行調用它。這樣,如果下載中斷,則不會(部分)完成任何操作。
  3. 在腳本中放置對 sudo bash -eu 的調用,這樣您就不必告訴用戶了。( -eu errexit和nounset的縮寫,您應該使用它們!)
  4. 單引號bash heredoc 'EOF',以防止外殼過早膨脹。
  5. 使內聯 awk 更具可讀性。
  6. ol>
Andy
2019-01-07 10:28:42 UTC
view on stackexchange narkive permalink

如果您的計算機支持,我創建了以下任務來啟用sudo命令的觸摸ID:

 -名稱:檢測觸摸ID支持
  外殼:pgrep ControlStrip
  ignore_errors:是
  註冊:touch_id_result

-名稱:為sudo命令啟用touch ID
  lineinfile:
    路徑:/etc/pam.d/sudo
    行:“驗證足夠的pam_tid.so”
    insertbefore:'^ auth足夠的pam_smartcard.so $'
  成為:是的
  時間:touch_id_result.rc == 0和touch_id_result.stdout!=''
 
Mark Ballew
2020-05-28 19:42:20 UTC
view on stackexchange narkive permalink

將Andy和Glenjamin的解決方案合併為一個戲劇:

  ---
-主機:localhost
  任務:
  -名稱:安裝pam_reattach pam模塊
    自製:
      名稱:fabianishere / personal / pam_reattach
      狀態:存在
    註冊:reattach_result

  -名稱:檢測觸摸ID支持
    外殼:pgrep ControlStrip
    ignore_errors:是
    註冊:touch_id_result

  -名稱:為sudo命令啟用touch ID
    lineinfile:
      路徑:/etc/pam.d/sudo
      行:“驗證足夠的pam_tid.so”
      insertbefore:'^ auth足夠的pam_smartcard.so $'
    成為:是的
    時間:touch_id_result.rc == 0和touch_id_result.stdout!=''

  -名稱:為tmux和iterm啟用永久觸摸ID
    lineinfile:
      路徑:/etc/pam.d/sudo
      行:“ auth optional pam_reattach.so”
      insertbefore:'^ auth足夠的pam_tid.so $'
    成為:是的
    時間:reattach_result == 0
 

這可以只用 ansible-playbook sudo-touchid.yml 來運行,其中 sudo-touchid.yml 是我命名的這齣戲。

第一步是安裝Fabian的 pam_reatttach ,它允許sudo在iTerm,tmux等環境中工作。它不在默認的brew中,因此我們要從他自己的分支中獲取它。 / p>

第二個檢查該Mac是否具有觸摸欄,否則我們將進行緊急救援。

第三,我們正在查看是否已經在 /etc/pam.d/sudo 中添加了 pam_tid.so ,並且僅當有觸摸條時。

>

最後,我們還將 pam_reattach.so 添加為可選身份驗證方法。根據作者的說法,他可能有一些未知的錯誤,如果我們使用 required ,則可能會導致鎖定。

該回答可能得益於有關如何實際使用它以及為什麼需要不同部分的解釋。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...