您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Linux下Tomcat怎樣進行以非root用戶執行特權操作,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
下面使用的是一個Apache的開源項目:Commons Daemon 中的一個名為JSVC的工具。
介紹
官網這樣介紹JSVC
Jsvc是一系列應用和類庫的集合,用于Java應用更輕松的運行在UNIX上。Jsvc允許應用像root一樣執行一些特權操作(例如綁定一個小于1024的端口),然后切換回一個非特權用戶。對于Win32的可以使用Cygwin模擬器,然后Windows用戶更推薦使用Procrun把應用運行成一個Windows 服務。
這樣,有了Jsvc之后,我們為了使用80端口就不再需要使用root身份運行Tomcat了。接下來看怎樣使用Jsvc。
在CATALINA_HOME/bin目錄內,包含這樣一個文件:commons-daemon-native.tar.gz,通過編譯這個文件,我們可以得到Jsvc。編譯命令如下:
cd $CATALINA_HOME/bin
tar xvfz commons-daemon-native.tar.gz
cd commons-daemon-1.0.x-native-src/unix
./configure
make
cp jsvc ../..
cd ../..
然后使用Jsvc執行如下命令時,Tomcat會以daemon的形式運行
./bin/jsvc \
-classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar \
-outfile $CATALINA_BASE/logs/catalina.out \
-errfile $CATALINA_BASE/logs/catalina.err \
-Dcatalina.home=$CATALINA_HOME \
-Dcatalina.base=$CATALINA_BASE \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
org.apache.catalina.startup.Bootstrap
當然Jsvc還有很多有用的參數可以使用,比如前面提到的切換一個非特權用戶,可以通過--user來指定,如果要使JVM進程以Server模式運行,可以指定--server參數。更多的參數可以通過--help來查看,會返回全部參數列表。
此處多說一句,如果在使用--user指定為root用戶啟動Tomcat,需要把org.apache.catalina.security.SecurityListener檢查禁用,否則會導致啟動不成功。我們前面提到的非root用戶可以使用特權端口就是通過這個選項來實現的。雖然指定普通用戶,一樣可以使用特權端口。
再來接上開頭的話題,在Linux系統中,我們要把Tomcat做為一個服務運行,在系統啟動的時候可以自動啟動,我們一般都會在/etc/init.d目錄中創建一個啟動腳本。如果在創建服務時使用Jsvc,腳本的寫法Tomcat已經為我們考慮到了。在CATALINA_HOME/bin/目錄下,有一個daemon.sh的腳本,可以做為模板來用。
以daemon的形式運行時,需要注意的一個問題是,commons-daemon.jar必須位于Tomcat的classpath內,因為在bootstrap.jar的MANIFEST.MF中有對于該jar的依賴聲明:
Class-Path: commons-daemon.jar
如果在運行時遇到ClassNotFoundException之類的異常,把該jar包添加到類路徑即可。即jsvc的-cp參數可以指定。
看完上述內容,你們對Linux下Tomcat怎樣進行以非root用戶執行特權操作有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。