长话短说:我希望 Glassfish 监听端口 80,这样您在输入 url 时就不必指定端口,但 Linux 不允许在没有 root 的情况下使用低端口号,并且运行 glassfish 因为 root 存在安全风险。
解决这个问题的最佳方法是什么?制作某种例外,以便 glassfish 可以单独监听它,使用其他程序将请求从端口 80 转发到其他端口?也许有某种方法可以只授予 glassfish 使用任何端口的权限,而不需要实际授予它 root 权限?
答案1
解决这个问题的最佳方法是什么?
glassfish 本身给出的那个。
# 示例命令演示如何在“特殊”端口 < 1024 上运行 GlassFish # # iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 # iptables -t nat -A PREROUTING -p udp -m udp --dport 80 -j REDIRECT --to-ports 8080
是的,如果 glassfish 能够接收监听文件描述符,这样它就可以在类似的东西下运行,那就太好了s6-tcpserver
或由 systemd 激活套接字。然而,它并不是为了以这种方式运行而设计的。
进一步阅读
- 拜伦·内文斯 (2010-03-04)。 “如何允许 GlassFish V3 使用小于 1024 的端口”。在 Linux Ubuntu/Debian 上将 GlassFish V3 作为非 root 服务运行。甲骨文公司。
create-service
。 Oracle GlassFish 服务器参考手册。版本 3.1.2。start-domain
。 Oracle GlassFish 服务器参考手册。版本 3.1.2。
答案2
你可以使用 bash 的副本...
我的意思是你可以在你的一个$PATH
目录中制作一个单独的 bash 版本,并将其称为 bash1 或其他名称。
然后你可以做的是给它不同的权限,以便你可以运行玻璃鱼用 bash1 而不是 bash。
这意味着 tyat bash 将保持不变,并且您拥有自己单独的 bash 权限版本,例如玻璃鱼。唯一的缺点是,这意味着您必须将其仅限于某些程序和用户,否则整个系统可能会被破坏......
答案3
虽然“chroot”不再像以前那样被广泛使用,但它是一种可以提高必须以 root 权限运行的进程的安全性的工具。当您创建一个包含应用程序所需的所有文件的虚拟 / 文件夹时,需要一些额外的努力,包括库(静态链接的程序编译),这样,如果某个进程破坏了您的安全性,它将位于有限的沙箱中。显然,您删除了任何不需要的支持程序,例如编辑器和网络工具。
运行 bind/named 的首选方法之一是使用此方法,因此这可能是有关如何设置的一个很好的指南。