authbind start tomcat services as user with less that 1024 ports. linux常规用户使用tomcat的80端口
Start tomcat services using authbind this will allow user to start ports less than 1024 we do not need to redirect or iptables.
apt-get install authbind -y
To install Authbind software
chmod -R 755 /etc/authbind
group should be user group.
chown -Rh root:group /etc/authbind
After that run the below commands
cd /etc/authbind/byuid
As an example lets imagne user id is 2000 you can use your user id number
echo '0.0.0.0/0:1,1023' > 2000
That file should be own by user and group.
chown : 2000
chmod 700 2000
Add the below line in tomcat startup file $CATALINA_BASE/startup.sh
export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
For Starting tomcat using Authbind service startup.sh
Comment the below line
#$CATALINA_HOME/bin/startup.sh
Add This End as the end of the file
AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c "
$AUTHBIND_COMMAND $CATALINA_HOME/bin/startup.sh
now you should be able to start tomcat services as user with less that 1024 ports.
方法二:
http://serverfault.com/questions/615422/tomcat-cannot-change-port-8080-to-80
方法三:
Running Tomcat on port 80 on Linux

By default Tomcat's HTTP connector listens on port 8080. Changing to port 80 in Linux environment can be quite a tricky issue, since by default listening on any port under 1024 require a privileged user, and for security considerations it is not recommended to run Tomcat with elevated permissions. This article discusses how to use authbind to achieve this; it also describes the way all this configuration can be automated for the sake of the creation of a script which can be used to initialize a freshly installed Linux instance. This is especially advantageous on Amazon EC2, where we can use this init-script to initialize a fresh instance just launched from an AMI; and indeed, for the sake of this article Amazon's "Amazon Linux Image 1.0" was used for testing. Please note that this is a CentOS 5-based linux distribution, for other distributions there are slight changes, like replacing "sudo yum install tomcat6" with "sudo apt-get install tomcat6" on Debian-based systems like Ubuntu.
In the end of the article, all the commands are summarized to facilitate one-step configuration.
Installing Tomcat
We’ll need the tomcat6 package to run Tomcat’s core components, as well as the tomcat6-admin-webapps package since we’ll use Tomcat’s Manager Application for application deployments, either thru Maven’s Cargo component or thru the web-browser. Since we’ll compile the authbind application from its sources, we’ll also need gcc, the GNU C Compiler package which contains all components to build an application on Linux. To install all this, grab a terminal and execute:
sudo yum -y install tomcat6 tomcat6-admin-webapps gcc
Usually a web server is started automatically on system boot. This can be achieved by
sudo /sbin/chkconfig --levels 235 tomcat6 on
Listening on ports<1024 in Linux with an unprivileged user
There are more options to achieve this:
- By using authbind which authorizes specific users to specific ports under 1024
- By using Jsvc, a set of libraries and applications for making Java applications run on UNIX more easily (Jsvc allows Tomcat application to perform some privileged operations as root (e.g. bind to a port < 1024), and then switch identity to a non-privileged user.)
- By configuring iptables to re-route the packets from port 80 to 8080
This article describes the authbind approach. But first, let's tell Tomcat to listen on port 80 instead of 8080.
Changing Tomcat's default HTTP port
The default HTTP port is defined in /etc/tomcat6/server.xml:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
We need to change this default port to 80 in server.xml. Either replace by hand, or automatically: to replace the occurrences of port=”8080” to port=”80”, execute the following script:
sudo sed -i 's/port\=\"8080\"/port\=\"80\"/' /etc/tomcat6/server.xml
The same for port 8443, which will be replaced with port 443:
sudo sed -i 's/port\=\"8443\"/port\=\"443\"/' /etc/tomcat6/server.xml
We'll start Tomcat with authbind. This can be achieved by changing Tomcat's init-script in /etc/init.d, replacing the line
TOMCAT_SCRIPT="/usr/sbin/tomcat6"
with
TOMCAT_SCRIPT="exec authbind --deep /usr/sbin/tomcat6"
Again, it can be automated like this:
sudo sed -i 's/TOMCAT_SCRIPT=\"\/usr\/sbin\/tomcat6\"/TOMCAT_SCRIPT=\"exec authbind --deep \/usr\/sbin\/tomcat6\"/' /etc/init.d/tomcat6
We have to tell Tomcat to use the IPv4 stack by default. This can be done by appending the line CATALINA_OPTS="-Djava.net.preferIPv4Stack=true" to /etc/tomcat6/tomcat6.conf:
sudo sed -i '$ a\CATALINA_OPTS=\"-Djava\.net\.preferIPv4Stack=true\"\n' /etc/tomcat6/tomcat6.conf
Installing and configuring authbind
Authbind is installed the usual way, with the help of gcc and make. Please note: For this step to succeed, the gcc package is needed. It is already installed with the command sudo yum install gccearlier, when tomcat was installed.
cd ~fetch http://ftp.debian.org/debian/pool/main/a/authbind/authbind_2.1.1.tar.gztar xvzf authbind_2.1.1.tar.gzcd authbind-2.1.1makesudo make install
Authbind is configured with some special files, for which we can assign our arbitrary permissions for the users we want to give access to. Since Tomcat is running with the Tomcat user, we'll tell authbind to allow connections to the HTTP port 80 and the HTTPS port 443 for this account:
sudo touch /etc/authbind/byport/80sudo chmod 500 /etc/authbind/byport/80sudo chown tomcat /etc/authbind/byport/80sudo touch /etc/authbind/byport/443sudo chmod 500 /etc/authbind/byport/443sudo chown tomcat /etc/authbind/byport/443
For the changes to take effect, Tomcat has to be restarted:
sudo /etc/init.d/tomcat6 restart
To see if there is any error, the tomcat log can be consulted:
less -S /var/log/tomcat6/catalina.out
The whole script
Here is the whole script which automates all this:
sudo yum -y install tomcat6 tomcat6-admin-webapps gcc sudo sed -i 's/port\=\"8080\"/port\=\"80\"/' /etc/tomcat6/server.xmlsudo sed -i 's/port\=\"8443\"/port\=\"443\"/' /etc/tomcat6/server.xmlsudo sed -i 's/TOMCAT_SCRIPT=\"\/usr\/sbin\/tomcat6\"/TOMCAT_SCRIPT=\"exec authbind --deep \/usr\/sbin\/tomcat6\"/' /etc/init.d/tomcat6sudo sed -i '$ a\CATALINA_OPTS=\"-Djava\.net\.preferIPv4Stack=true\"\n' /etc/tomcat6/tomcat6.confcd ~fetch http://ftp.debian.org/debian/pool/main/a/authbind/authbind_2.1.1.tar.gztar xvzf authbind_2.1.1.tar.gzcd authbind-2.1.1makesudo make install sudo touch /etc/authbind/byport/80sudo chmod 500 /etc/authbind/byport/80sudo chown tomcat /etc/authbind/byport/80sudo touch /etc/authbind/byport/443sudo chmod 500 /etc/authbind/byport/443sudo chown tomcat /etc/authbind/byport/443sudo /sbin/chkconfig --levels 235 tomcat6 onsudo /etc/init.d/tomcat6 restartcd ~References: http://en.wikipedia.org/wiki/Sed http://en.wikipedia.org/wiki/Grep http://www.unix.com/unix-desktop-dummies-questions-answers/36604-append-line-last-line-file.html http://pwet.fr/man/linux/commandes/authbind http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-boot-init-shutdown-sysv.html
http://netthink.com/?p=362
authbind start tomcat services as user with less that 1024 ports. linux常规用户使用tomcat的80端口的更多相关文章
- Jsvc安装,配置 常规用户使用tomcat的80端口
Jsvc安装 一.下载安装包,地址如下: http://commons.apache.org/proper/commonsdaemon/download_daemon.cgi 二.安装步骤,参考链接 ...
- How to run Tomcat without root privileges? 常规用户使用tomcat的80端口
How to run Tomcat without root privileges? 1. The best way is to use jsvc, available as part of the ...
- IIS和tomcat共用80端口
IIS和tomcat共用80端口 很多机器都需要同时使用tomcat和iis两个服务器以部署不同的网站,而解决共用80端口的问题也经常遇到,今天实际操作了一回,以下是具体步骤: 实现tomcat和ii ...
- linux系统非ROOT用户80端口不能启动tomcat问题的变通办法——通过Iptables端口转发
2010-07-17 13:21:42 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{ ...
- IIS7和Tomcat7整合,即IIS7和Tomcat共用80端口
IIS7和Tomcat7整合,即IIS7和Tomcat共用80端口 背景: 最近公司有一个项目要上线,需要用到iis和tomcat整合,共用80端口.由于公司的数据都非常重要,只通过端口映射到外网的8 ...
- Ubuntu下Tomcat绑定80端口(zz)
Ubuntu下Tomcat绑定80端口 来源:本站转载 作者:佚名 时间:2011-02-22 TAG: 工作环境迁移到了Ubuntu,很多东西发生了变化,比如原先配置tomcat端口.只需要配置se ...
- Linux 笔记 #04# Installing Tomcat 8 on Debian
失败一 ※ 失败二 ※ 失败三 ※ 完 1- 确认机型: root@iZwz:~# lsb_release -a LSB Version: core-2.0-amd64:core-2.0-noarc ...
- ubuntu下Tomcat绑定80端口
转载自:https://www.2cto.com/os/201102/84081.html 工作环境迁移到了Ubuntu,很多东西发生了变化,比如原先配置tomcat端口.只需要配置server. ...
- Tomcat配置域名、ip访问及解决80端口冲突
1.先在tomcat下的conf下找到server.xml文件,用记事本打开后,首先对端口号进行修改,以前一直以为8080是默认的端口号,其实默认的端口号是80 <Connector port= ...
随机推荐
- Hadoop生态圈技术图谱
当下Hadoop已经成长为一个庞大的体系,貌似只要和海量数据相关的,没有哪个领域缺少Hadoop的身影,下面是一个Hadoop生态系统的图谱,详细的列举了在Hadoop这个生态系统中出现的各种数据工具 ...
- Java Hibernate 之 Session 状态
Session接口是Hibernate向程序提供操纵数据库的最主要接口,是单线程对象,它提供了基本的保存.更新.删除和查询方法.它有一个缓存,保存了持久化对象,当清理缓存时,按照这些持久化对象同步更新 ...
- JS-string内置对象
1.charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码. strObj.charCodeAt(index) 说明: index将被处理字符的从零开始计数的编号.有效值为0到字符 ...
- PHP字符串左边补0,字符串右边补0
概述:项目中经常会使用到在一串编码左边.右边甚至中间自动填充制定字符如"0" 并且制定填充后的字符串长度. 函数str_pad:该函数返回 input 被从左端.右端或者同时两端被 ...
- Odoo “坑” 系列之 XML中的布尔类型
在Odoo中试图通过XML方式更新某条Record的值,却意外发现根本不能更新,经查,对于XML中Boolean类型的字段,更新的方式应该采用eval的方式.
- lesson5:利用jmeter来压测消息队列(activemq)
本文讲述了利用jmeter来压测消息队列,其中消息队列采用apache的activemq,jmeter本身是支持符合jms标准消息队列的压测,由于jmeter的官方sampler配置比较复杂,本文直接 ...
- Wi-Fi漫游的工作原理
Wi-Fi网络的一个极其重要的特点就是移动性.例如,一个人可以在使用Wi-Fi电话进行通话或是从服务器上下载大数据量的文件时穿过一幢建筑物.用户设备内部的Wi-Fi无线电可以从一个接入点漫游至另一个接 ...
- [置顶] 对于最新的Android病毒,Smack完全可以抵御
我写的有关Smack和Android系统结合的技术博客,希望有志之士可以参透其中奥妙,Smack作为Linux内核安全模块,已经可以移植到Android系统中,如果大家弄清我写的Smack安全策略,可 ...
- Intent MIME 打开各种类型的文件
使用 public class MainActivity extends ListActivity { public static final String path = Environmen ...
- OpenSuse如何共享目录
如何在SUSE Linux 建立共享文件夹 1./etc/samba/smb.conf 打开配置文档 2.在文档的最后加上共享的文档夹/opt,下面是示例. nte143:/etc/samba # v ...