4

有没有办法让应用程序在端口 80 上运行而不必被迫以 root 身份运行它?

我不想以 root 身份运行该进程,因为这不安全,我想使用端口 80。我不想在应用程序前面使用代理。

例如 Apache 以 root 身份启动并放弃特权,有没有办法在 Mono 中实现这一点?

对于上下文,我正在运行 ServiceStack,但我也在一般情况下询问。

4

2 回答 2

7

好的,我终于使用authbind完成了这个

像魅力一样工作。唯一需要注意的是,您必须使用--deep开关,因为单声道实际上运行另一个进程。这是一个令人讨厌的问题,浪费了一个小时左右。

所以最终命令看起来像:

sudo -u myapp authbind --deep ./MyApp.exe

我使用了 authbind 的 by uid 方法,所以这是配置:

/etc/authbind/byuser/999:

0.0.0.0,80-89

重要的是,试图在Mono的上下文中找到这个问题的答案是徒劳的——只需在搜索中替换"Mono""Java",Java/Tomcat 的解决方案也主要适用于 Mono。

于 2013-09-30T16:18:43.970 回答
2

不,这是操作系统限制。低于 1024 的所有端口都是特权端口,进程必须具有 0 的有效 UID 才能绑定到它们。

我不确定如何在 Mono 中完成此操作,但是您对 Apache 的描述是做到这一点的方法。通常在绑定端口后会派生一个子进程。

于 2013-09-30T13:58:08.143 回答