linux下非root用户运行tomcat

所属分类: 脚本专栏 / linux shell 阅读数: 648
收藏 0 赞 0 分享

# 前言:为什么要使用非root用户运行tomcat

root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限。

这意味着你的任何一个页面脚本(html/js)都具有root权限,所以可以轻易地用页面脚本 修改整个硬盘里的文件!

所以最好不要使用root启动tomcat。

# 正文:非root用户运行tomcat

## tomcat安装

略... 本文安装目录为 /opt/tomcat8

## 创建用户

# 创建用户组 dev
groupadd dev

# 创建用户 tomcat


useradd -g dev -s /usr/sbin/nologin tomcat

说明:-s /usr/sbin/nologin 禁止该用户登录。

也可以在用户创建之后执行

useradd -g dev
usermod -s | --shell /usr/sbin/nologin username

## tomcat配置

### 编译安装服务守护程序
#
cd /opt/tomcat8/bin/
# 解压
tar vzxf commons-daemon-native.tar.gz
# 
cd /opt/tomcat8/bin/commons-daemon-1.0.15-native-src/unix/
# 安装前的配置 及校验
./configure
# 若未配置$java_home需指定JDK目录
./configure --with-java=/opt/jdk_1.7

如果出现如下错误提示,说明未设置JAVA_HOME变量

*** Java compilation tools ***
checking for JDK location... configure: error: Java Home not defined. Rerun with --with-java=... parameter

如果看到以下信息,就可以编译/安装了

*** All done ***
Now you can issue "make"

# 编译/安装
make
# 执行make后会生成一个jsvc文件,将其复制到tomcat的bin目录
cp jsvc /opt/tomcat8/bin

### 修改启动脚本文件

vi /opt/tomcat8/bin/daemon.sh

找到如下内容

test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat
# Set JAVA_HOME to working JDK or JRE
# JAVA_HOME=/opt/jdk-1.6.0.22

修改TOMCAT_USER=tomcat,"tomcat"为运行tomcat的用户,本文创建的用户即为tomcat,所以不用修改。

去除JAVA_HOME前的注释(即“#”号),并设置为JDK的所在目录(/opt/jdk_1.7)。

## 更改tomcat目录权限

# 更改文件所有者
chown -R tomcat:dev /opt/tomcat8
# 赋予用户执行权
chmod a+x /opt/tomcat8/bin/daemon.sh

# 附:tomcat命令

# 后台运行
/opt/tomcat/bin/daemon.sh start
# 前台运行
/opt/tomcat/bin/daemon.sh run
# 停止
/opt/tomcat/bin/daemon.sh stop

# 创建符号链接/软连接
ln -s /opt/tomcat8/bin/daemon.sh /etc/init.d/tomcat8
# tomcat8添加至系统服务
chkconfig –-add tomcat8
#启动/停止
service tomcat8 start/stop

总结

以上所述是小编给大家介绍的linux下非root用户运行tomcat,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言!

更多精彩内容其他人还在看

Shell脚本中计算字符串长度的5种方法

这篇文章主要介绍了Shell脚本中计算字符串长度的5种方法,来自于个人Shell脚本长期的开发经验,需要的朋友可以参考下
收藏 0 赞 0 分享

Shell脚本实现把进程负载均衡到多核CPU中

这篇文章主要介绍了Shell脚本实现把进程负载均衡到多核CPU中,可以把进程指定运行在某个CPU中,需要的朋友可以参考下
收藏 0 赞 0 分享

5个Shell脚本编程入门练习例子

这篇文章主要介绍了5个Shell脚本编程入门例子,涵盖了各种操作,又有一些游戏的性质,作为入门练习例子是不很不错的,需要的朋友可以参考下
收藏 0 赞 0 分享

Shell脚本编程中常用的数学运算实例

这篇文章主要介绍了Shell脚本编程中常用的数学运算实例,包含最基本的加减乘除,还有质数、偶数的判断等,需要的朋友可以参考下
收藏 0 赞 0 分享

5个实用的shell脚本面试题和答案

这篇文章主要介绍了5个实用的shell脚本面试题和答案,给出的脚本堪称编码规范,麻雀虽小,异常处理,友好提示,一应俱全,值得学习,需要的朋友可以参考下
收藏 0 赞 0 分享

使用bash shell删除目录中的特定文件的3种方法

这篇文章主要介绍了使用bash shell删除目录中的特定文件的3种方法,分别为扩展模式匹配符、GLOBIGNORE 变量和find 命令,需要的朋友可以参考下
收藏 0 赞 0 分享

Shell获取文件的文件名和扩展名的例子

这篇文章主要介绍了Shell获取文件的文件名和扩展名的例子,简明版的代码实例,看了就懂,需要的朋友可以参考下
收藏 0 赞 0 分享

Shell多线程操作及线程数控制实例

这篇文章主要介绍了Shell多线程操作及线程数控制实例,文中从单线程实现一个需求开始,不断加入代码实现多线程以及线程数的控制功能,需要的朋友可以参考下
收藏 0 赞 0 分享

阿里云主机一键安装lamp、lnmp环境的shell脚本分享

这篇文章主要介绍了阿里云主机一键安装lamp、lnmp环境的shell脚本分享,需要的朋友可以参考下
收藏 0 赞 0 分享

shell脚本转发80端口数据包给Node.js服务器

开发基于Node.js的WEB应用很方便,但是服务端口问题很蛋疼,由于Linux内核规定普通用户只能使用大于1024的端口号,所以使用普通用户运行Node.js服务就不能监听80端口
收藏 0 赞 0 分享
查看更多