none
ローカルシステムアカウントでサーバーの共有フォルダのファイルを参照したい。 RRS feed

  • 質問

  • 現在、サービス使用してファイルをサーバーからクライアントにコピーしようとしています。

    環境
    WindowsのActiveDirectoryで運用しています。
    Server:Windows2003 R2 SP2   (フォルダーを共有で公開)
    Client:Windwos 7/WindowsXP SP3(サービスでファイルを取得したい)
    サービスは .Net VB2008 で作成。
    サービスのログオンユーザーはローカルシステムアカウントを使用。

    この場合、
    クライアント側のサービスからサーバー側の共有フォルダを見ると、サーバー上のフォルダが見えません。
    また、サービスのログオンユーザーをドメインのユーザ(参照権限有り)に切り替えるとフォルダが見えます。


    サーバ側の権限の設定で「ローカルシステムアカウント」に参照権限を与えられるのでしょう?
    また、
    そもそも、ローカルシステムアカウントを使用してサーバー上の共有フォルダを参照することは可能でしょうか?

    2011年1月25日 5:47

回答

  • 参照1)
    サービスおよびサービス アカウントのセキュリティ計画ガイド
    http://technet.microsoft.com/ja-jp/library/cc170958.aspx

    システム アカウント-ローカル システム アカウント
    >このアカウントはネットワーク上のホスト コンピュータのアカウントとして動作するので、
    >他のすべてのドメイン アカウントとまったく同様にネットワーク リソースにアクセスできます。
    >ネットワーク上では、このアカウントは DOMAIN\<コンピュータ名>$ と表示されます。


    ドメイン コントローラー上で動作するサービスがローカル システム アカウントで実行されていれば、ドメイン全体へのアクセス権を持つのでしょうが、
    今回のケースだと、1クライアント上で動作するサービスなので、稼働しているクライアント内しかアクセスできないはずです。
    このあたりについて、Symantec のサポートに分かりやすい説明があったので、URL を貼ってみます。

     エンタープライズサポート - Symantec Corp. - 定時 LiveUpdate や Symantec System Center から実行した LiveUpdate が失敗する
     http://www.symantec.com/business/support/index?page=content&id=TECH116790&locale=ja_JP

    この中の Solution で、「社内 LiveUpdate サーバーに LAN (共有ドライブ) を使用して接続している場合は」の部分が該当しそうに思います。

    対策としては、NullSession を許可するとかでしょうか。(セキュリティは低下しますが。)

     ドメインを越えたログに NULL セッションを設定する
     http://technet.microsoft.com/ja-jp/library/cc728059(WS.10).aspx

     ユーザー プロパティ データベースへの書き込み操作が発生します。
     http://support.microsoft.com/kb/174296/ja

    あるいは、WNet 系の API を使って共有フォルダーにアクセスするとか、大人しくサービスをドメイン ユーザー アカウントで起動するとかでしょうか。
    • 回答としてマーク ゆきもん 2011年1月26日 10:13
    2011年1月26日 6:45

