有没有办法让应用程序在端口80上运行而不必强制以root身份运行它?
我不想以root身份运行该进程,因为这是不安全的,我想使用端口80.我不想在应用程序前使用代理。
例如,Apache以root身份启动并删除权限,有没有办法在Mono中实现这一点?对于上下文我正在运行ServiceStack,但我也一般都在询问。
答案 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的描述就是实现它的方法。通常在绑定端口后分叉子进程。