1

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

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

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

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

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

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

4

1 回答 1

4

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

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

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

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

于 2011-01-04T09:27:11.207 回答