单声道:是否可以在没有root的情况下在端口80上运行服务?

时间:2013-09-30 13:50:46

标签: c# linux mono servicestack

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

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

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

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

2 个答案:

答案 0 :(得分:7)

好的,我终于使用authbind

完成了这项工作

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

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

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

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

的/ etc / authbind / byuser / 999:

0.0.0.0,80-89

底线是尝试在 Mono 的上下文中找到此问题的答案,这是徒劳的 - 只需将"Mono"替换为{{1}在你的搜索中,Java / Tomcat的解决方案也适用于Mono。

答案 1 :(得分:2)

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

我不确定如何在Mono中完成此操作,但您对Apache的描述就是实现它的方法。通常在绑定端口后分叉子进程。