如何从sudo'd程序中执行作为原始用户的命令?

时间:2012-05-28 03:16:37

标签: c unix sudo

我必须使用sudo来运行我的程序:

 sudo ./my_program

我正在尝试从我的程序运行git clone,但它尝试使用root用户的SSH密钥而不是我的。 有没有办法像最初调用我的程序的用户一样执行这个命令?

我想我能做到:

su - original_user -c "git --version"

但是如何计算原始用户的用户名?或者还有另一种优雅的解决方案吗?

2 个答案:

答案 0 :(得分:3)

sudo手册显示$SUDO_USER应该为您提供原始用户的用户名,$SUDO_UID会提供原始用户的UID。

答案 1 :(得分:0)

在从Web应用程序创建文件时,我在NAS上遇到了Samba问题。

在这种情况下,我检索了正在运行的进程,并确定哪个用户正在运行samba。 隔离该名称后,我拥有了正确的用户帐户。也许这对你的情况也有效?

在这种情况下,我想你需要过滤ps输出并查找你的程序名称。通过在bash上测试它是否有效。