有没有办法让应用程序在端口 80 上运行而不必被迫以 root 身份运行它?
我不想以 root 身份运行该进程,因为这不安全,我想使用端口 80。我不想在应用程序前面使用代理。
例如 Apache 以 root 身份启动并放弃特权,有没有办法在 Mono 中实现这一点?
对于上下文,我正在运行 ServiceStack,但我也在一般情况下询问。
有没有办法让应用程序在端口 80 上运行而不必被迫以 root 身份运行它?
我不想以 root 身份运行该进程,因为这不安全,我想使用端口 80。我不想在应用程序前面使用代理。
例如 Apache 以 root 身份启动并放弃特权,有没有办法在 Mono 中实现这一点?
对于上下文,我正在运行 ServiceStack,但我也在一般情况下询问。
好的,我终于使用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。
不,这是操作系统限制。低于 1024 的所有端口都是特权端口,进程必须具有 0 的有效 UID 才能绑定到它们。
我不确定如何在 Mono 中完成此操作,但是您对 Apache 的描述是做到这一点的方法。通常在绑定端口后会派生一个子进程。