私はTomcat7を使用しています。私はtomcatからshスクリプトを起動しようとしました。私のshスクリプトは新しいファイルを作成し、物事を書く必要があります。もし私が/ test.shのようなスクリプトを起動すると、それはうまくいきますが、起動するためにTomcatを使用すると、スクリプトの実行中に拒否された許可のエラーになります。書き込む許可がありません。 これは私のJavaコードです:Tomcat shスクリプトの許可
String[] fixCmd = new String[] { path };
Process start = Runtime.getRuntime().exec(fixCmd);
// monitor standard error to find out what's wrong
BufferedReader r = new BufferedReader(new InputStreamReader(start.getErrorStream()));
String line = null;
while ((line = r.readLine()) != null) {
System.out.println(line);
}
と私のシェルスクリプト:
echo test >> test.txt
は私がProcessBuilderをを使用しようとしたが、それはあまりにも働いていませんでした。
私が見つけたすべての解決策でフォルダのアクセス許可を変更しようとしましたが、何も機能しませんでした。 exec Tomcatはrootとしてスクリプトを起動していたので、すべての権限が必要です。私はフォルダにtomcat7ユーザーのすべての許可を抱いていたが、何も変わっていない。私はいくつかのJavaスクリプトを作成し、サーバー上のファイルを書いているので、私はすでにTomcatに物事を書くことを許可する権利を変更することができたので、私は本当にスクリプトの問題がわからない。
アイデア?
編集1: ls -l ./test.sh
の出力はそれをやっ:
-rwxr-xr-x 1 tomcat7 tomcat7 165 nov. 2 16:12 ./test.sh
を私は、rootとしてログインしていると私は赤tomcatには、あまりにもルートとして考えられています。
編集2問題が解決しました: 専門家が私の問題はセキュリティ上の問題であると説明しました。なぜなら、TomcatはWebサーバーなので、shスクリプトの書き込み許可を許可しないようにしているからです。だから私は問題の私のアプローチを変更し、私はJavaでshのスクリプトの出力を読んで、javeから私のファイルを書く。
を参照してくださいは、スクリプト自体の実行権限を確認しましたか? – RealSkeptic
それは私が思うに必要なすべての権限を持っています。私がbashのように起動すると、彼は仕事を完璧にやっています。 – Sulexa
はい、それはそれを実行している同じユーザーではありませんか? Tomcatは別のユーザーの下で動作します。 'ls -l。/ test.sh'を実行し、あなたの質問に出力を加えてください。 – RealSkeptic