博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
How to run Tomcat without root privileges? 常规用户使用tomcat的80端口
阅读量:6425 次
发布时间:2019-06-23

本文共 2677 字,大约阅读时间需要 8 分钟。

How to run Tomcat without root privileges?

1. The best way is to use jsvc, available as part of the  project.


2. One way is to put Apache httpd with mod_jk before your Tomcat servers, and use ports >=1024 in the Tomcat(s). However, if httpd is not needed for some other reason, this is the most inefficient approach.


3. Another method is to use SetUID scripts (assuming you have the capability) to do this. Here's how I do it.

Create a file called foo.c with this content (replace "/path/startupscript" with the tomcat startup script):

#include <unistd.h> #include <stdlib.h>

int main( int argc, char *argv[] ) {

  • if ( setuid( 0 ) != 0 ) perror( "setuid() error" ); printf( "Starting ${APPLICATION}\n" ); execl( "/bin/sh", "sh", "/path/startupscript", 0 ); return 1;

}

Run the following as root (replacing tmp with whatever you want the startup script to be and replacing XXXXX with whatever group you want to be able to start and stop tomcat:

gcc tmp.c -o tmp chown root:XXXXX tmp chmod ugo-rwx tmp chmod u+rwxs,g+rx tmp

Now members of the tomcat group should be able to start and stop tomcat. One caveat though, you need to ensure that that your tomcat startup script is not writable by anyone other than root, otherwise your users will be able to insert commands into the script and have them run as root (very big security hole).


4. - A another way is to use Iptables to redirect Port 80 and 443 to user ports (>1024)

* /sbin/iptables -A FORWARD -p tcp --destination-port 443 -j ACCEPT

* /sbin/iptables -t nat -A PREROUTING -j REDIRECT -p tcp --destination-port 443 --to-ports 8443

* /sbin/iptables -A FORWARD -p tcp --destination-port 80 -j ACCEPT

* /sbin/iptables -t nat -A PREROUTING -j REDIRECT -p tcp --destination-port 80 --to-ports 8080

/sbin/iptables-save or /etc/init.d/iptables save


BSD-based Unix systems such as Mac OS X use a tool similar to iptables, called ipfw (for Internet Protocol Fire Wall). This tool is similar in that it watches all network packets go by, and can apply rules to affect those packets, such as "port-forwarding" from port 80 to some other port such as Tomcat's default 8080. The syntax of the rules is different than iptables, but the same idea. For more info, google and read the man page. Here is one possible rule to do the port-forwarding:

sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to any 80 in

5. Yet another way is to use authbind (part of Debian- and CentOS based distributions) which allows a program that would normally require superuser privileges to access privileged network services to run as a non-privileged user. The article at  discusses how to install and configure the authbind package with Tomcat 6.0 on Linux.

 

转载地址:http://nnyga.baihongyu.com/

你可能感兴趣的文章
局域网交换机灯同时闪动
查看>>
Entity Framework 4 in Action读书笔记——第四章:使用LINQ to Entities查询:继承查询...
查看>>
mail服务器中sendmail的搭建用法
查看>>
谈怎样才能成为优秀的前端工程师
查看>>
CSS如何居中一个float浮动元素?
查看>>
查看Windows服务器的CPU详细信息
查看>>
脚本备份smgpSendWriteFile
查看>>
网络的理解
查看>>
抛丸清理机的的安装步骤
查看>>
xib为view添加边框
查看>>
集合问题的总结
查看>>
集合的由来及集合继承体系图-学习笔记
查看>>
python--目录学习
查看>>
Oracle 表文件,表空间,用户,的创建 和删除,解锁用户
查看>>
cisco设备vty tacacs+认证配置
查看>>
浅析点对点(End-to-End)的场景文字识别
查看>>
Linux运维工程师面试题第六套
查看>>
2011.11.24
查看>>
Markdown 学习笔记
查看>>
『左偏树 Leftist Tree』
查看>>