Sudo

可以使用密鑰文件作為 sudo 的密碼嗎?

  • November 15, 2017

語境

我喜歡在我的筆記型電腦上公開工作,但我也喜歡在沒有密碼的情況下使用 sudo。根據我現在所知道的,我會NOPASSWD在我的文件中使用該選項sudoers,但當然任何人都可以根據需要使用 sudo。

我想到的一個重要想法****是存在鎖定程序。 但是,我更喜歡使用快閃記憶體驅動器(並且僅將其用於 sudo),因為(1)它更快,(2)比輸入我的密碼更容易,並且(3)我不關心人們訪問我的內容或做壞事事情:筆記型電腦會在其他人周圍公開,我筆記型電腦上唯一的智慧財產權是一個非常基本的 Angular 項目。

此外,我自己和其他人可能希望防止在未執行 X 或 Wayland 環境的電腦上濫用 sudo。我目前的工作需要一個現代的網路瀏覽器,但如果我有機會不使用 X 而只使用多路復用器,我會這樣做——我的筆記型電腦有點舊而且速度慢。

問題

我想做的是將密鑰文件放在快閃記憶體驅動器上,當我在筆記型電腦旁時只需插入快閃記憶體驅動器,當我離開它時將其取出。

所以這是我從這個問題中得出的三個問題:

  1. 這可能與 sudo 一樣嗎?
  2. 如果沒有,我能寫一個程序讓我這樣做嗎?
  3. 如果是這樣,哪種語言可能最適合編寫此程序?

(4.

$$ Perhaps an extraneous question $$這個包可以是單獨的還是需要是 sudo 的一個分支?)

筆記

如果相關,我的設置是帶有 bspwm 的 Arch Linux,沒有桌面環境。我的大部分工作是在 urxvt / vim 中進行 Web 開發並使用 Chrome 進行檢查。

我不確定我是否理解為什麼該NOPASSWD選項本身不能滿足您的要求,但是如果您想要求快閃記憶體驅動器的存在,我可以想到一些幾乎可以滿足您的要求的東西。

這更像是一種解決方法,但是您可以創建一個本地管理使用者,例如superuser,並為該使用者提供無密碼sudo權限,即將以下行添加到您的/etc/sudoers文件中:

superuser ALL=(ALL) NOPASSWD:ALL

然後,您可以禁用密碼登錄並為該使用者配置僅密鑰 SSH 身份驗證,即執行passwd -l superuser並將以下節添加到您的/etc/ssh/sshd_config

Match user superuser
PasswordAuthentication no

然後為該使用者創建一個 SSH 密鑰對。將公鑰添加到/home/superuser/.ssh/authorized_keys您的快閃記憶體驅動器並將私鑰放在您的快閃記憶體驅動器上。然後,當您想使用該superuser帳戶時,請插入您的快閃記憶體驅動器並superuser使用您的私鑰 ssh 進入該帳戶。瞧!您現在擁有無密碼sudo的使用者。當然,完成後你仍然需要退出你的 shell 會話——拔掉快閃記憶體驅動器是不夠的。雖然我猜你也可以設置一個precommand 鉤子來檢查私鑰,如果它不存在(或者它無效),它會自動退出。

引用自:https://unix.stackexchange.com/questions/404565