如何让 Tomcat 9 与 authbind 一起使用以绑定到端口 80?

ARX*_*ARX 3 tomcat

不幸的是,Tomcat 对 authbind 的使用没有记录,这使得在不以 root 身份运行时将 Tomcat 9 绑定到端口 80 是一个挑战。我在 Ubuntu 16.04 上尝试了以下操作:

1) 在 server.xml 中,将 <Connector> 中的属性端口更改为 80。

2)安装authbind。

3) 将 AUTHBIND=yes 添加到 setenv.sh

4) 创建文件 /etc/authbind/byport/80 具有 777 权限和所有者 tomcat。

如果我startup.sh以 root 身份运行,它工作正常。但是,如果我以非特权用户“tomcat”的身份执行此操作,脚本将显示“Tomcat 已启动”且没有错误消息。但是浏览器显示“无法连接”。

如果我运行authbind startup.sh,结果是一样的。启动脚本中缺少错误消息使我对问题的原因一无所知。

可能的相关信息:tomcat 是从 zip 文件安装的,而不是从 repo 安装的。

关于使这项工作起作用的技巧,我还有什么其他的事情吗?这在官方文档中严重缺失。

小智 7

从 zip 安装 Tomcat 是可以的。

我要求您按照以下步骤在 80 上配置 authbind 并运行 tomcat,我认为您已经安装了 authbind 和 tomcat 9。

  1. 使端口 80 可用于 authbind(您需要是 root):

触摸 /etc/authbind/byport/80; chmod 500 /etc/authbind/byport/80; chown tomcat9 /etc/authbind/byport/80

*将 tomcat9 视为 tomcat 的非 root 用户

  1. 使用以下内容创建文件 TOMCAT/bin/setenv.sh:

CATALINA_OPTS="-Djava.net.preferIPv4Stack=true"

  1. 更改“/usr/share/tomcat7/bin/startup.sh”

旧 : exec "$PRGDIR"/"$EXECUTABLE" start "$@

新:exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"

  1. 在 TOMCAT/conf/server.xml 文件中进行更改以将端口从 8080 更改为 80

在 80 上运行 tomcat 的另一种解决方案是使用 iptables。

须藤/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

如果您有任何疑问或疑问,请告诉我,我可以提供帮助。

谢谢,尼桑特