对于任何降权的操作都是为了更好的保护自己的服务器免受危害,所以我们使用Tomcat也不了外,也需要进行降权操作。因为当 Tomcat以系统管理员身份或作为系统服务运行时,Java运行时取得了系统用户或系统管理员所具有的全部权限。这样一来,Java运行时就取得了所有文件夹中所有文件的全部权限。

如果黑客或不法分子,利用系统漏洞或缺陷攻入Tomcat,就会获得最高权限,从而破坏网站的正常运行。。

下面简单描述降权启动的操作步骤:

1.添加普通用户和组

  1. [root@mysql-db01 ~]# id mao ##查看普通用户是否存在
  2. uid=(mao) gid=(mao) groups=(mao)
  3. [root@mysql-db01 ~]# useradd mao
  4. useradd: user 'mao' already exists
  5. [root@mysql-db01 ~]# groupadd maohome ##添加组
  6. [root@mysql-db01 ~]# usermod -g maohome mao ##将普通用户加入组中
  7. [root@mysql-db01 ~]# id mao
  8. uid=(mao) gid=(maohome) groups=(maohome)
  9. [root@mysql-db01 ~]#

此处之所以添加组是因为便于一个组内的开发,运维,部门经理等不同的角色来管理或运行Tomcat。。

2.测试root用户下Tomcat能正常启动

  1. [root@mysql-db01 application]# /data/tomcat/bin/startup.sh
  2. Using CATALINA_BASE: /data/tomcat
  3. Using CATALINA_HOME: /data/tomcat
  4. Using CATALINA_TMPDIR: /data/tomcat/temp
  5. Using JRE_HOME: /application/jdk1..0_60/jre
  6. Using CLASSPATH: /data/tomcat/bin/bootstrap.jar:/data/tomcat/bin/tomcat-juli.jar
  7. Tomcat started.
  8. [root@mysql-db01 application]# ps -ef |grep java
  9. root : pts/ :: /application/jdk1..0_60/jre/bin/java -Djava.util.logging.config.file=/data/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/data/tomcat/endorsed -classpath /data/tomcat/bin/bootstrap.jar:/data/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/data/tomcat -Dcatalina.home=/data/tomcat -Djava.io.tmpdir=/data/tomcat/temp org.apache.catalina.startup.Bootstrap start
  10. root : pts/ :: grep java
  11. [root@mysql-db01 application]#

从上面的ps-ef|grep java中可以看出Tomcat的主进程是以root身份来运行的,接下来我们要做的就是讲这个root换成普通用户。。因此,我们的思路就是建立一个普通用户,并

在普通用户运行Tomcat。 为了保险起见,我们先备份一份Tomcat站点目录,在其他目录下复制一份启动,防止操作失误。

