可以使用密鑰文件作為 sudo 的密碼嗎?
語境
我喜歡在我的筆記型電腦上公開工作,但我也喜歡在沒有密碼的情況下使用 sudo。根據我現在所知道的,我會
NOPASSWD
在我的文件中使用該選項sudoers
,但當然任何人都可以根據需要使用 sudo。我想到的一個重要想法****是存在鎖定程序。 但是,我更喜歡使用快閃記憶體驅動器(並且僅將其用於 sudo),因為(1)它更快,(2)比輸入我的密碼更容易,並且(3)我不關心人們訪問我的內容或做壞事事情:筆記型電腦會在其他人周圍公開,我筆記型電腦上唯一的智慧財產權是一個非常基本的 Angular 項目。
此外,我自己和其他人可能希望防止在未執行 X 或 Wayland 環境的電腦上濫用 sudo。我目前的工作需要一個現代的網路瀏覽器,但如果我有機會不使用 X 而只使用多路復用器,我會這樣做——我的筆記型電腦有點舊而且速度慢。
問題
我想做的是將密鑰文件放在快閃記憶體驅動器上,當我在筆記型電腦旁時只需插入快閃記憶體驅動器,當我離開它時將其取出。
所以這是我從這個問題中得出的三個問題:
- 這可能與 sudo 一樣嗎?
- 如果沒有,我能寫一個程序讓我這樣做嗎?
- 如果是這樣,哪種語言可能最適合編寫此程序?
(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 鉤子來檢查私鑰,如果它不存在(或者它無效),它會自動退出。