# 前言:为什么要使用非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的更多相关文章

  1. Linux下非root用户运行Tomcat

    PS:Linux下使用非root用户运行tomcat的原因 由于项目需求,也由于root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限. 这意味着你的任何一个页面脚本(htm ...

  2. EasyHLS直播在Linux非root用户运行时出现无法写文件的问题解决mkdir 0777

    今天在Github上收到一个用户反馈的EasyHLS在linux上非root用户调用时,无法写目录的问题:https://github.com/EasyDarwin/EasyHLS/issues/3, ...

  3. centos7新增用户并授权root权限、非root用户启动tomcat程序

    一.centos7新增用户并授权root权限 cat /etc/redhat-release查看centos版本号 1.禁用root账户登录 vim /etc/ssh/sshd_config 找到这一 ...

  4. 使用非root用户启动tomcat

    以下操作均为以root用户运行1.添加tomcat用户组 /usr/sbin/groupadd tomcat 2.添加tomcat用户,并限制登录 /usr/sbin/useradd -s /bin/ ...

  5. linux非root用户下安装软件,搭建生产环境

    之前的用实验室的服务器,因为某些原因,使用的用户没有root权限.linux的非root用户很多软件无法安装,非常的不方便.我的方法是使用brew来代替系统的包管理工具.brew是最先用在mac上的包 ...

  6. linux非root用户执行开机启动程序

    问题 开机启动其他用户的程序或者说非root用户执行开机启动 编写开机启动脚本 编写开机启动脚本apple_tree,放到/etc/init.d,系统启动时会自动执行. 例如,/etc/init.d/ ...

  7. linux非root用户安装jdk1.8

    如题,先到 Oracle 官方网站 下载1.8版本的 JDK 压缩包(jdk-8u221-linux-x64.tar.gz)到本地(如D盘的soft目录),然后开始进入linux的非root用户(如w ...

  8. 【tf.keras】Linux 非 root 用户安装 CUDA 和 cuDNN

    TensorFlow 2.0 for Linux 使用时报错:(cuDNN 版本低了) E tensorflow/stream_executor/cuda/cuda_dnn.cc:319] Loade ...

  9. 非ROOT用户启动Tomcat

    [root@Z ~]# adduser tomcat [root@Z ~]# chown -R tomcat:tomcat /usr/local/tomcat/ [root@Z ~]# chown - ...

  10. linux非root用户安装ncurses-devel依赖

    很明显,如果我们通过yum或rpm下载安装,始终无法绕开root用户,除非我们不用yum或rpm.嗯,我们直接用源码安装.下载源码包,到http://ftp.gnu.org/gnu/ncurses/我 ...

随机推荐

  1. java 单向链表实现

    1 class Node{//Node类 2 private String data; 3 private Node next; 4 public Node(String data){ 5 this. ...

  2. Python3 的描述符--完整例子详细解释

    ##描述符类的例子,这个例子说明了描述符和被描述符之间的关系 ##摄氏温度 class Celsius(): ## 1 描述符类 def __init__(self,value = 26.0): ## ...

  3. JS获得一个对象的所有属性和方法

    function displayProp(obj){ var names=""; for(var name in obj){ names+=name+": "+ ...

  4. Eclipse项目中web app libraries和 Referenced Libraries区别

    Referenced  Libraries是编译环境下使用的JAR包,所谓编译环境下使用的JAR包, 就是说你在Eclipse中进行源文件的编写的时候,所需要引用到的类都从Referenced  Li ...

  5. alpha冲刺第七天

    一.合照 二.项目燃尽图 三.项目进展 问答界面问答内容呈现 设置里的帐号设置呈现 能爬取教务处网站的内容保存到本地数据库 四.明日规划 继续完善各个内容的界面呈现 查找关于如何自动更新爬取内容 搜索 ...

  6. win10 安装mingw ruby rails

    原文可以参考 https://ruby-china.org/topics/17581 在window10 安装ruby rails https://rubyinstaller.org/download ...

  7. ubuntu1604使用源码方式安装ruby2.5.0

    本文介绍ubutntu1604环境下源代码方式安装ruby 版本2.5.0 如果内存小于2G可以开启虚拟内存,下面的命令开启4G虚拟内存 sudo dd if=/dev/zero of=/swap b ...

  8. 在360、UC等浏览器,img不加载原因

    问题:图片在360浏览器不被加载,在UC浏览器强制不显示. 前言不多说,直接上图. 360浏览器显示情况: UC浏览器显示情况: 由以上两张截图可以看到,在360浏览器,banner图片处根本没有加载 ...

  9. vue 在methods中调用mounted中的方法?

    首先可以在data中先声明一个变量 比如 isShow=' ' mounted 中 ---> methods 中 --->  this.sureDelBox(item) 直接this调用 ...

  10. [Redis源码阅读]redis持久化

    作为web开发的一员,相信大家的面试经历里少不了会遇到这个问题:redis是怎么做持久化的? 不急着给出答案,先停下来思考一下,然后再看看下面的介绍.希望看了这边文章后,你能够回答这个问题. 为什么需 ...