如何在 Debian 中更改进程的所有权?

如何在 Debian 中更改进程的所有权?

我有一个以 root 身份运行的进程(比如说一个网络服务器),并且我希望它以非 root 身份运行。

有没有办法将进程的所有权从 root 更改为非特权用户?

我正在一台 Debian 机器上工作。

谢谢!

答案1

没有任何明智的通用方法可以从进程外部更改正在运行的进程的所有权。进程可以更改其自己的使用 setuid(2) 系统调用将所有权从 root 转移到非 root。如果所涉及的 Web 服务器是 Apache,您可以通过编辑 /etc/apache2/envvars 并重新启动它来配置它以哪些用户身份运行。

答案2

由于 Web 服务器需要监听端口 80 或 443,因此需要以 root 身份启动才能绑定到这些端口。如果程序本身不支持以非 root 用户身份运行,则无法强制执行。

另一种方法是让它监听大于 1024 的端口并使用重定向流量,iptables但这非常“黑客化”。

相关内容