【发布时间】:2025-12-15 23:00:01
【问题描述】:
我必须使用sudo 来运行我的程序:
sudo ./my_program
我正在尝试从我的程序运行git clone,但它尝试使用 root 用户的 SSH 密钥而不是我的。
有没有办法以最初调用我的程序的用户身份执行这个命令?
我想我能做到:
su - original_user -c "git --version"
但是我如何找出原始用户的用户名?或者还有其他优雅的解决方案吗?
【问题讨论】:
我必须使用sudo 来运行我的程序:
sudo ./my_program
我正在尝试从我的程序运行git clone,但它尝试使用 root 用户的 SSH 密钥而不是我的。
有没有办法以最初调用我的程序的用户身份执行这个命令?
我想我能做到:
su - original_user -c "git --version"
但是我如何找出原始用户的用户名?或者还有其他优雅的解决方案吗?
【问题讨论】:
sudo 手册显示 $SUDO_USER 应该给你原始用户的用户名,$SUDO_UID 给你原始用户的 UID。
【讨论】:
$SUDO_UID原用户的UID。
在从网络应用程序创建文件时,我在 NAS 上使用 Samba 时遇到了这个问题。
在这种情况下,我检索了正在运行的进程并确定了哪个用户正在运行 samba。 隔离该名称后,我拥有了正确的用户帐户。也许这也适用于您的情况?
在这种情况下,我想您需要过滤 ps 输出并查找程序的名称。通过在 bash 上测试它是否有效。
【讨论】: