servicestack,C#,Linux,Mono,servicestack" /> servicestack,C#,Linux,Mono,servicestack" />

C# Mono:是否可以在没有根的情况下在端口80上运行服务?

C# Mono:是否可以在没有根的情况下在端口80上运行服务?,c#,linux,mono,servicestack,C#,Linux,Mono,servicestack,有没有办法让应用程序在端口80上运行,而不必强制以root用户身份运行 我不想以root用户身份运行进程,因为这是不安全的,我想使用端口80。我不想在应用程序前面使用代理 例如,Apache以root开始并放弃特权,有没有办法在Mono中实现这一点 对于上下文,我正在运行ServiceStack,但我也在一般情况下询问。不,这是操作系统的限制。1024以下的所有端口都是特权端口,进程必须具有有效的UID 0才能绑定到它们 我不确定如何在Mono中实现这一点,但您所描述的Apache就是实现这一点

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

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

例如,Apache以root开始并放弃特权,有没有办法在Mono中实现这一点


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

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


我不确定如何在Mono中实现这一点,但您所描述的Apache就是实现这一点的方法。通常,子进程在端口绑定到后分叉

好的,我终于用

工作得很有魅力。唯一需要注意的是,您必须使用
--deep
开关,因为mono实际上运行另一个进程。那是一个浪费了一个小时左右的恼人的骗局

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

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

我使用了authbind的by-uid方法,因此以下是配置:

/etc/authbind/byuser/999:

0.0.0.0,80-89

底线是,试图仅在Mono的环境中找到这个问题的答案是徒劳的-在搜索中用
“Java”
替换
“Mono”
,Java/Tomcat的解决方案也大多适用于Mono。

是的,这就是我的意思,我已经使用Linux很长时间了——我知道它的限制。我想问的是,这是否可以在Mono中实现。在Java/Tomcat中,过去我们通常只在端口8080上运行,但是如果我没记错的话,如果您真的想这样做的话,有几种解决方案。所以我问的是mono.Hmm,我刚刚想起其中一个解决方案(谷歌搜索Java)是在iptables中将端口80重定向到端口8080。所以我想这是一个答案。