2016-11-02 2 views
0

私は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から私のファイルを書く。

+0

を参照してくださいは、スクリプト自体の実行権限を確認しましたか? – RealSkeptic

+0

それは私が思うに必要なすべての権限を持っています。私がbashのように起動すると、彼は仕事を完璧にやっています。 – Sulexa

+0

はい、それはそれを実行している同じユーザーではありませんか? Tomcatは別のユーザーの下で動作します。 'ls -l。/ test.sh'を実行し、あなたの質問に出力を加えてください。 – RealSkeptic

答えて

0

コンテナのファイルシステム上のファイルにアクセスするのは難しく、奨励されません(imo)。私の推測:あなたの問題は、ファイルシステム自体の権限とは関係ありませんが、Webコンテナ(ここではtomcat)のパーミッションを持っています。

Accessing linux local file system from java web application

または How to access external folder (Web Server)?

+0

実際、shスクリプトは私のwebappsフォルダにありますので、アクセスして起動できます。本当にTomcatからの起動時には許可されていないようですが、rootとしてbashから起動します – Sulexa

+0

を実行するには問題はありませんが、スクリプト内のtext.txtファイルにアクセスしています。あなたはディレクトリにも適切な権限を持っていますか(ファイルを作成する権限、つまりディレクトリの編集権限が必要です)、それがすでに存在する場合はファイルにありますか? –

+0

私がtomcatから実行すると「test.txtを作成できません:アクセスが拒否されました」と表示されます しかし、シェルからスクリプトを実行すると、アクセス権の問題は発生しません。 text.txtすべての必要な権限を持っている、私はちょうどchmodを777しようとしましたが、変更されたものは何も常に拒否されました。 – Sulexa

関連する問題