部署远程服务器时候, 基本都是用root账户登录, 习惯上会直接使用root启动tomcat.

      这样其实是有风险的, 黑客获取的权限即容器的权限,
如果容器运行权限就很高,被攻破黑客即可获取很高的权限,造成破坏面及风险更大

本文介绍通过tomcat下的/bin/daemon.sh方式启动tomcat

  • 添加用户tomcat

    groupadd -g 2000 tomcat
    useradd -g 2000 -u 2000 tomcat
  • 给目录授权

    chown -R tomcat:tomcat /usr/local/tomcat
  • 使用daemon.sh启动

    daemon.sh文件中大约在90行左右指定了使用名为tomcat用户的用户执行.

    所以我们直接运行daemon.sh即可, 不需要su -u tomcat ./daemon.sh

    ./bin/daemon.sh start
  • 配置tomcat开机自启

    // vim /etc/rc.d/rc.local
    
    // 在文件最后添加
    /usr/local/tomcat/bin/daemon.sh start
  • 问题解决

    • 使用daemon.sh启动时候缺少jsvc文件

    • 从以下途径获取到jsvc文件后, 复制到tomcat/bin下, 赋予root执行权限再次启动即可

    • 文件路径权限问题

      如果项目中使用到的文件(如: 日志或其他文件等), 需要手动授权.

      chown -R tomcat:tomcat /file/

    • 自启失败

      判断/etc/rc.d/rc.local是否可执行

      查看tomcat日志是否启动了tomcat

  • 查看运行进程

    若自动换行, 使用代码全屏查看

    [root@hecs-26265 ~]# ps -ef | grep tomcat
    root 881 1 0 10:42 ? 00:00:00 jsvc.exec -java-home /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-0.hce2.x86_64/jre -user tomcat -pidfile /usr/local/tomcat/logs/catalina-daemon.pid -wait 10 -umask 0027 -outfile /usr/local/tomcat/logs/catalina-daemon.out -errfile &1 -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/commons-daemon.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dignore.endorsed.d
    tomcat 885 881 69 10:42 ? 00:00:17 jsvc.exec -java-home /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-0.hce2.x86_64/jre -user tomcat -pidfile /usr/local/tomcat/logs/catalina-daemon.pid -wait 10 -umask 0027 -outfile /usr/local/tomcat/logs/catalina-daemon.out -errfile &1 -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/commons-daemon.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dignore.endorsed.d
    root 1900 1850 0 10:43 pts/0 00:00:00 grep --color=auto tomcat

    一个root, 一个tomcat账户为正常.

    相关介绍:

  • 其余参考

tomcat非root用户启动的更多相关文章

  1. 【出错记录】Tomcat非root用户启动无法拥有权限读写文件

    简单记录下,如有必要,将深入补充: 一.非root用户运行Tomcat及原因 由于项目中,为了安全需要,Tomcat将禁止以root形式启动,原因很简单,举个例子,一旦有人恶意将jsp文件透过某个别的 ...

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

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

  3. 二进制方式安装docker(非root用户启动docker)

    二进制方式安装docker(非root用户启动docker) 一.下载安装包: 地址:https://download.docker.com/linux/static/stable/x86_64/ 这 ...

  4. 使用非root用户启动tomcat

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

  5. Ubuntu配置Tomcat9非root用户启动

    unix类系统的root用户具有极大的权利,所以很多时候我们不希望程序以root身份启动,这也就是配置Tomcat以指定身份(非root)启动的初衷,虽然也没人来攻击我的服务器,但本着学习学习的目的, ...

  6. 短网址资料-nginx非root用户启动-systemctl启动脚本-分割root权限

    https://www.cnblogs.com/aspnethot/articles/3492191.htmlhttps://www.cnblogs.com/aspnethot/articles/34 ...

  7. Centos6.4 设置开机自动以某个非root用户启动脚本

    开机自动运行脚本,可以将脚本的执行命令放在 /etc/rc.d/rc.local 文件中,但是这样开机自动运行这个脚本的用户默认为root. 如果想以某个非root用户运行脚本,可以使用如下命令: s ...

  8. 非ROOT用户启动Tomcat

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

  9. zzw原创_非root用户启动apache的问题解决(非root用户启动apache的1024以下端口)

    场景:普通用户编译的apache,要在该用户下启动1024端口以下的apache端口 1.假设普通用户为sims20,用该用户编译 安装了一个apache,安装路径为/opt/aspire/produ ...

  10. 非root用户启动redis容器报错mkdir: cannot create directory '/bitnami/redis': Permission denied

    问题:使用docker启动容器时,报错如下 zh@debian:~/testPath$ docker-compose up redis Starting testpath_redis_1 ... do ...

随机推荐

  1. HTTP方法-GET对比POST

    什么是 HTTP ? 超文本传输协议(HTTP)的设计目的是保证客户端与服务器之间的通信. HTTP 的工作方式是客户端与服务器之间的请求-应答协议. web 浏览器可能是客户端,而计算机上的网络应用 ...

  2. MySQL安装及基本使用教程

      yanzilove win10下安装配置mysql环境 一.下载从https://dev.mysql.com/downloads/mysql/5.1.html#downloads下载zip包,这里 ...

  3. 数组 & 结构 & 位域 & 联合 & 枚举 & typedef

    C语言提供的五种自定义的构造数据类型: 数组: 是处理同一名字下的不同类型变量的结合体 结构: 是一种归在同一名字下相关的不同类型变量的结合,也可称为不同数据类型的集成体 位域:允许按为访问数据成员的 ...

  4. C++:异常处理

    C++的异常处理机制是由三部分组成:检查(try).抛出(throw)和捕获(catch).需要检查的语句放到try中:throw用来当出现异常时发出一个异常信息:catch用来捕获异常信息,且处理它 ...

  5. el-table合计行

    用到属性 showSummary 是否显示合计,方法 summaryMethod 计算合计的自定义方法. <el-table ref="elTable" :data=&quo ...

  6. Linux7安装pacemaker+corosync集群-02--配置集群文件系统gfs2(dlm+clvmd)

    配置集群文件系统: 安装软件包: yum -y install   lvm2* gfs2* dlm* 1.安装rpm包 yum -y install   lvm2* gfs2* dlm* fence- ...

  7. 闲话 6.30 -JL 引理

    参考了 https://spaces.ac.cn/archives/8679/comment-page-1,有一些增删. JL 引理 首先下面需要应用马尔可夫不等式的另一个形式: \[\newcomm ...

  8. Presto常用命令

    一.基本资料 1.官方文档 https://prestodb.github.io/docs/current/sql/select.html 二.常用命令 1.kill任务,登录presto客户端 CA ...

  9. 如何在ubuntu[linux] 上用docker安装Sqlserver

    本次按照目前最新版本Sqlserver2022进行记录 先决条件 任何受支持的 Linux 发行版上的 Docker 引擎 1.8 及更高版本. 有关详细信息,请参阅 Install Docker(安 ...

  10. Typecho 引入JS简单的实现点击文字即可复制

    在文章中插入大量无意义内容一不美观,二不便复制,不如使用 js 创建隐藏内容的复制按钮吧. 引入 JS 本主题:依次进入 控制台 - 外观 - 设置外观 - 主题自定义扩展,将以下代码加入到 自定义 ...