0

Ubuntuでglassfishサーバーを使用してWebサービスを実行しています。問題は、共有リソースの外部にあるディレクトリにアクセスする必要があることです。現在、「許可が拒否されました」というエラーが発生しています。server.policy にもパーミッションを設定しました。

grant codeBase "/home/glassfish/glassfish/test/-" {
    permission java.security.AllPermission;
};

しかし、うまくいかないようです。してみ<property name="alternatedocroot_1" value="from=*.* dir=/home/glassfish/glassfish/test"/>ましたが、読み取り権限しか与えていないようです。書き込み許可も必要です。だから私の質問は、どのように書き込み許可を設定できますか?

ありがとう。

4

1 に答える 1

0

これは JavaSecurity の問題ではないので、その点に関して何も調整する必要はありません。

FWIW Windows のさまざまなフレーバーで GF にデプロイされた Web アプリは、ファイル API を使用して「アプリケーション」ディレクトリの外部にあるディレクトリに書き込みます。alternatedocroot は、DefaultServlet を使用して静的コンテンツを提供する GF に関連し、アプリケーション展開ディレクトリの外部に書き込むことには関連しません。

Windows では、サービスとして実行する場合、'Run As' ユーザーがターゲット ディレクトリに書き込むための適切な権限を持っていることに注意する必要があります。Unix では、実行する rc (init.d) スクリプトによって設定されたユーザーを確認する必要があります。 asadmin.sh には、ターゲット ディレクトリへの読み取り/書き込み権限があります。

GF が実行されている Java プロセスのユーザーが、書き込み先のディレクトリに対して rwx 権限を持っていることを再確認します。ユーザーがターゲット フォルダーに書き込みできることを確認します。これをテストするには、ユーザーに対して su し、「touch」コマンドを次のように使用します。touch /tmp/test で書き込み権限を確認します。同様に、「ls -l /tmp/test」を実行して読み取り権限を確認し、読み取れることを確認します。

'ps -ef | grep java' は、GF Java プロセスを実行しているユーザーを確認することを示しています。さらに、コードでテスト ファイルへのフル パスを指定してみてください。File test = new File("/tmp/test");

rc スクリプトから GF を実行していますか、それともシェル プロンプトから asadmin.sh を使用して開始していますか? rc スクリプトを実行している場合は、rc スクリプトが期待どおりのユーザーとして実際に実行されていることを確認してください。

于 2012-04-20T01:25:16.183 に答える