sudo 是否可以从 gnome-keyring 或类似设备读取密码

Kot*_*tte 3 fedora password sudo gnome-keyring

我目前在一堆脚本中大量使用 sudo,这变得有点麻烦,因为有些脚本不允许交互式输入(例如,Makefile)。

而不是完全禁用 sudo 密码,我认为如果可以使用 gnome-keyring 或一些类似的密钥环软件来记住密码会很好。这是一个好主意吗?是否可以?有什么更好的解决办法吗?

use*_*678 6

您所要求的听起来可行,结合和程序的-A选项。sudognome-keyring-query

基本上,如果您使用 option -A,而不是从 stdinsudo读取密码,而是从您可以使用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.
Run Code Online (Sandbox Code Playgroud)

这是您可以继续的方法(我刚刚尝试过,它有效)。

  1. 安装 gnome-keyring-query (如果你的发行版没有打包,你必须编译它-> upstream 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 -Asudo 代替。

话虽如此,请注意,如果您将密码保存在密钥环中并保持此密钥环处于打开状态,那么任何人都可以非常轻松地读取您的 sudo 密码,无论是使用 gnome-keyring-query 工具,还是只需启动 seahorse。所以要非常小心。