在节目中“拒绝”sudo特权

时间:2012-06-12 12:37:18

标签: sudo

所以我正在编写一个即将发布的软件包管理器。请考虑以下代码流:

# Some code that needs root privalages. Database syncing, etc.
...
...
# Building packages. *Does not require root.* 
# In fact, this is a call to a child process through the shell and it will complain if called by root.
...
...
# Copying built packages to root-owned locations. Needs root.
# Installing packages. Needs root.

我希望能够最初使用sudo运行程序,因为上面的复制部分是在本机代码中完成的,如果整个程序没有以root权限运行,则会失败。然而,构建过程需要以root身份完成。我的问题实质上是,在调用构建建筑物的子进程之前,是否有办法“拒绝”或“停止”root权限?它需要以这样一种方式,当控制返回到父级时,根状态仍然有效,实际安装不受阻碍。

请提前感谢。

此外,here is the repo是有兴趣的人。

1 个答案:

答案 0 :(得分:0)

因此,当使用sudo运行程序时,会创建环境变量SUDO_USER。通过阅读,我可以使用su -c运行子进程。