Fedora

sudo 是否可以從 gnome-keyring 或類似設備中讀取密碼

  • June 17, 2021

我目前在一堆腳本中大量使用 sudo,這變得有點麻煩,因為某些腳本不允許互動式輸入(例如 Makefiles)。

而不是完全禁用 sudo 密碼,我認為如果可以使用 gnome-keyring 或一些類似的密鑰環軟體來記住密碼會很好。這是一個好主意嗎?可能嗎?有更好的解決方案嗎?

sudo 提供了一個超時選項。

/etc/sudoers

Defaults:username timestamp_timeout=time_in_minutes

如果您想保留 root 權限,只需以 root 身份啟動您的腳本。我同意,這不是最佳選擇,但這實際上是您已經在做的事情。

相反,我寧願將所有可以在沒有root權限的情況下完成的事情和那些請求root權限的事情組合在一起,並在兩個不同的時間啟動它們……這通常是這樣做的:

./configure
make
sudo make install

順便說一句,如果你在一個帶有 Xorg 的盒子上,你可以使用 gksudo 而不是 sudo。但同樣,將“sudo”隱藏在腳本中並不是一個好習慣。

你所要求的聽起來是可行的,結合-A選項sudo和程序gnome-keyring-query

基本上,如果您使用選項-A,而不是從標準輸入讀取密碼,而是從您可以使用環境變數sudo指定的外部程序讀取密碼。SUDO_ASKPASS

這個外部程序可以是gnome-keyring-query一個用於儲存/獲取密碼的命令行工具gnome-keyring。這裡是幫助gnome-keyring-query

Usage:
   gnome-keyring-query <mode> <name>
Parameters:
   mode     - either 'get' or 'set' (without quotes)
   name     - a name to identify the key
Notes:
   If mode is 'get', then the password is dumped to stdout.
   If mode is 'set', then the password is read from stdin.

這是您可以繼續進行的方法(我剛剛嘗試過,它有效)。

  1. 安裝 gnome-keyring-query (如果你的發行版沒有打包它,你必須編譯它-> 上游 url
  2. 將您的 sudo 密碼保存在 gnome-keyring 中
  3. 您應該能夠使用以下內容從密鑰環中檢索密碼:gnome-keyring-query get sudo
  4. 將此命令另存為腳本(例如在 /usr/bin/sudo_askpass 中)並確保它可以使用 chmod 執行
  5. export SUDO_ASKPASS=/usr/bin/sudo_askpass
  6. 使用sudo -A而不是 sudo。

話雖如此,請注意,如果您將密碼保存在密鑰環中並保持此密鑰環處於打開狀態,那麼任何人都可以使用此 gnome-keyring-query 工具或僅通過啟動 seahorse 輕鬆讀取您的 sudo 密碼。所以要非常小心。

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