【问题标题】:How to access user's ssh keys from the program that is run with sudo?如何从使用 sudo 运行的程序中访问用户的 ssh 密钥?
【发布时间】:2011-01-04 09:15:51
【问题描述】:

困境:我正在开发的 Linux 程序应该:

  1. 通过 git+ssh:// 协议(使用 Git)获取“包”。
  2. 在系统中安装那个“包”。

要让 git+ssh 工作,Git 需要查看我的密钥。

对于“包”安装,程序必须具有超级用户权限。

限制:程序不应自行提升权限(调用 sudo)。用户必须使用 sudo 显式调用它。 (让我们忽略用户在开始以 root 身份登录时运行程序的情况——假设他将正确设置密钥。)

那么,问题是:如何使用 sudo 调用的程序中的用户密钥进行 ssh 访问?

【问题讨论】:

    标签: linux git ssh sudo privilege-elevation


    【解决方案1】:

    使用 -i identity_file ssh 参数。要告诉 git 使用正确的命令,您应该将 GIT_SSH 变量设置为将调用 ssh -i "$@" 的文件。

    如果你不能这样做,那么你应该在执行 git pull 命令时放弃特权。

    sudo -u <original_user> git fetch git+ssh:// 
    

    您可以使用 ${SUDO_USER} 环境变量来找出原始用户是谁。

    【讨论】:

    • 不,这行不通。用户可能设置了 ssh 代理,此外,程序无法知道身份文件的名称(用户甚至可能没有)。
    • 那么你应该在执行 git pull 命令时放弃权限。 sudo -u git fetch git+ssh://
    • 好主意。有没有办法知道用户的名字?
    • 谷歌搜索:${SUDO_USER} 环境变量。请使用此信息添加另一个答案,我会接受。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-02-09
    • 2013-06-08
    • 2019-02-12
    • 2021-10-19
    • 2021-05-13
    • 1970-01-01
    • 2020-01-15
    • 2013-05-16
    相关资源
    最近更新 更多