3.复制站点目录---备份

  1. [root@mysql-db01 application]# cp /data/tomcat/ /application/tomcat/
  2. cp: omitting directory `/data/tomcat/'
  3. [root@mysql-db01 application]# cp /data/tomcat/ /application/tomcat/ -a
  4. [root@mysql-db01 application]# cd /application/tomcat
  5. [root@mysql-db01 tomcat]# ls
  6. .txt bin conf data lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
  7. [root@mysql-db01 tomcat]#

4.授权普通用户和组拥有站点目录权限

[root@mysql-db01 tomcat]# pwd
/application/tomcat
[root@mysql-db01 tomcat]#

[root@mysql-db01 tomcat]# ll #查看站点目录下的属主和属组都为root

  1. total
  2. -rw-r--r--. root root Oct : .txt
  3. drwxr-xr-x. root root Oct : bin
  4. drwxr-xr-x. root root Oct : conf
  5. drwxr-xr-x. root root Oct : data
  6. drwxr-xr-x. root root Sep : lib
  7. -rw-r--r--. root root Sep LICENSE
  8. drwxrwxr-x. root root Nov : logs
  9. -rw-r--r--. root root Sep NOTICE
  10. -rw-r--r--. root root Sep RELEASE-NOTES
  11. -rw-r--r--. root root Sep RUNNING.txt
  12. drwxr-xr-x. root root Sep : temp
  13. drwxr-xr-x. root root Oct : webapps
  14. drwxr-xr-x. root root Sep : work
  15. [root@mysql-db01 tomcat]# chown mao.maohome /application/tomcat/* -R ###修改站点目录的属主和属组为普通用户。使其对站点目录有权限写入,启动,停止等。
  16. [root@mysql-db01 tomcat]# ll
  17. total 116
  18. -rw-r--r--. 1 mao maohome 0 Oct 13 03:03 1.txt
  19. drwxr-xr-x. 2 mao maohome 4096 Oct 13 02:47 bin
  20. drwxr-xr-x. 3 mao maohome 4096 Oct 13 06:42 conf
  21. drwxr-xr-x. 2 mao maohome 4096 Oct 13 03:03 data
  22. drwxr-xr-x. 2 mao maohome 4096 Sep 22 18:02 lib
  23. -rw-r--r--. 1 mao maohome 57011 Sep 28 2015 LICENSE
  24. drwxrwxr-x. 3 mao maohome 4096 Nov 6 16:22 logs
  25. -rw-r--r--. 1 mao maohome 1444 Sep 28 2015 NOTICE
  26. -rw-r--r--. 1 mao maohome 6741 Sep 28 2015 RELEASE-NOTES
  27. -rw-r--r--. 1 mao maohome 16204 Sep 28 2015 RUNNING.txt
  28. drwxr-xr-x. 2 mao maohome 4096 Sep 22 18:02 temp
  29. drwxr-xr-x. 2 mao maohome 4096 Oct 13 06:23 webapps
  30. drwxr-xr-x. 3 mao maohome 4096 Sep 22 18:35 work
  31. [root@mysql-db01 tomcat]#

5.切换普通用户,启动Tomcat

[root@mysql-db01 ~]# su - mao
[mao@mysql-db01 ~]$ ps -ef |grep java
mao 35582 35562 0 19:15 pts/1 00:00:00 grep java

  1. [mao@mysql-db01 ~]$ /application/tomcat/bin/startup.sh ##启动Tomcat
  2. Using CATALINA_BASE: /application/tomcat
  3. Using CATALINA_HOME: /application/tomcat
  4. Using CATALINA_TMPDIR: /application/tomcat/temp
  5. Using JRE_HOME: /application/jdk1..0_60/jre
  6. Using CLASSPATH: /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
  7. Tomcat started.
  8. [mao@mysql-db01 ~]$ ps -ef |grep java #查看Tomcat以普通用户运行了。
  9. mao : pts/ :: /application/jdk1..0_60/jre/bin/java -Djava.util.logging.config.file=/application/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/application/tomcat/endorsed -classpath /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat -Djava.io.tmpdir=/application/tomcat/temp org.apache.catalina.startup.Bootstrap start
  10. mao : pts/ :: grep java
  11. [mao@mysql-db01 ~]$

[mao@mysql-db01 conf]$ curl -I 10.0.0.51:8480
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=2E0CFB9A0B152A9F62894D66F592796C; Path=/; HttpOnly
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 17
Date: Mon, 06 Nov 2017 11:20:53 GMT

[mao@mysql-db01 conf]$

以上就是Tomcat降权启动的过程,如果这个用户是运维人员建立的账户,那么其他的开发人员没有这个权限来启动,停止,重启,或修改Tomcat。但是如果开发人员需要对Tomcat

进行操作,怎么办呢。

对于开发人员的权限比较小,我们刚开始建立的组就派上用场了。建立一个属于开发人员的普通用户,并将它加入组,然后给组设立想要的权限,一般给开发设立wr权限即可。

当然以上的建立普通用户和搜权普通用户和组都是在root权限下操作的。。

以上对于运维人员来说操作即可完成,如果开发需要相关权限,请继续往下操作,但是每个公司需求不同,权限不同,请酌情授权。。


6.给开发普通用户搜权

  1. [mao@mysql-db01 conf]$ su - #切换回root用户进行搜权
  2. Password:
  3. [root@mysql-db01 ~]# useradd kaifa -g maohome ##建立属于开发的账户,并加入组
  4. [root@mysql-db01 ~]# id kaifa
  5. uid=(kaifa) gid=(maohome) groups=(maohome)
  6. [root@mysql-db01 ~]# cd /application/tomcat/
  7. [root@mysql-db01 tomcat]# ll
  8. total
  9. -rw-r--r--. mao maohome Oct : .txt
  10. drwxr-xr-x. mao maohome Oct : bin
  11. drwxr-xr-x. mao maohome Oct : conf
  12. drwxr-xr-x. mao maohome Oct : data
  13. drwxr-xr-x. mao maohome Sep : lib
  14. -rw-r--r--. mao maohome Sep LICENSE
  15. drwxrwxr-x. mao maohome Nov : logs
  16. -rw-r--r--. mao maohome Sep NOTICE
  17. -rw-r--r--. mao maohome Sep RELEASE-NOTES
  18. -rw-r--r--. mao maohome Sep RUNNING.txt
  19. drwxr-xr-x. mao maohome Sep : temp
  20. drwxr-xr-x. mao maohome Oct : webapps
  21. drwxr-xr-x. mao maohome Sep : work
  22. [root@mysql-db01 tomcat]# chmod g+w bin data logs temp work ##搜权组加上w权限。。
  23. [root@mysql-db01 tomcat]# ll
  24. total
  25. -rw-r--r--. mao maohome Oct : .txt
  26. drwxrwxr-x. mao maohome Oct : bin
  27. drwxr-xr-x. mao maohome Oct : conf
  28. drwxrwxr-x. mao maohome Oct : data
  29. drwxr-xr-x. mao maohome Sep : lib
  30. -rw-r--r--. mao maohome Sep LICENSE
  31. drwxrwxr-x. mao maohome Nov : logs
  32. -rw-r--r--. mao maohome Sep NOTICE
  33. -rw-r--r--. mao maohome Sep RELEASE-NOTES
  34. -rw-r--r--. mao maohome Sep RUNNING.txt
  35. drwxrwxr-x. mao maohome Sep : temp
  36. drwxr-xr-x. mao maohome Oct : webapps
  37. drwxrwxr-x. mao maohome Sep : work
  38. [root@mysql-db01 tomcat]#

为什么只对以上目录授权,原因在于如果开发人员需要启动Tomcat时,需要写日志到logs目录中,需要有写权限;bin文件中放着Tomcat的启动,停止等相关的脚本,

tomcat有一个work目录,里面存放了页面的缓存,访问的jsp都会编译;temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行带来影响)但是,千万不能删除该目录,要不然就会带来未知的错误,如登录界面的验证码出不来等问题。。

对于给开发人员授权,我们秉承着最小化的原则,如果不对Tomcat站点运行造成影响,尽量最小,安全最重要。。因为造成网站运行问题的一部分原因就是内部人员造成。

Tomcat降权启动的更多相关文章

  1. Nginx降权启动

            给Nginx服务降权,用lol用户跑Nginx,给开发及运维设置普通账号,只要和lol同组即可管理Nginx,该方案解决了Nginx管理问题,防止root分配权限过大. 开发人员使用普 ...

  2. C/C++ 进程代码注入与提权/降权

    如果将shellcode注入到具有特定权限的进程中,我们就可以获得与该进程相同的权限,此方法可以用于提权与降权操作,注入有多种方式,最简单的是直接将metasploit生成的有效载荷直接注入到目标进程 ...

  3. Eclipse 调试的时候Tomcat报错启动不了

    Eclipse 调试的时候Tomcat报错启动不了 1.把所有的断点删掉 2.清理工程 3.在Tomcat里面删除项目 4.删除Tomcat的配置,重新配置一下

  4. tomcat 7/8 启动非常慢的解决方法

    在日志中发现启动慢的地方: 2016-11-14 09:31:30.522 [localhost-startStop-1] INFO o.s.c.s.DefaultLifecycleProcessor ...

  5. 部署war包后,新增tomcat服务器,启动tomcat服务器报错解决方法

    导入Maven工程后,新增tomcat服务器,启动服务器后,报如下错误: 使用http访问页面的时候报如下错误: 经过百度后,有一种方法可以解决: 在eclipse tomcat无法启动,无法访问to ...

  6. ubuntu 14 中tomcat的开机启动设置

    开机自启动,将要执行的语句写入/etc/rc.local. #!/bin/sh -e # # rc.local # # This script is executed at the end of ea ...

  7. 免安装的tomcat双击startup.bat后,启动窗口一闪而过,而且tomcat服务未启动。

    免安装的tomcat双击startup.bat后,启动窗口一闪而过,而且tomcat服务未启动. 原因是:在启动tomcat是,需要读取环境变量和配置信息,缺少了这些信息,就不能登记环境变量,导致了t ...

  8. 【Tomcat】直接启动tomcat时为tomcat指定JDK 而不是读取环境变量中的配置

    在windows环境下以批处理文件方式启动tomcat,只要运行<CATALINA_HOME>/bin/startup.bat这个文件,就可以启动Tomcat.在启动时,startup.b ...

  9. Tomcat设置默认启动项目及Java Web工程设置默认启动页面

    Tomcat设置默认启动项目 Tomcat设置默认启动项目,顾名思义,就是让可以在浏览器的地址栏中输入ip:8080,就能访问到我们的项目.具体操作如下: 1.打开tomcat的安装根目录,找到Tom ...

随机推荐

  1. program 1 : python codes for login program(登录程序python代码)

    #improt time module for count down puase time import time #set var for loop counting counter=1 #logi ...

  2. JQuery获取图片大小并控制图片文件上传大小以及上图片文件时如何预览图片

    首先我们来看效果图: 点击上传之后如下: 在这里我获取到文件的大小,并且如果超出我设定的大小,则禁止上传! 不多说,上代码:先看div布局: <div class="imageCont ...

  3. c++builder中 扩展c++的关键字 : _published _automated Get/Set指令 _fastcall

    C++Builder为C++增加了许多关键字,以适应其快速应用开发(RAD)环境.包括关键字和Get/Set指令. 1._published类似publich权限范围,_published像publi ...

  4. mybatis typehandler

    建立TypeHandler 我们知道java有java的数据类型,数据库有数据库的数据类型,那么我们在往数据库中插入数据的时候是如何把java类型当做数据库类型插入数据库,在从数据库读取数据的时候又是 ...

  5. css 浮动和清除浮动

    在写页面布局的过程中,浮动是大家经常用的属性.在好多的排版布局中都是用的的浮动比如说下面这些地方都是应用到了浮动. 在我学习浮动的时候可是熬坏了脑筋,在这里我分享一下我对浮动这块知识的总结. 一.浮动 ...

  6. 支持向量机SVM(二)

    [转载请注明出处]http://www.cnblogs.com/jerrylead 6 拉格朗日对偶(Lagrange duality) 先抛开上面的二次规划问题,先来看看存在等式约束的极值问题求法, ...

  7. linux视频之media媒体框架

    linux视频媒体(kernel层分析)主要包括三个文件: (/drivers/media/media-device.c ,  /drivers/media/media-devnode.c , /dr ...

  8. 如何在linux下检测内存泄漏

    之前的文章应用 Valgrind 发现 Linux 程序的内存问题中介绍了利用Linux系统工具valgrind检测内存泄露的简单用法,本文实现了一个检测内存泄露的工具,包括了原理说明以及实现细节. ...

  9. Java 浅拷贝和深拷贝的理解和实现方式

    Java中的对象拷贝(Object Copy)指的是将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去.举例说明:比如,对象A和对象B都属于类S,具有属性a和b.那么对对象A进行拷贝 ...

  10. Block使用的简单总结

    一.Block简单的使用 1.block当作参数来传递 如下定义一个没有返回值无参数的block,并把它作为参数,让系统调用,注意:这里是系统在调用,不是我们调用 那么为什么需要把block当作参数去 ...