Linux下tomcat / JAR无法使用80端口问题

对于部分linux,例如centos release 6.6,默认情况下,1024以下的端口,例如80是只允许root用户使用的,非root用户没有权限。

因此就造成了,如果使用service方式启停tomcat,采用非root用户进行deamon一个实例时,tomcat没有权限启动80端口。

此时,我们只能使用8080端口,如果一定要使用80端口,可以的方式是:

1、停止iptables防火墙(不推荐)

2、通过iptables配置,进行端口重定向,将80指向8080,命令如下:

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
iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A OUTPUT -p udp -d 127.0.0.1 -m udp --dport 80 -j REDIRECT --to-ports 8080

当不需要的时候,可以清除:

iptables -t nat -F PREROUTING
iptables -t nat -F OUTPUT

3、如果需要删除指定的一条配置,可以使用如下命令:

iptables -t nat -L -n --line-numbers

该命令将会列出所有的配置信息

找到需要删除的记录,使用如下命令进行删除

iptables -t nat -D PREROUTING 3

注意:PREROUTING代表chain配置类型,3代表配置记录前面的序号。

4、由于执行了上面的命令,默认情况配置只是临时有效的(即重启前都是有效的,但是重启后就丢失配置了。)

可以使用如下命令进行保存配置,使得重启后仍然有效

iptables-save

列出当前的配置项,确认没有问题后,执行下面命令保存

service iptables save

执行该命令后,就会将配置保存至配置文件中。(该命令在CentOS下正常,因为已经加入到service服务中了,如果是其他的系统需要使用其他方式)


另一种方案,通过给非root用户一定的sudo权限,启动时,以root用户的身份执行某个命令,保证tomcat启动时能够正常使用80端口。

1、创建非root用户(比如用来给jenkins进行CI用的,只能拥有推送文件,重启tomcat等少数权限)

useradd -m jenkins
passwd jenkins

2、配置tomcat启动服务或者编写脚本(通过脚本控制文件的处理和tomcat服务的启停)(以root用户身份进行)

3、授予jenkins用户特定的sudo命令权限

打开(或者创建)权限文件:/etc/sudoers.d/jenkins

jenkins ALL= NOPASSWD: /home/jenkins/shell/deploy.sh

说明:授予jenkins执行/home/jenkins/shell/deploy.sh的sudo权限(注意:deploy.sh文件,如果是root用户创建,则一定不能让非root用户拥有修改权限,否则非root用户修改sh文件后,再通过sudo命令执行该文件,就突破了权限限制)

说明2:此处授权jenkins用户以NOPASSWD方式执行sudo命令

4、jenkins用户下, 通过sudo /home/jenkins/shell/deploy.sh来执行命令即可


在上面的sudo方案中,遇到一种更特殊的场景。

上面的sudo执行命令,默认会议root身份执行。如果我们需要通过sudo切换到另一个身份,比如用户USERA,应该如何处理呢?

其实也很简单:

首先,权限文件需要改成:jenkins ALL=(USERA) NOPASSWD: /home/jenkins/shell/deploy.sh

代表的是,jenkins 用户,可以以USERA的身份免密执行deploy.sh脚本

同时,在jenkins用户下,执行命令需要改成:

sudo -u USERA /home/jenkins/shell/deploy.sh

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金融码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值