CentOS 6でTomcat 7をユーザーとして実行したい。ユーザーTomcat:tomcat
を作成し、/var/lib/Apache-Tomcat*
の下で所有権を変更した。
それを行う方法に関するオンラインのドキュメントはたくさんありますが、それらは最新のものではないと思います。それらのほとんどは、あなたが以下のようにそれを行うことを示しています。問題は...ファイルシステムの権限が低いために、Tomcatの起動などのスクリプトがPIDに書き込めないため、この手法は危険です。ファイルシステムの書き込み権限を緩め始めたくありません。セキュリティを強化することが目標です。
これを行うためのより良い方法は何ですか? Tomcat用の「既定の」initスクリプトがないことに驚いています。複雑ではないことは知っています。しかし、なぜ車輪を再発明し続ける必要があるのでしょうか。
ありがとう
私はこれを何年も使っています。どこで手に入れたのか思い出せません。 /bin/su Tomcat
を追加しました。
# Startup script for the Jakarta Tomcat Java Servlets and JSP server
#
# chkconfig: - 85 15
# description: Jakarta Tomcat Java Servlets and JSP server
# processname: Tomcat
# pidfile: /var/run/Tomcat.pid
# config:
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# Set Tomcat environment.
export Java_HOME=/usr/lib/jvm/Java/
#export CLASSPATH=.:/usr/local/j2sdk/lib/tools.jar:/usr/local/j2re/lib/rt.jar
export CATALINA_HOME=/var/lib/Tomcat
#export CATALINA_OPTS="-server -Xms64m -Xmx512m -Dbuild.compiler.emacs=true"
#export PATH=/usr/local/j2sdk/bin:/usr/local/j2re/bin:$PATH
export CATALINA_PID=/var/run/Tomcat.pid
[ -f $CATALINA_HOME/bin/startup.sh ] || exit 0
[ -f $CATALINA_HOME/bin/shutdown.sh ] || exit 0
export PATH=$PATH:/usr/bin:/usr/local/bin
# See how we were called.
case "$1" in
start)
# Start daemon.
echo -n "Starting Tomcat: "
/bin/su Tomcat $CATALINA_HOME/bin/startup.sh
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/Tomcat
;;
stop)
# Stop daemons.
echo -n "Shutting down Tomcat: "
/bin/su Tomcat $CATALINA_HOME/bin/shutdown.sh
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/Tomcat
;;
restart)
$0 stop
sleep 1
$0 start
;;
condrestart)
[ -e /var/lock/subsys/Tomcat ] && $0 restart
;;
status)
status Tomcat
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0
他の1つのオプションは、ディレクトリ/ var/run/Tomcatを作成し、それをTomcat:tomcatに移動することです。次に、initスクリプトを次のように変更します
# pidfile: /var/run/Tomcat/tomcat.pid
export CATALINA_PID=/var/run/Tomcat/tomcat.pid
ほとんどの場合、私のマシンと同じように/var/run
ディレクトリの権限は次のとおりです。
drwxr-xr-x 24 root root 740 Mar 22 11:48 run
したがって、このフォルダはrootのみが書き込み可能です。スクリプトはサービスを開始する前にユーザーTomcat
に切り替えるため、これは機能しません。
スクリプトは、start-stop-daemon
のようなツールを使用する必要があります。このツールは、特定のUIDでサービスを開始するときに、PIDファイルをrootとしてTシャツにできます。
start-stop-daemon
を使用している初期化スクリプトの例として、この script を参照してください。