所以我正在编写一个接近初始版本的包管理器。考虑以下代码流:
# 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身份完成。我的问题本质上是,在调用进行构建的子进程之前,是否有办法“拒绝”或“停止”根权限?它需要采用这样一种方式,即当控制权返回父级时,根状态仍然有效,以便实际安装不受阻碍地进行。
请提前致谢。
此外,这里是任何人感兴趣的回购。