Tomcat降權啟動


        對於任何降權的操作都是為了更好的保護自己的服務器免受危害,所以我們使用Tomcat也不了外,也需要進行降權操作。因為當 Tomcat以系統管理員身份或作為系統服務運行時,Java運行時取得了系統用戶或系統管理員所具有的全部權限。這樣一來,Java運行時就取得了所有文件夾中所有文件的全部權限。

       如果黑客或不法分子,利用系統漏洞或缺陷攻入Tomcat,就會獲得最高權限,從而破壞網站的正常運行。。

       下面簡單描述降權啟動的操作步驟:

        1.添加普通用戶和組

[root@mysql-db01 ~]# id mao       ##查看普通用戶是否存在
uid=510(mao) gid=510(mao) groups=510(mao)
[root@mysql-db01 ~]# useradd mao
useradd: user 'mao' already exists
[root@mysql-db01 ~]# groupadd  maohome     ##添加組
[root@mysql-db01 ~]# usermod -g maohome mao    ##將普通用戶加入組中
[root@mysql-db01 ~]# id mao
uid=510(mao) gid=515(maohome) groups=515(maohome)
[root@mysql-db01 ~]# 

此處之所以添加組是因為便於一個組內的開發,運維,部門經理等不同的角色來管理或運行Tomcat。。

   2.測試root用戶下Tomcat能正常啟動

[root@mysql-db01 application]# /data/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /data/tomcat
Using CATALINA_HOME:   /data/tomcat
Using CATALINA_TMPDIR: /data/tomcat/temp
Using JRE_HOME:        /application/jdk1.8.0_60/jre
Using CLASSPATH:       /data/tomcat/bin/bootstrap.jar:/data/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@mysql-db01 application]# ps -ef |grep java
root      35451      1 38 19:03 pts/1    00:00:02 /application/jdk1.8.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
root      35473  35385  0 19:03 pts/1    00:00:00 grep java
[root@mysql-db01 application]# 

從上面的ps-ef|grep java中可以看出Tomcat的主進程是以root身份來運行的,接下來我們要做的就是講這個root換成普通用戶。。因此,我們的思路就是建立一個普通用戶,並

在普通用戶運行Tomcat。 為了保險起見,我們先備份一份Tomcat站點目錄,在其他目錄下復制一份啟動,防止操作失誤。

3.復制站點目錄---備份

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

4.授權普通用戶和組擁有站點目錄權限

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

[root@mysql-db01 tomcat]# ll #查看站點目錄下的屬主和屬組都為root

total 116
-rw-r--r--. 1 root root     0 Oct 13 03:03 1.txt drwxr-xr-x. 2 root root  4096 Oct 13 02:47 bin drwxr-xr-x. 3 root root  4096 Oct 13 06:42 conf drwxr-xr-x. 2 root root  4096 Oct 13 03:03 data drwxr-xr-x. 2 root root  4096 Sep 22 18:02 lib -rw-r--r--. 1 root root 57011 Sep 28  2015 LICENSE drwxrwxr-x. 3 root root  4096 Nov  6 16:22 logs -rw-r--r--. 1 root root  1444 Sep 28  2015 NOTICE -rw-r--r--. 1 root root  6741 Sep 28  2015 RELEASE-NOTES -rw-r--r--. 1 root root 16204 Sep 28  2015 RUNNING.txt drwxr-xr-x. 2 root root  4096 Sep 22 18:02 temp drwxr-xr-x. 2 root root  4096 Oct 13 06:23 webapps drwxr-xr-x. 3 root root  4096 Sep 22 18:35 work [root@mysql-db01 tomcat]# chown mao.maohome /application/tomcat/* -R ###修改站點目錄的屬主和屬組為普通用戶。使其對站點目錄有權限寫入,啟動,停止等。 [root@mysql-db01 tomcat]# ll total 116 -rw-r--r--. 1 mao maohome 0 Oct 13 03:03 1.txt drwxr-xr-x. 2 mao maohome 4096 Oct 13 02:47 bin drwxr-xr-x. 3 mao maohome 4096 Oct 13 06:42 conf drwxr-xr-x. 2 mao maohome 4096 Oct 13 03:03 data drwxr-xr-x. 2 mao maohome 4096 Sep 22 18:02 lib -rw-r--r--. 1 mao maohome 57011 Sep 28 2015 LICENSE drwxrwxr-x. 3 mao maohome 4096 Nov 6 16:22 logs -rw-r--r--. 1 mao maohome 1444 Sep 28 2015 NOTICE -rw-r--r--. 1 mao maohome 6741 Sep 28 2015 RELEASE-NOTES -rw-r--r--. 1 mao maohome 16204 Sep 28 2015 RUNNING.txt drwxr-xr-x. 2 mao maohome 4096 Sep 22 18:02 temp drwxr-xr-x. 2 mao maohome 4096 Oct 13 06:23 webapps drwxr-xr-x. 3 mao maohome 4096 Sep 22 18:35 work [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

