单声道:是否有可能在没有root权限的端口上运行服务?

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

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

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

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

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

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

所以最后的命令看起来像这样:

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

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

在/ etc / authbind / byuser / 999:

 0.0.0.0,80-89 

底线是试图在单声道的环境中找到这个问题的答案只是徒劳 – 在搜索中简单地用"Java"代替"Mono" ,Java / Tomcat的解决方案也大多适用于单声道。

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

我不确定如何在Mono中完成这个任务,但是你描述Apache的方法就是这样做的。 在端口绑定之后,子进程通常是分叉的。