- PR -

Windows Server 2003にてログファイルがネットワークドライブに出力できない

投稿者投稿内容
catmoney
会議室デビュー日: 2006/08/16
投稿数: 6
お住まい・勤務地: 関西
投稿日時: 2006-08-16 12:57
  Windows Server 2003にてWindowsサービスに登録しているTomcat上のJava
  アプリケーションから出力しているログファイルがネットワークドライブ
  に出力できない問題が発生しています。

  2006-08-15 15:26:38,595 ERROR [Ap04Action] EXCEPTION :
  java.io.FileNotFoundException: X:\\Log\\ACCESS_20060815.log
  (指定されたパスが見つかりません。)

  Windows Server 2000では、Windowsサービスのログオン権限をAdministrator
  にすることにより問題なく出力できています。Windows Server 2003も同様
  の環境を作成しましたが、上記のエラーが出ています。

  そこでWindows Server 2003の仕様(デフォルトの設定?)では、Windowsサ
  ービスのプロセスからはネットワークドライブが見えないと考えているので
  すが、合っていますでしょうか?またこれを回避する方法があれば、ご教授
  をお願いいたします。

【環境】
Windows Server 2003 R2 SP1
Apache 1.3.33
Tomcat 4.1.31
Java j2sdk-1_4_2_09

[ メッセージ編集済み 編集者: 未記入 編集日時 2006-08-16 13:15 ]
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2006-08-16 13:18
Tomcatは良く分かりませんが、Logディレクトリ自体は既にあるのでしょうか?
標準ではファイル出力先を指定してもディレクトリまで作成してくれるわけではないので。
catmoney
会議室デビュー日: 2006/08/16
投稿数: 6
お住まい・勤務地: 関西
投稿日時: 2006-08-16 14:14
想馬さん ご回答をありがとうございます。

>Tomcatは良く分かりませんが、Logディレクトリ自体は既にあるのでしょうか?
>標準ではファイル出力先を指定してもディレクトリまで作成してくれるわけではないので。

はい。Javaアプリケーション側でディレクトリがない場合は、作成するように実装しています。ネットワークドライブでなければ、Windows Server 2003でも問題なく出力できています。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-08-16 15:37
Java Solution会議室のほうが適切かも・・・

引用:

未記入さんの書き込み (2006-08-16 12:57) より:

  2006-08-15 15:26:38,595 ERROR [Ap04Action] EXCEPTION :
  java.io.FileNotFoundException: X:\Log\ACCESS_20060815.log
  (指定されたパスが見つかりません。)

  Windows Server 2000では、Windowsサービスのログオン権限をAdministrator
  にすることにより問題なく出力できています。Windows Server 2003も同様
  の環境を作成しましたが、上記のエラーが出ています。


Tomcatを実行するユーザの問題かな。。。とは予想できますが、
誰がログインするネットワークドライブに X: を指定していますか?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-08-16 16:24
引用:

そこでWindows Server 2003の仕様(デフォルトの設定?)では、Windowsサ
ービスのプロセスからはネットワークドライブが見えないと考えているので
すが、合っていますでしょうか?



あっています。
理由はいくつかあります。

1つ目は、「ネットワークドライブ」はログオンユーザ毎の設定であるためです。

例えば、あなたのログオンアカウントで設定した「ネットワークドライブ」は他のアカウントには無効です。

件のサービスをどんなアカウント権限で実行しているのか知りませんが、「ネットワークドライブ」の設定を行ったのとは異なるアカウント権限で実行しているんでしょう。

また、SDK レベルでサービスを作成した場合、適切なログオンアカウントでサービスを実行していたとしても、明示的にユーザプロファイルを読み込まないと、「ネットワークドライブ」を含めた各種ユーザ設定を参照することが出来ません。

2目は、サービスの実行アカウントに与えられた権限によるものです。

件のサービスをどんなアカウント権限で実行しているのか知りませんが、ローカルシステムアカウントにはネットワーク資源に対するアクセスが許可されていないため、仮にローカルシステムアカウントで「ネットワークドライブ」の設定を行ったとしても、それを利用することは出来ません。

引用:

またこれを回避する方法があれば、ご教授をお願いいたします。



方法は何パターンかありますが、私が最も好ましいと考えるのは以下の方法です。

・最終的にログルを書き出すプロセスを実行するための専用アカウントを作成する。
・↑のアカウントに、ログ書き出しを含めて必要最小限度の権限を与える。
・ログファイルの書き出し先の指定には UNC 表記を用いる。

以上です。
catmoney
会議室デビュー日: 2006/08/16
投稿数: 6
お住まい・勤務地: 関西
投稿日時: 2006-08-17 18:55
かるあさん ご回答をありがとうございます。

引用:

かるあさんの書き込み (2006-08-16 15:37) より:
Java Solution会議室のほうが適切かも・・・



ご指摘どおりです。初めての投稿で、間違ってしまいました。

引用:

Tomcatを実行するユーザの問題かな。。。とは予想できますが、
誰がログインするネットワークドライブに X: を指定していますか?



ネットワークドライブを設定したユーザは、Administratorです。
Windowsサービス(Tomcat)のログオン権限をAdministratorには、
しているのですが、、、
ただWindows Server 2003を触るのが今回が初めてなので、なにか
足りない点があるかもしれません。

以上です。
catmoney
会議室デビュー日: 2006/08/16
投稿数: 6
お住まい・勤務地: 関西
投稿日時: 2006-08-17 19:23
渋木宏明(ひどり)さん ご返信をありがとうございます。

引用:

方法は何パターンかありますが、私が最も好ましいと考えるのは以下の方法です。

・最終的にログルを書き出すプロセスを実行するための専用アカウントを作成する。
・↑のアカウントに、ログ書き出しを含めて必要最小限度の権限を与える。
・ログファイルの書き出し先の指定には UNC 表記を用いる。

以上です。



ご丁寧なコメントとアドバイスありがとうございます。上記の方法でためしてみます。

以上です。
catmoney
会議室デビュー日: 2006/08/16
投稿数: 6
お住まい・勤務地: 関西
投稿日時: 2006-08-21 14:20
引用:

方法は何パターンかありますが、私が最も好ましいと考えるのは以下の方法です。

・最終的にログルを書き出すプロセスを実行するための専用アカウントを作成する。
・↑のアカウントに、ログ書き出しを含めて必要最小限度の権限を与える。
・ログファイルの書き出し先の指定には UNC 表記を用いる。

以上です。



上記の方法でログ書き出しすることができました。誠にありがとうございます。

UNC 表記では、アクセス可能で、ネットワークドライブを割り当てたドライ
ブレターだとアクセスできない(パスが見つからない)のは、なぜだかわか
らないです。何か権限が足りないのでしょうか?もしご存知の方がいらっしゃ
いましたら、ご教授をお願いいたします。

以上です。

スキルアップ/キャリアアップ(JOB@IT)