0
Solaris上の tomcat Webアプリで Solaris内にDirectory作成&Directory chown, chmodは可能ですか?権限は問題ないですか?
Solaris上の tomcat に Java Webアプリを配置。
ブラウザから任意のボタン押下した際、
Solaris ローカルの任意のディレクトリ(/export/home 配下)箇所に
1:ディレクトリを作りたい。
2:ただし、/export/home は root 権限でなければディレクトリを作成できない。
→root以外は、書き込み権限がない
3:ディレクトリ作成後、そのディレクトリのオーナーを tomcat, root
ユーザーとは別のユーザー(root でもなく、tomcat でもないまったく別ユーザー)
にしたい。
ということを実行したいと考えています。
↓
実現方法として、
Web Java アプリ(struts の action )
内部で Runtime#exec() にて mkdir や chmod を実行するのではないかと考えています。
そのとき、tomcat の Java アプリで Runtime#exec するコマンドの実行権限が誰なのかが不明です。
root 権限でなければディレクトリに対して
Runtime#exec の mkdir で失敗すると考えています。
実は、現在手元に Solaris は無く、
試験することはできません。
ただし、Solaris サーバー管理者から以下の情報を教えてもらいました。
Solaris サーバー管理者は 参考書を見ながら以下の設定をした模様です。
下に記載した情報から上記1、2、3が論理的に可能かどうか、
教えていただきたいと存じます。
==================================================================
1:init.d の tomcat自動起動シェル
Solaris10上に tomcat6 が存在。tomcat6 は自動起動。
init.d 配下のスタートシェルは
-rwxr--r-- root tomcatグループ 起動シェル
となっています。
つまり、root のみが実行可能です。
-----------------------
2:Solaris 上の Unix ユーザー
root のほかに tomcat ユーザーを作っています。
tomcat ユーザーの所属するグループは
tomcat6 の実行ファイル→ jsvc を起動できる権限があります。
-----------------------
3:起動シェル内容
起動シェル設定は
JAVA_HOME=/usr/java
CATALINA_HOME=/var/opsrc/tomcat6
TOMCAT_USER=tomcat
TMP_DIR=/tmp
CATALINA_OPTS=
CLASSPATH=$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/bin/commons-daemon.jar:$CATALINA_HOME/bin/bootstrap.jar
PIDFILE=/var/opsrc/run/tomcat6.pid
LOCKFILE=/var/opsrc/run/tomcat6.lock
JSVC=$CATALINA_HOME/bin/tomcat6
LOGFILE=/var/log/apache2/logs/tomcat6.log
start(){
#
# Start Tomcat
#
echo -n "Starting tomcat6: "
$JSVC \
-pidfile $PIDFILE \
-user $TOMCAT_USER \
-home $JAVA_HOME \
-Dcatalina.home=$CATALINA_HOME \
-Djava.io.tmpdir=$TMP_DIR \
-outfile $LOGFILE \
-errfile '&1' \
$CATALINA_OPTS \
-cp $CLASSPATH \
org.apache.catalina.startup.Bootstrap
#
# To get a verbose JVM
#-verbose \
# To get a debug of jsvc.
#-debug \
ret=$?
if [ $ret -eq 0 ]; then
echo success
touch $LOCKFILE
else
echo failure
fi
echo
}
となっています。
-------------
4:Solaris 起動後の ps -aef では tomcatプロセスは二つ存在して、
ひとつは root ユーザーが実行。
もうひとつは tomcat ユーザーが実行している。
(なぜ2つあるのか分からない)
ps -aef | grep tomcat
↓
root 502 1 0 :時間 /var/opsrc/tomcat6 -pidfile /var/opsrc/run/tomcat6.pid -user tomcat
tomcat 503 502 0 :時間 /var/opsrc/tomcat6 -pidfile /var/opsrc/run/tomcat6.pid -user tomcat
-------------
5:上記 tomcat6.pid ファイルを ls すると、
所有者 root のみ 読み書き権限が付与されたファイルが生成されている。
=======================================