すべての返信

  • ローカル システム アカウントはローカル PC の中で閉じたアカウントなので、そのままではネットワークにアクセスできないはずです。
    API を使って、プログラム的にログオンしないといけないと思います。

    参考までに:
     セキュリティについてよく寄せられる質問
     http://www.microsoft.com/japan/technet/sms/2003/library/techfaq/tfaq12.mspx

    Q. ローカル システム アカウントとは何ですか?
    A. ローカル システム アカウントとは、オペレーティング システム内で使用できるセキュリティ コンテキストのことです。管理資格情報を使用してログオンしサービスを開始することを目的として、オペレーティング システムによって作成されるアカウントです。これはローカル アカウントであるため、ネットワークにはアクセスできません。オペレーティング システムがアカウントを管理しますので、パスワードを保守する必要はありません。
    2011年1月25日 8:15
  • totojoさん

    ご回答ありがとうございます。

    僕は下記のような情報(分かりやすい2点だけ貼ってみました)を元に開発していました。
    ローカル システム アカウントでも、ネットワークリソースにアクセス出来るように理解していました。
    また、NASの共有フォルダ(アクセス制限無、WindowsServer2003以外)では参照できることが確認出来ました。
    WindowsServer2003の設定(アクセス権/共有)で出来ない物かと調べています。

    参照1)
    サービスおよびサービス アカウントのセキュリティ計画ガイド
    http://technet.microsoft.com/ja-jp/library/cc170958.aspx

    システム アカウント-ローカル システム アカウント
    >このアカウントはネットワーク上のホスト コンピュータのアカウントとして動作するので、
    >他のすべてのドメイン アカウントとまったく同様にネットワーク リソースにアクセスできます。
    >ネットワーク上では、このアカウントは DOMAIN\<コンピュータ名>$ と表示されます。


    参照2)(マイクロソフトの上ではないですが)
    サービスで使用される「System」「Local Service」「Network Service」アカウントとは?
    http://www.atmarkit.co.jp/fwin2k/win2ktips/1159svcacnt/svcacnt.html

    ■System(システムまたはローカル システム)アカウント
    >ネットワーク・リソース(ネットワークを経由して利用するリソース)にも、
    >ローカルのコンピュータ・アカウントの資格情報でアクセスできることから、
    >Active Directoryのディレクトリ・サービスなどネットワーク系のサービスにも多用されている。
    >ドメイン・コントローラ上でSystemによって起動されたサービスは、そのドメイン全体にアクセスできる。


    何か情報があれば、宜しくお願いします。

    2011年1月26日 2:09
  • 参照1)
    サービスおよびサービス アカウントのセキュリティ計画ガイド
    http://technet.microsoft.com/ja-jp/library/cc170958.aspx

    システム アカウント-ローカル システム アカウント
    >このアカウントはネットワーク上のホスト コンピュータのアカウントとして動作するので、
    >他のすべてのドメイン アカウントとまったく同様にネットワーク リソースにアクセスできます。
    >ネットワーク上では、このアカウントは DOMAIN\<コンピュータ名>$ と表示されます。


    ドメイン コントローラー上で動作するサービスがローカル システム アカウントで実行されていれば、ドメイン全体へのアクセス権を持つのでしょうが、
    今回のケースだと、1クライアント上で動作するサービスなので、稼働しているクライアント内しかアクセスできないはずです。
    このあたりについて、Symantec のサポートに分かりやすい説明があったので、URL を貼ってみます。

     エンタープライズサポート - Symantec Corp. - 定時 LiveUpdate や Symantec System Center から実行した LiveUpdate が失敗する
     http://www.symantec.com/business/support/index?page=content&id=TECH116790&locale=ja_JP

    この中の Solution で、「社内 LiveUpdate サーバーに LAN (共有ドライブ) を使用して接続している場合は」の部分が該当しそうに思います。

    対策としては、NullSession を許可するとかでしょうか。(セキュリティは低下しますが。)

     ドメインを越えたログに NULL セッションを設定する
     http://technet.microsoft.com/ja-jp/library/cc728059(WS.10).aspx

     ユーザー プロパティ データベースへの書き込み操作が発生します。
     http://support.microsoft.com/kb/174296/ja

    あるいは、WNet 系の API を使って共有フォルダーにアクセスするとか、大人しくサービスをドメイン ユーザー アカウントで起動するとかでしょうか。
    • 回答としてマーク ゆきもん 2011年1月26日 10:13
    2011年1月26日 6:45
  • totojoさん

    ありがとうございます。

    >ドメイン コントローラー上で動作するサービスがローカル システム アカウントで実行されていれば

    なるほど、この前提が理解できていませんでした。

     

    >対策としては、NullSession を許可するとかでしょうか。(セキュリティは低下しますが。)

    この方法の動作確認中ですが、うまく動いているようです。
    助かりました。


    >WNet 系の API を使って共有フォルダーにアクセスするとか

    非常に気になりますが、今回は時間の関係で未調査です。


    >大人しくサービスをドメイン ユーザー アカウントで起動する

    やはり、これが一番無難のようですね。

    環境や運用を考えて、もう少し検討します。


    ありがとうございました。

    2011年1月26日 10:12
  • こんにちは、フォーラムオペレーターの三沢健二です。

    興味がありましたので少しフォローさせていただきますね。

    >このアカウントはネットワーク上のホスト コンピュータのアカウントとして動作するので、
    >他のすべてのドメイン アカウントとまったく同様にネットワーク リソースにアクセスできます。
    >ネットワーク上では、このアカウントは DOMAIN\<コンピュータ名>$ と表示されます。

    AD 環境であれば、共有フォルダのアクセス権に、該当する AD 上のコンピューターアカウントに許可を与えればアクセス出来ると思われます。

    ただ、kerberos 認証が正しく行われる事が条件(NTLM 認証ではダメ) だったと記憶していますので、何らかの要因で kerberos 認証に失敗する場合は、totojo さんが案内されていたように、別の方法を検討していただく必要があると思われます。

    なお、kerberos 認証に失敗する原因は色々ありますので、その際にはログを採取して調査する必要がありますが、例えば "\\ホスト名" ではなく "\\IP アドレス" で共有フォルダにアクセスすると、通常では必ず kerberos 認証に失敗するようになっています。


    それでは、こちらの情報が少しでもお役にたてれば幸いです。

    ______________________________________
    マイクロソフト株式会社 フォーラム オペレーター 三沢健二

    2011年1月27日 6:22
    モデレータ