WindowsプロセスとしてJavaプロセスをNTFS権限で実行しているときに問題があります。 (http://community.jboss.org/wiki/RunJBossAsAServiceOnWindows)。なぜ「ローカルシステム」アカウントにNTFSファイルシステム(WindowsサービスとしてJavaを実行している)へのアクセス権がないのですか?
サービスは正常にインストールされますが、ファイルのアクセス権に起因する問題があります。
- Windowsサービス「ログイン」を自分のアカウント(ドメイン/ログインなど)に変更すると、サービスは正常に動作します。
- ファイルシステムのパーミッションを755から777に変更すると、サービスは正常に動作します。
例
08:58:02,250 ERROR [MainDeployer] Could not make local copy for file:/J:/projects/devtools/pe64-jboss-4.2.2.GA/server/solr/conf/jboss-service.xml
java.io.IOException: Access is denied
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
"ヨノーComprende" をログに記録します。私は "ローカルシステム"アカウントが "root"だと思っていました。 ( "Local System"がデフォルトのアカウントです)
"chmod -R 777 <>"はオプションではありません。 (セキュリティホール)
だから、要約する:
- "ローカルシステム" や窓NTFSファイルアクセス許可との契約は何ですか?
- 「マイグループ」に「ローカルシステム」を追加できますか
- ローカルビルドプロセスに問題がありますか? (例えば、Windows版のUMaskは悪いですか?)
- WindowsサービスとしてJavaを実行している他の問題はありますか?
- 15年以上のWindows NTベースのOSの後、なぜサービスはまだ苦しいですか?これは、Windows(Vistaとウィンドウ7)以降であることが判明し
更新/ソリューション
は、MSFTは誰の「TEMP」のファイルを取得するためにサービスを許さセキュリティホールを閉じました。
"ローカルシステム"アカウントは、共通/事前作成された "temp"ディレクトリにアクセスできません。
Javaの世界でのソリューション、:
- 独自の一時ディレクトリを作成します。
- jvm引数として "-Djava.io.tmpdir =/path/to/my/temp/dir"を渡します。
おかげ
ます
"ファイルシステムのパーミッションを755から777に変更すると、サービスは正常に動作します。" cygwinを使用していると仮定する必要がありますか? Windows自体には 'chmod'はありません。代わりに['cacls'](http://technet.microsoft.com/en-us/library/bb490872.aspx)があります。 – Powerlord
はい。私はcygwinを使用します。私たちのビルドのためのAntと私たちのscmのためのgit。 Git、fwiw、ファイルアクセス権を追跡します。 – user331465
これは、実際には、http://superuser.comやhttp://serverfault.com、BTWに適した質問のように聞こえます。彼らはおそらく、NTFSのアクセス許可やCygwinについてもっと知っているだろう。 – cHao