# 前言:為什麼要使用非root用戶運行tomcat root用戶啟動tomcat有一個嚴重的問題,那就是tomcat具有root許可權。 這意味著你的任何一個頁面腳本(html/js)都具有root許可權,所以可以輕易地用頁面腳本 修改整個硬碟里的文件! 所以最好不要使用root啟動tomcat。 # ...
# 前言:為什麼要使用非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