[mao@mysql-db01 ~]$ /application/tomcat/bin/startup.sh   ##啟動Tomcat
Using CATALINA_BASE:   /application/tomcat
Using CATALINA_HOME:   /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME:        /application/jdk1.8.0_60/jre
Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
[mao@mysql-db01 ~]$ ps -ef |grep java   #查看Tomcat以普通用戶運行了。
mao       35591      1 44 19:15 pts/1    00:00:02 /application/jdk1.8.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
mao       35608  35562  0 19:15 pts/1    00:00:00 grep java
[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.給開發普通用戶搜權

[mao@mysql-db01 conf]$ su -  #切換回root用戶進行搜權
Password: 
[root@mysql-db01 ~]# useradd kaifa -g maohome  ##建立屬於開發的賬戶,並加入組
[root@mysql-db01 ~]# id kaifa
uid=514(kaifa) gid=515(maohome) groups=515(maohome)
[root@mysql-db01 ~]# cd /application/tomcat/
[root@mysql-db01 tomcat]# ll
total 116
-rw-r--r--. 1 mao maohome     0 Oct 13 03:03 1.txt
drwxr-xr-x. 2 mao maohome  4096 Oct 13 02:47 bin
drwxr-xr-x. 3 mao maohome  4096 Oct 13 06:42 conf
drwxr-xr-x. 2 mao maohome  4096 Oct 13 03:03 data
drwxr-xr-x. 2 mao maohome  4096 Sep 22 18:02 lib
-rw-r--r--. 1 mao maohome 57011 Sep 28  2015 LICENSE
drwxrwxr-x. 3 mao maohome  4096 Nov  6 16:22 logs
-rw-r--r--. 1 mao maohome  1444 Sep 28  2015 NOTICE
-rw-r--r--. 1 mao maohome  6741 Sep 28  2015 RELEASE-NOTES
-rw-r--r--. 1 mao maohome 16204 Sep 28  2015 RUNNING.txt
drwxr-xr-x. 2 mao maohome  4096 Sep 22 18:02 temp
drwxr-xr-x. 2 mao maohome  4096 Oct 13 06:23 webapps
drwxr-xr-x. 3 mao maohome  4096 Sep 22 18:35 work
[root@mysql-db01 tomcat]# chmod g+w bin  data logs temp work    ##搜權組加上w權限。。
[root@mysql-db01 tomcat]# ll
total 116
-rw-r--r--. 1 mao maohome     0 Oct 13 03:03 1.txt
drwxrwxr-x. 2 mao maohome  4096 Oct 13 02:47 bin
drwxr-xr-x. 3 mao maohome  4096 Oct 13 06:42 conf
drwxrwxr-x. 2 mao maohome  4096 Oct 13 03:03 data
drwxr-xr-x. 2 mao maohome  4096 Sep 22 18:02 lib
-rw-r--r--. 1 mao maohome 57011 Sep 28  2015 LICENSE
drwxrwxr-x. 3 mao maohome  4096 Nov  6 16:22 logs
-rw-r--r--. 1 mao maohome  1444 Sep 28  2015 NOTICE
-rw-r--r--. 1 mao maohome  6741 Sep 28  2015 RELEASE-NOTES
-rw-r--r--. 1 mao maohome 16204 Sep 28  2015 RUNNING.txt
drwxrwxr-x. 2 mao maohome  4096 Sep 22 18:02 temp
drwxr-xr-x. 2 mao maohome  4096 Oct 13 06:23 webapps
drwxrwxr-x. 3 mao maohome  4096 Sep 22 18:35 work
[root@mysql-db01 tomcat]# 

         為什么只對以上目錄授權,原因在於如果開發人員需要啟動Tomcat時,需要寫日志到logs目錄中,需要有寫權限;bin文件中放着Tomcat的啟動,停止等相關的腳本,

tomcat有一個work目錄,里面存放了頁面的緩存,訪問的jsp都會編譯;temp目錄用戶存放tomcat在運行過程中產生的臨時文件。(清空不會對tomcat運行帶來影響)但是,千萬不能刪除該目錄,要不然就會帶來未知的錯誤,如登錄界面的驗證碼出不來等問題。。

      對於給開發人員授權,我們秉承着最小化的原則,如果不對Tomcat站點運行造成影響,盡量最小,安全最重要。。因為造成網站運行問題的一部分原因就是內部人員造成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM