部署远程服务器时候, 基本都是用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. selenium等待的三种方式(详细)

    1.强制等待 time.sleep(3) 这种方式会是操作强行等待3s才会进行下一步操作,但是这种放法,可能会延长测试的时间,如果元素在1s中出现,就会浪费2s的时间,并且这种放法单次有效,每次需要等 ...

  2. python包学习:-了解

    本节先做一些了解. numpy 参考:NumPy使用 NumPy 教程 NumPy是Python中科学计算的基础包.它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于 ...

  3. dart变量类型详解

    1==> 三个单引号的作用 String Str = ''' qijqowjdo 哈哈嘿嘿黑 '''; print(Str); 这样使用三个单引号,输出来换行:方便我们观看而已哈 2==> ...

  4. react声明周期详解

    react的生命周期,分为3三个阶段, 挂载阶段 constructor(){} UNSAFE_componentWillMount(){} == componentWillMount(在17版本中将 ...

  5. 从找零钱问题到三数之和:一道经典面试算法题的全面剖析|LeetCode 15 三数之和

    LeetCode 15 三数之和 点此看全部题解 LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中) 生活中的算法 想象你是一个收银员,顾客给了你一张100元钱,商品只要85元. ...

  6. C# 深度学习框架 TorchSharp 原生训练模型和图像识别-手写数字识别

    目录 开始使用 Torch 准备 下载数据集 显示图片 加载数据集 定义网络 优化模型参数 训练模型 保存和加载模型 使用模型识别图片 教程名称:使用 C# 入门深度学习 作者:痴者工良 教程地址:h ...

  7. Idea报错 【cannot access com.xxx】的【解决办法】

    正常操作代码,一个类突然标红,提示 cannot access com.xxx . 执行下面操作,执行完后项目变为正常 但是如果是你代码存在异常,可不是清缓存就能解决了,就要靠自己了哈哈 第一步Fil ...

  8. ceph 16.2.15(Pacific)编译

    目录 获取ceph源码 编译 拉取submodule网络问题 安装依赖 do_cmake.sh 编译 vstart启动 问题 编译dashboard 安装nodejs 方法一 下载编译好的源码包 方法 ...

  9. Luogu P11280 GFOI Round 2 Jom & Terry 题解 [ 黄 ] [ BFS ]

    Jom & Terry:讲个笑话,我赛时被诈骗了. 思路 先放结论:如果 Terry 到终点的距离小于等于 Jom 到终点的距离,那么 Terry 一定不会被抓. 为啥呢,因为不管 Jom 堵 ...

  10. FreeSql学习笔记——4.联表

    前言   上一章节是查询,记录了简单的查询,比较看好的是分块.Dto映射和分页,除了简单的单表查询,更多的时候要用到联表查询,毕竟设计数据库是按照范式设计,FreeSql的联表操作有导航属性.Join ...