Fedora
sudo 是否可以從 gnome-keyring 或類似設備中讀取密碼
我目前在一堆腳本中大量使用 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.
這是您可以繼續進行的方法(我剛剛嘗試過,它有效)。
- 安裝 gnome-keyring-query (如果你的發行版沒有打包它,你必須編譯它-> 上游 url)
- 將您的 sudo 密碼保存在 gnome-keyring 中
- 您應該能夠使用以下內容從密鑰環中檢索密碼:
gnome-keyring-query get sudo
- 將此命令另存為腳本(例如在 /usr/bin/sudo_askpass 中)並確保它可以使用 chmod 執行
export SUDO_ASKPASS=/usr/bin/sudo_askpass
- 使用
sudo -A
而不是 sudo。話雖如此,請注意,如果您將密碼保存在密鑰環中並保持此密鑰環處於打開狀態,那麼任何人都可以使用此 gnome-keyring-query 工具或僅通過啟動 seahorse 輕鬆讀取您的 sudo 密碼。所以要非常小心。